The Development Abstraction Layer

Interesting article by Joel.

I think this article is basically saying the following: 1) every distraction that programmers have that they do not need to have needs to go away, 2) they should be catered to, and 3) everybody else in the organization exists for the purpose of supporting the programmers, either by doing 1 and two above or by being the machine to sell and support what the programmers make.

I love it. Love it, love it, love it. After all, I am a programmer! In some kinds of companies there is some validity here. Let’s say you have a company that makes is money on selling software. In this case those things really are true. If you have a company, however, where IT is just a small part, a sort of infrastructure, then not everything there applies.

The unfortunate thing about these ideas, especially number 2, is that it is easy to get the idea that programmers are just a bunch of babies. Some are, of course, but I don’t think that is the case usually. This is assuming, of course, that we’re talking about good programmers. Bad programmers may or may not be babies, but they should be fired and replaced anyway. Anyway, I digress. I don’t think it’s lack of maturity or a sense of entitlement, but that there is a programmer culture that is radically different from that found in other groups such as sales, accounting, support, management, etc. ALL of these groups have different cultures, and development’s culture is radically different from the others. Take, for example, the idea of giving developers their own offices. This actually makes a great deal of sense for programmers. Distractions are very costly to development. It’s just disastrous when a developer gets "in the zone" and is then distracted by some pesky manager about this or that project. Granted, developers have to be distracted sometimes (yes, it is ok to talk to developers), but as a general rule they should not be. When developers are "in the zone" they get a lot more and better work done. That’s what you want, right?

And its not that programmers should be catered to and no one else. Every group needs to have their needs met and be satisfied at their job, because you’ll get a higher retention rate and satisfaction level, which will greatly affect the effectiveness of your company. And one of the important points that can be drawn from Joel’s article is that when any group is cental to the company, it SHOULD be catered to, whether that’s sales, support, or development. For ISV’s this often, if not always, is development.

Make a truly good development environment and you’d be surprised what you can get out of your programmers.