Oh yea, I love to classify things - tag them, label them, categorize them. Keep stuff in order. Same applies to people who tend to be more complex than “things”, but nevertheless (even if my pick appears wrong, after some time) I still do classify people.
I’ve met hundreds of developers (if not more …) and I’ve cooperated with many. They usually fall within categories I’ve worked out during all those years - I have plenty of those, but tonight I’m going to focus only on few “flavors” of developers I prefer to work with - cream de la cream.
- "Sponges" - developers who love to learn. They are usually extremely passionate about they work and being on the bleeding edge is what motivates them. They investigate every new trend / practice / library / framework / language, so they can make their own opinion on that and when they are to solve any kind of problem, they usually have such a wide palette of options, that they can come up straight with at least few possible solutions.
- "Chisels" - smart beyond recognition. They just DO stuff. They don’t spend every possible minute on reading blogs / tutorials, but they are just good at solving problems, because they have intuition, common-sense and instinct. Engineers by birth. On the top of that they are both experienced and extremely intelligent what helps them in adapting technology fast (but only if needed). It’s sometimes irritating that their knowledge is limited up-front, but somehow they keep solving the problems anyway. Bastards.
- "Sponge-chisels" - I fear them. They mix the abilities of above two. They are extremely rare, but one dev like that can easily do alone the work worth more than 5 average developers could do in the same time. They think different categories and usually they are not really likeable, but hey - how could you like someone you envy? :)
- "Lumberjacks" - minimalists, who have brought DRY (don’t repeat yourself) and YAGNI (you ain’t gonna need it) to perfection. They always focus on what’s absolutely critical only. Extremely straightforward. Some may boil because such an approach may lead to over-simplified and not maintainable architectures, but it’s all about intuition and a lot of practice - good lumberjacks does minimal re-work when introducing enhancements to his legacy code. They don’t care about syntactic sugar, design patterns, re-usability, complex hierarchies. They just deliver exactly what’s expected to be delivered on this very moment.
Next time, types of developers that infuriate me most :)