Doing the dishes

At my job I get to work with a lot of developers, each with their own unique personality. Ignoring the obvious differences between front-end and back-end, one grouping I tend to make is that of  'stage-ness', for lack of a better word. There's three of them:

  • Startup-ninjas: these guys kick ass at rapid prototyping and getting something up and running in almost no time at all. If you get one of these at the start of a project then you're guaranteed to get funded (or get your project approved). But their useful ends quickly as they tend to make code quality worse on any project that has already been established.
  • Masters of structure: they cannot tolerate an imperfect architecture or a solution that has not been refactored to its utmost perfection. Comes with unit tests, integration tests and browser tests of course. A person of this category will make your code better beyond what you could do yourself, but he will also take all the speed out of the project. You'd better be well into maintenance mode before you start considering one of these guys.
  • The average joe: completes the picture. Brings speed to structured projects, or structure to a prematurely launched mess. These are the ones you want. Never too slow, never too chaotic. Scales with skill/experience, of course.

I've seen a startup ninja do crazy stuff to a starting project that I would never have been able to do as quickly, and I've also seen one of the masters of structured code at work on a project that was approaching maintenance mode. Out of these three categories, none is always better than another. It's merely a different type of specialization. It's something that, for me at least, takes some time to accept, because developers tend to think that their own way is best. Even if we don't say it out loud, we're always pursuing what we think is the optimal way to write software.

As for myself, I'm definitely in the average category. I've taken over startup-y projects that needed structure, and I've stayed on long enough on one project to see myself become villian, eg. to see a structured master take over and add structure beyond what I thought was needed at the time. It's difficult to accept someone else's way over your own, but the least you can do is keep an open mind :)

tl;dr: bringing structure to a project is like doing the dishes; we've all got different tolerance levels.

Posted in Tech , Thoughts