Flash-backing multiple years to my days at Multiplitaxion Inc, I am reminded of my work with a senior technical manager who we shall call Fred. This particular individual had been vested with the responsibility of running multiple projects and getting them implemented successfully. When I talked first talked to Fred, while touring him around the office, something didn't quite click. It wasn't a lay-your-finger-on-and-objectively-criticize-what-is-wrong kind of a feeling. It was more of a feeling that did not involve a lot conscious thinking; just a nagging gut whispering gently in my ear, telling me very softly but clearly that something was wrong somewhere. Then, the feeling grew stronger and stronger as we engaged in a casual discussion on software development and how both of us felt about it.
Under normal circumstances if this would have been an interview, the vibe he was sending, would have been enough for me to let him go but this wasn't an interview. Mr. Fred had been already recruited, he wasn't my selection and he wasn't even in my team. Fred was going to run over three parallel projects on mainframes something I knew absolutely nothing about; and because I knew nothing about his area of expertise, or what he would be working on, it didn't made sense to judge Mr. Fred based on just one discussion. Besides, Pops told me to shut my big mouth up and play a nice guy, so I did.
Weeks went by and we slowly started involving Fred with multiple other projects. Over a period of time, I started hearing names of cutting edge technologies in pre-beta stages in design sessions. I started reading names of random technologies in design documents of multiple projects Fred was handling. When I looked at the weekly status reports that were being uploaded to our centralized lotus notes based document repository, the sky looked blue, the grass green and the universe looked just fine.
Our projects were using state-of-art-cutting-edge technologies and frameworks. Mr. Fred was starting to take us to next heights enabling us for what was then refereed to as the e-commerce era. There was one little problem however; our submit buttons, didn't work all that well.
Have you ever had an incident where you are about to present an application to a client or a potential client; and you get this chill run down your spine when you're about to hit that button because you're not sure what'll happen when you press the submit button which is 'technically supposed to' save things to a database? Those cold chills are exactly what I would experience when I was vested with the task of giving a demo to a client or a potential client of any project or product Mr. Fred had been involved with.
The strange part however was that Mr. Fred was working with decently good teams who weren't exactly known for programming by co-incidence at Multiplitaxion Inc. All of them, had been involved with and had attributed to multiple successful projects in the past. They seemed pretty excited about the new technology stack being used and were spending late nights in office trying to meet deadlines as they picked up and learnt new technologies. There were too many of those cutting edge, state-of-the-art tools and technologies being used in our projects.
It wasn't until six months later that I realized what Mr. Fred was doing has a name in software development world. It is in fact, lovingly called Resume-Driven-Development. Justice Gray does a pretty good job at explaining Resume Driven Development in his post on - New development methodologies for the 21st century - he explains Resume Driven Development as:
I can do a long post to describe how Mr. Fred applied Resume Driven Development to all his projects but I won't. Generally, here is how it would work:
- Mr. Fred would look at a collection of technologies out there and pick the coolest one out.
- Mr. Fred would then look at the technology, and decide it was a perfect tool in his toolset. He would in-fact consider it synonymous to a golden hammer.
- From that point, because Mr. Fred had a hammer, Baruch's Law would kick in, and to his eyes, every single problem looked like a nail.
- Without much ado, Mr. Fred would strike the hammer really hard irrespective of what the problem was; he would build himself what he called a 'proof of concept' to prove that he had picked the right technology for the problem.
- Mr. Fred would announce the Proof of concept as successful, hand his cool technology to the team asking them to continue as he moved on to find something else to add to his resume.
I have a few acquaintances do the usual hi-how-are-you courtesy calls to catch up with me. They are often curious about technologies I am working on and often indulge in comparing the technologies I am working on with the technologies they are working on.
As developers, it is human nature to flaunt hot and sexy names of technologies out there and tell the world you're working on Windows Workflow Foundation and Silverlight but before you take a technology and apply it to your project, ask yourself if you are doing justice to your project by honoring Occam's Razor or are you just working at increasing the page-size of your resume at the risk of having a failed project on your organization's resume.
No-one cares what technologies you use or what your code looks like. Your job as a developer is to get successful implementations done; your job isn't even writing code. After all, the whole wide world runs on PHP. Go ahead, grab that book on Windows Presentation Foundation and read it well; but before you strike with your hammer, do validate that what you are striking, is in fact, a nail. Resume driven development is tempting, but in the long run, neither is it very effective, nor does it scale up as a philosophy to base a life on.