I’ve been thinking for a while about the difference between application development versus contract programming, a.k.a. consulting. I have done both and clearly prefer application development.
spurred me to ink my thoughts is Ben Collins-Sussman’s recent Version Control and “the 80%” post where he separates developers into two groups: the 20% alpha geeks and the 80% folks. Ben, one of Subversion’s developers, dares to write:
There are two “classes” of programmers in the world of software development: I’m going to call them the 20% and the 80%.
The 20% folks are what many would call “alpha” programmers — the leaders, trailblazers, trendsetters, the kind of folks that places like Google and Fog Creek s
oftware are obsessed with hiring.
These folks were the first ones to install Linux at home in the 90’s; the people who write lisp compilers and learn Haskell on weekends “just for fun”; they actively participate in open source projects; they’re always aware of the latest, coolest new trends in programming and tools.
The 80% folks make up the bulk of the s
oftware development industry.
They’re not stupid; they’re merely vocational. They went to school, learned just enough Java/C#/C++, then got a job writing internal apps for banks, governments, travel firms, law firms, etc. The world usually never sees their software.
They use whatever tools Microsoft hands down to them — usually VS.NET if they’re doing C++, or maybe a GUI IDE like Eclipse or IntelliJ for Java development.
They’ve never used Linux, and aren’t very interested in it anyway. Many have never even used version control.
If they have, it’s only whatever tool shipped in the Microsoft box (like SourceSafe), or some ancient thing handed down to them. They know exactly enough to get their job done, then go home on the weekend and forget about computers.
I agree. I also realize now one of the reasons why I moved away from consulting in 1994 and never looked back: most of the alpha geeks are not
there. They are in application development. There are several reasons why application development attracts alpha geeks while consulting repels them.
Disclaimer: I’m sure many consulting outfits do a great job; no offense is meant to anyone.
The Feedback Loop
In application development, a developer receives a lot of feedback.
This could be in the shape of email, forum posts, phone, or by meeting customers face to face at a convention or trade show. The developers also receives critical feedback from the technical support folks; this helps them identify bugs or weaknesses in the app and challenge them to do better. The feedback often includes feature suggestions and sometimes even an entirely new product idea.
There is nothing more rewarding for a developer th
an to hear a customer rave about how much he or she loves the product.
This feedback loop is not usually found in consulting.
In 1992-1993, I worked on a software project for monitoring a nuclear reactor after a f
ault has occurred. Pretty serious stuff, but no one o ther than
the CEO at the time ever met the customer!
He was not a developer, didn’t understand developers, and didn’t care much for them other than how many hours the customer could be billed. There was no direct input to the developers before the project started and no feedback after delivery.
Geeks Are Not Just Coders
Alpha geeks like to develop, not just code. There is a huge difference between the two.
A developer has the opportunity to be creative and help shape the product. At consulting companies, coders rarely have this opportunity.
Any creativity is limited to implementation details.
Who’s In The Driver’s Seat?
In application development, developers are in the driver’s seat along with managers, helping build quality products that customers will love.
Their own interests are usually aligned with that of management.
If the product’s quality is not up to par, the free market will take care of weeding it out.
In consulting, the dynamic is completely different.
MBAs are usually in the driver’s seat. Billing is the primary motivation and it often conflicts directly with the goal of quality.
Imagine the following scenario: Mr. MBA convinces Mr. Client that adding database replication would be a spiffy idea. Mr. MBA rushes to the computer lab and informs Ms.
Lead that replication needs to be implemented.
Ms. Lead and her colleagues warn Mr.
MBA about the delays the new feature would cause, the complexity that it would add, and that the project might collapse under its own weight.
Seriously folks, do you think that Mr.
MBA cares? He’s only thinking about how much more he’s going to be able to charge the client. Perhaps the firm will even make him a partner. Imagine that!
What I just described is one of the reasons why the FBI’s $170 million Virtual Case File (VCF) project failed. According to the Washington Post, the FBI didn’t manage the project well and the contractor, SAIC, “knew the FBI’s plans were going awry but did not insist on changes because the bureau continued to pay the bills as the work piled up.”
Geeks Like to Work With Geeks
If most alpha geeks are found in the application development area, that’s where budding alpha geeks will want to be. It’s as simple as that.