The value of effiency

There was an interesting survey the other week which showed that Developers Who Use Spaces Make More Money Than Those Who Use Tabs.

Some people are skeptical of this data, but I’m not. Here’s why…

Don’t get me wrong, this data might not be correct, but I’ve worked with a LOT of developers over the years and there are a few clear archetypes.

One archetype is the studious developer. Programming doesn’t usually come naturally to the studious developer. They take courses and learn the syntax. They memorize code and are constantly reading. Their strength is what they’ve memorized. What they can pull together. Once they get something that works they keep doing it that way. They’re consistent and trustworthy. They can keep your old code running for 20 years. But they don’t break new ground. Their weakness is they don’t often try new things, and they often are slow to adjust to new paradigms. An example of this is when a studious developer first uses a CMS or a new framework. Instead of using plugins/models a studious developer will build their own plugins and try to program every interaction by hand in PHP. They’ll be frustrated by the limitations, and end up with clunky, overbuilt, buggy code until they invest the months in making it work. They’re also going to be hesitant to make any systematic changes to your code, which can be an advantage or disadvantage.

Another archetype is the jumper. The jumper is always looking for the next best thing. They have a custom-built Linux box which they’ve used for years, and never *quite* gotten value from, but they still have a list of projects they’re going to try on it, because Open Source wins. They change development environments every 3-6 months, constantly questing for the “best” one. They discover helpful tools and paradigms that other teammates have never heard of and share them with the team, but rarely follow through enough to see the value themselves.

There are many others. The architect.  The lazy hacker (my personal favorite who finds shortcuts and builds prototypes). The devil’s advocate (often most successful in planning and QA). The been there done that. The eager beaver who jumps in two feet to anything that someone else is excited about. The salesman who can synthesize ideas and communicate them in ways that gets people moving.

A good developer (and a good team) has a mix of all of these, but a GREAT developer is one who can assess ROI and understand when they should listen to their inner (or external) devil’s advocate, and when to ignore them. They know when to try something new, and when to let it go.

One of my interview questions for developers is have they ever used Linux. It’s sort of a loaded question, but if someone says “oh yeah I have a Linux machine” I don’t hire them… they still have to learn to let go.

I don’t think “using spaces” makes you a better developer. BUT it looks like developers who have chosen spaces over tabs are more valued by their bosses than developers who chose tabs over spaces.