Tuesday, March 9, 2010

One Man Band: Memoirs Of a Lone Agile Developer

I have heard it said it many areas that our projects are a product of community.  Projects begin with one person and end with another.  I have not had this pleasure.  On the brink of completing a transition to work with my first team I thought it fitting to profile my professional career up to this point.

I am not a pioneer, nor do I seek recognition for my work.  I simply want to take you on a journey from my inception as a professional developer to recognizing that the pattern of my habits had already broken ground and is well documented as an Agile methodology.  My code survives through many states, evolving over time from collections and the evolution of my skills depended on only two variables; time and output.  Here is my story on how I maximized both to wrangle thousands of lines of code and reach my goals.

Break.

In my collective mind, coding is simple.  I learn the rules and the understand my limitations and I can do anything within these rules.  This is not much different from life.  I am sure somewhere along the line, I made it my business to know the rules.  I learned that within rules, I can exist to my fullest potential.  The old adage, "You never know if you never ask" has been a mantra, of sorts, I live by.  Code is no different.  Understanding the limitations of your language and the existing operating system can create the dialog needed to build a successful application.

I had experience that most colleagues would think laughable when I began working at my first professional job, The Game Headwear.  My title was Website Support Technician.  I was a novice at best and my responsibilities were slim.  I made excitable HTML pages with my eyes on the trending areas of client side scripting and some Flash.  I didn't have to see much further than my own desktop to discover I enjoyed creating.  I snapped scripts together like the Lego's I built as a child.  There was an energy I captured writing scripts but nothing could prepare me for my first year at The Game.  I walked in and hit the ground running.  I was determined that no language was better than the other and set out on a journey that would mold me into the person I am today.

I spent a lot of time reading documentation.  Immediately, I was overwhelmed and it hurt.  My first "real" project was to redesign the intranet.  I think about it now as such a menial task but at the time it was my first chance to prove myself as a programmer.  I was done in just a few hours.  Considering there was not much to work with, I constructed a few static pages together and split the time with a lunch break and by the end I had made something.  It wasn't glorious and it wasn't something to share.  It was informative, and by any means, my goal was complete.

After a few months of hashing out redesigns for our flagship site, I began to notice there was a much bigger picture going on behind the scenes.  It wasn't familiar at the time but my new employer was doling out lots of money to a 3rd party development company in which to programming and create a order management application linked to our site.  At the time, I had no idea what ColdFusion looked like and similarly knew only the academics behind server-side technology.  After all, I had a degree in Computer Science centered around software development and I buffed my ego by knowing a little about a lot in tech-wise terminology.  It seemed that the demand for rapid changes and workflow intervention was about to open a new window for me.

There was a moment.  A brief instant where my manager mentioned we were hiring a new guy.  This guy was sold to me as a mentor type person and I was thrilled with the chance to jump start my professional career by leaning on the new-hire for his expertise.  I was surely going to learn from him as he began developing and managing an existing, 3rd party created, OEM.

The day finally came when he was going to show up for his first day.  I was attentive and aware.  It felt like I was going to get a glimpse into the teacher section of the study guide and get all the answers.  I was ready.

The day passes and nothing.  No one shows up.  The nest day comes and goes and still nothing.  Apparently, something was wrong.  Well, the short story is the new guys current employer caught wind and offered him something he couldn't refuse.  This meant no new guy for us.  It was still just me and my manager with a pile of work.  And that's when it happened...

I remember very distinctly the day when my manager brought me into his office and discussed the future of my professional career.  He simply asked me, "Can you do this?"  I looked at the plan and without any pause I said, "Yes."  At this point, the new guys initiative to create a position had turned into an opportunity to challenge myself with new technology and development.  I will admit, I was sweating when I walked out of his office and my wide eyed expression was only the beginning as I had never used ColdFusion before but I was about to get a crash course from myself.

The next 3 months were the hardest times I ever remember in my life.  I worked 10-12 hours a day to push for an inconceivable deadline on a project where I had no idea what I was doing.  It was tough and although I didn't see it then, it was the defining part of my work ethic and professional integrity.  It changed me.  I was not the same person I was before the moment my manager entrusted the responsibility of this project to me.  There were times early on where I wanted to go to my manager and say, "I can't do this.  I am just not there yet."  I spent days just trying to figure out code snippet I would consider simple today.  It was a revealing time.  All the while, I was doing this alone.  I was exactly alone, for instance.  I had friends who were programmers who provided support; both guidance and moral support.  I appreciated the help but there was no one who could look at my screen and walk me through.

Needless to say I stuck to my project and succeeded.  We profiled the ColdFusion OEM at the Sales Meeting three months later and I never looked back.  The high output and positive feedback began a new relationship with my manager where I had become a fledgling developer who knew no bounds and now had the gusto to tackle anything.

I was a lone, rogue developer setting up shop with my own way of doing things.  Or so I thought.

3 years later I was sitting on top of several successful projects and my primary responsibility had moved from Website Support Technician to a fully fledged Software Enginner.  I had literally wrapped my resume with all the leading programming skills from .NET to Actionscript to JSP to PHP to just about anything I could get my hands on.  My past projects had proven to my boss that I was capable of choosing the correct tool for the job and I used that freedom liberally.

My methodology for getting things done was dirty.  I gathered specifications for projects from meetings, phone calls and emails and this became the normal 1st step.  I was always a phone call away if the software needed to adapt to suit a Sales Reps needs or if management needed to tweak a report.  This kept me quite busy and it wasn't until I began my Master's degree that I began reading on a higher level of understanding of who and what I had become.

Apparently, my rapid engagement of project handling and code adaptation and low documentation output was already a mainstream methodology.  I had a similar feeling before.  I remember walking into a psychology class during my undergrad and finding out that my perspective and awareness to behavior that I regarded as my own way to decipher feelings and relationships were actual terms in a book.  It is both comforting and invigorating to find that something you had become aware of was so well documented and it only pushed me to know more.  I began classifying myself a an agile developer and sought after others for information and knowledge.

It's a milestone moment for my career to have the no-show new guy spin off a development career that has molded me into a strong software developer.  I often mention it to others as a 'what if'.  For example, what if the new guy came in and I was never asked, "Can you do this?"  I don't know where I would be but I have no doubt I would be good at it.  Maybe I would have just taken a longer road.

0 comments Click On COMMENTS To Post: