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.

Friday, March 5, 2010

@Foursquare And Why It Should Succeed

I join a few sites here and there and check them out just to taste the diverse flavors the web has to offer.  One of my new favorites is @foursquare.  Combine all the 'dwindling' geotagging sites that are dull and uneventful and add a reward system and you have Foursquare.  Include a few goal-driven perks and make it super easy to access via my Nexus One and I am all in!

Foursquare isn't a 'new' social playground, matter of fact it's been around since March 2009.  It's a 'rapidly growing*' free service that allows location-based tracking of your destinations through-out the day.  You may ask why.  You possibly think that this is just another big brother site.  It's very close, but it also has the many privacy options you would require to fly anonymous and still enjoy the "game".  Yes, I used the term "game".  Don't be surprised because that is exactly what this is.  There is a score and other amenities that you can flaunt as you progressively move around your city and show off your achievements.

Let me explain further...

I am not a big fan of geotagging my twitter updates with locations and neither do I care to float around on Latitude or Google Buzz like a balloon head with no body.  I set them up, looked around then disabled them.  I also had an interest in Loopt.  Loopt is a popular geotagging software based around SMS and friend proximity.  It also grew a bit tiresome.  No matter what service you choose to show people you are at the mall, you are just at the mall.  Your presence fades as the tweets and status updates flood over your modest comment and no one ever remembers you were there.  Here is where Foursquare comes in.

Imagine for a second you can leave you mark at your location.  In the past, you would have carved "LLS <3 WKS 2010" into the table with your dinner knife.  Future visitors gawk at how you spent so much time there when they see this archaic display of territory.  You are a part of that place.  You are linked to it's history.  OK, now imagine Foursquare as the table and your mobile device as the dinner knife.

Foursquare allows you to leave your mark via the web and even leave a comment or suggest a "To-Do" at this location.  The most interesting feature is the mayorship you can acquire.  A mayorship is the equivalent of being a local at one location.  To gain this status at any one location you need to have checked in more than anyone else.  When other's visit this location they can see that you are mayor and even connect with you.  It is quite possible the mayor has left a little nugget of knowledge that you can find out about a new place.  The mayor has no responsibilities as a real mayor.  Its purely social and says I have been here more than you and that makes me just a little bit cooler!  Well, maybe not....

Whether you are mayor or not, you still have other rewards to seek.  The other aspect of this location tagging adventure is the badges.  Even as I type, I know the excitement that takes over after receiving one of these coveted markers and it makes me smile.  I want them all.  There are some that seem impossible and take time like checking in at 50 different venues.  It's tough but fun.

With all that said the only thing that is required of you is to 'check-in'.  You will find areas where your local hamburger spot hasn't been added as a venue.  It's OK, just take a moment and add it.  Every mobile app I have seen allows for you to add venues on the fly.  In some cases, it will automatically find the address and you just give the name.  Besides, after you add a 'new' venue and check-in, you only need one more check-in at that location before you can claim mayor!  Yes!  If you obtain mayor of 10 locations at once, you get the Super Mayor badge.

What about safety?  The safety concerns of alerting your public status to others that you are not home is not a good idea whether it be from Foursquare or any other site.  Upon creating an account, please visit the privacy section and define the level of notification you want the world to see via Twitter or Facebook and even Foursquare.  It is ready to link to all your social sites and unleash gobs of info about your whereabouts.  Be careful!  Be SMART!

With all the geotagging ideas out there,  there seems to be something appealing about this to me.  Loopt, Gowalla, Google Buzz and Google Latitude are informative but I don't get much incentive to continually interact.  Every morning, I wake up, grab my phone and check-in for breakfast.  Check-in when I get to work.  Check-in at lunch.  Check-in when I come back to work from lunch. Then, I finally check-in at home. It seems a bit much and I agree it seems exhausting but it is quite the opposite.  One click....and I am checked in. The apps, which are available for any 'new' phone, auto-find venues close to you so you don't have to search.  I can start to see where other sites just missed the boat on reward driven experiences.

So, next time your out-and-about, think of all the places you are passing that presently exist on Foursquare.  Your city is already filling with a collection of 'local' mayors all supporting the city in a mini-marketing campaign.  Users 'swarming' concerts at arenas or speaking conventions.  Knowledgeable people leaving advice, or 'virtual carvings', to share with newcomers at a favorite restaurant.  I believe this hierarchy of active users can push other new users to 'want' these virtual status symbols.  This user competition may be the advantage that could bring Foursquare closer to center stage.  And yes, I will be there; as mayor of your favorite place!