My hovercraf
t is full of eels: Assistant Orange Peelers

The author raises a very good point. I don’t believe you can be successful (or perhaps, its more difficult to be successful) if you break software develop
ment down into a series of specializations. Although a developer may have more training and intimate knowledge in a specific area of code, it is not effic
ient to let him/her focus solely on that area.

A good developer needs to have the ability (ie: knowledge and tools available) to diagnose and debug a problem regardless of where it may lie and what tech
nological cross-sections it might touch.

When I look for a developer, I look for someone with good cross-sectional exposure to technologies and methadologies. These are the types of people that a
ble to easily adapt to different environments and share their experiences while contributing to valuable discussion. What I term a vertically focused deve
loper (someone who is a specialist in a single area) could potentially be very set in his ways. Design/implementation designs should be based on a holisti
c view of the entire system and not on someones personal perferences (although the experiences of a domain specialist are valued).

This leads to my last point, the over-reliance on specialists to make far-reaching decisions.

Hypothetical Situation:

Company: We know we’re doing something wrong and its going to bite us later, but at that point we’re going to bring in a high-priced outside senior perso
n to magically fix the problem for us. For now we’ll look at ways to “optimize” the code.

Maybe I’m not optimistic enough, but I don’t see the point of waiting for someone senior to come in and point out the mistakes (and magically fix them) wh
en you could start taking iterative steps towards reaching a suitable goal right now. I’ve been in situations where I’ve been brought in as a so-called ex
pert to provide man power on a dead-end project. It’s difficult to fight past momentum and really make the right (and necessary) kind of change. So, on a
whole, all developers need to be agile and prepared to work collectively on all aspects of a code base. It’s not possible to have intimate knowledge of t
he entire code base, but it should be possible to have a birds-eye view of the different components and perhaps their most important points of interaction.
The code is owned by the collective and although you may not be a specific expert in a given technology, that’s no excuse not to raise a concern or quest
ion a course of action.

Management should encourage their developers to cross-train and become self-sufficient, I believe a cross-sectional approach to development far outweighs
a specialist vertical approach.


Leave a Comment




  • Pet Peeve: Don’t email my password to me in plain text You know the drill. Signup for some random service on the internet Receive a confirmation email with your account information or Forget a password for some random service ...

  • Eclipise Memory Analyzer (MAT) I must say the Eclipse Memory Analyzer looks pretty slick. There is some pretty good material over on the developers blog. Lastly, there was a talk on it ...

  • Open-source Web-based Code Review Tool: Rietveld Guido van Rossum, of Python fame, has recently released a Django-based application that enables web-based code reviews... Rietveld. It supports any language and currently can hook into Subversion repositories. You ...

  • An implementation of the JVM in Javascript? Caught this over on JavaPosse Google Groups. Essentially, some bright fellows over in Japan have developed a bytecode->javascript compiler. There's a demo floating around that took a Tetris ...

  • Facebook Chat? So it looks like the Facebook Chat service has finally started rolling out to my network (Facebook Chat has been mentioned previously). Not quite sure how ...