It always amazes me when I find new or even seasoned managers that haven’t come across a situation where programmers wanted to use tools, techniques, or technology to improve their resume instead of solving the customer’s problems. This concept, which I call RDD (resume driven development), is very real and it’s actually a fairly widespread problem.
In fact, RDD is so prevalent these days that people will actually choose Java over Perl because “Perl will not help my career”. Or, they’ll choose WebLogic or WebSphere instead of Tomcat or Jetty because “who’s going to hire me because I know Jetty?” Never mind that Ruby, Perl or Python may be much better for some quick and dirty solutions where Java may take too long. Never mind that WebSphere will cost much more and may be too heavy a framework for the customer’s need. I’ve heard many developers at my clients’ sites say that they “just have to use Ruby on Rails on this project” because rails work may be in demand. Never mind that Rails may create maintenance headaches or require senior engineering talent that may not be available.
Now, don’t get me wrong: choosing any particular IDE, framework, or tool like Rails is not a bad idea (I actually love Rails). But, tools should not be chosen to help a career; tools should be chosen because the customer will get a high-quality solution. Just don’t choose a tool or product (and I’ve seen it many, many, times) because a developer wants to “learn the tool” at your customer’s expense! Similarly, choose languages and libraries because of their utility to your project, not the developer’s preferences to learn new things. More often than not, a new tool introduced into an existing project will delay things, not speed up delivery. And quality will likely suffer.
It’s similar to a problem I’ve seen in non-technical sectors as well — namely, the politicization of decisions. As we all know, politics (office-style) and Politics (democracy-style) often leads us to make suboptimal decisions. Managers choose particular people on their projects to help advance their careers; workers hide problems and make themselves look better to advance their careers; these are things we come across all the time. RDD is no different — developers usually can’t play politics to advance their careers so they end up with resume driven development tactics to pad their resumes so that their next job is easier to get.
Note to all managers and leaders of software projects: when developers ask you to choose a particular tool or technology, always have them explain to you why this may not just be a RDD request versus a request that may actually be good for the client. If the developer talks more about the technology as opposed to the solution or the customer’s requirements then the developer is not focused on the right topic. In fact, ask the developer outright: “will this tool, technology, or technique help your career more than it will help the client?” See how the developer responds.