I’m the sort of guy who can’t sleep if he hasn’t put the universe around him in some semblance of order, and only 2 weeks ago I came across this question from a student in one of our Web Dev bootcamps: ‘How many types of developers are there?’
That was, of course, a fairly simple query about professional specialisations (you can be a web developer, mobile developer, games developer, etc.) but because my brain never thinks, it only overthinks, those few words sent me down a rabbit hole I only just finished exploring.
I asked myself how many types of developers there are, but in the sense of how many fundamental ways of approaching the art of coding are there?
I’m not even going to pretend to be qualified to answer a question which would require decades of experience in the tech industry plus a solid foundation in cognitive psychology (or some equivalent – see, I don’t even know the right class to take).
But, purely based on my own experience and my own ability to think, and because I can’t sleep if I don’t answer questions, I came up with these 6 categories.
If you don’t recognise yourself in any of these categories, hey – I’ve been wrong before, and I may very well be wrong now!
The Business Developer
Developers with a good sense for business are, deep down, simply those with a strong intuition for how the code they write will serve practical applications.
For these developers, code is never an end in itself, and the question of how ‘elegant’ it may be isn’t worth making a fuss over. Often, though admittedly not always, they are a cut above the rest in setting and respecting deadlines.
I don’t think a talent for practical things is necessarily something innate, and I’m pretty sure business developers can be (and often are) molded out of experience. This is why they don’t have a ‘natural habitat’ in the tech industry, although it doesn’t take a market analyst to figure out they’ll be worth their weight in gold for any startup.
Interestingly, business developers often don’t identify as such – perhaps because the ‘true’ developers (cliché ahoy) are expected to operate wholly in the realm of pure thought and abstract forms.
Thus, if none of you reading this article recognise yourselves in this description, I’ll honestly be the last to be surprised.
The Mimic is a type of developer who approaches problems primarily in terms of solutions they have already seen or encountered, or which they have used themselves. This probably doesn’t sound very flattering – we’d all prefer to think of ourselves as ‘rebel geniuses’ who can come up with ideas nobody else thought of – but really it’s as good an approach as any other.
True, this is not the most creative developer out there, but they’ll compensate by being very grounded and very familiar with their technologies. The Mimic is someone who typically really knows their stuff, and who is much more likely to end up as a specialist than a generalist.
As well, thinking in terms of solutions previously encountered doesn’t mean the implementation can’t be original. Indeed a Mimic is at their absolute best when they can bring together different options from their mental portfolio which have not been combined before. That alone can make their work just as innovative as anything thought up from scratch.
The Deep Thinker
If you ever met someone who appeared to be ‘naturally suited’ to programming, then they were probably one of these peeps.
This is the type of developer for whom the bulk of the work happens away from the console, while sitting quietly and gazing at nothing in particular. The actual writing part of the code is, is if not exactly an afterthought, at least a matter of course, and there is something truly awe-inspiring about watching them jot down functions and variables the way that most of us write a message on WhatsApp.
Naturally, nothing of what the Deep Thinker does is truly unique – all programmers have a phase of mental planning before they get to writing. The difference essentially comes down to energy expenditure – holding complex models in our minds, never mind working with them, is effortful and exhausting for most people. The Deep Thinker finds that retreat into a metaphysical world to be easy, perhaps even a bit relaxing. And if that’s what you call being a ‘natural’, then yes, that’s what they are.
This is the type of developer who approaches all coding not as building something, or as researching, or as revamping, or as providing a service to someone, or even as playing – but always essentially as problem-solving. They will start by thinking of the ‘solution’ (whatever it is they want to achieve), and then work their way backwards from that.
I think of them as Reductionists because theirs is a sort of approach by elimination: once they have mentally settled on the solution they are looking for, they will strip away from their plan any and all possibilities and technologies which appear inefficient, inappropriate, or likely to slow them down, until they are left with the inevitable – and therefore optimal – path leading exactly where they want to end up.
Like Mimics, Reductionists also tend not to be among the most creative developers. But they are invariably the best people to have around during crunch time, no matter what project they are working on.
If your product needs a new feature to be added at the last minute, and you don’t have time to try out a whole bunch of approaches, call the Reductionist. They’ll find the best solution with the limited means they have and then build it as quickly and as reasonably as humanly possible.
On the opposite end of the spectrum compared to the Reductionist stands the Expansionist developer. Imagine them a bit like the ‘Wizard’ class in an old school RPG, meaning those individuals who are pretty weak at the beginning of their career, but eventually become outstanding masters at a certain level of experience (provided, of course, that they always keep learning and levelling up).
This is because the Expansionist developer never thinks that there is only one way to get something done. Instead, they will explore multiple solutions and bring in new tools that others might not have contemplated, never mind requested.
Their ability to take a simple starting point and consider a variety of avenues of thought – sometimes changing the direction or even the nature of a project in the process – becomes more useful and more powerful in proportion to how many technologies and languages they master.
Being able to decide on which technology is best for any given task is fundamental for a professional developer, and an experienced Expansionist is usually the best person to make that call.
I was a little hesitant about making ‘the Creative’ its own type of developer, and this for several reasons.
Firstly, almost all programming is creative to some extent. The Expansionist and the Deep Thinker from this very list, for example, are also inherently creative. Furthermore, the title sort of calls for disambiguation – many will understand this as ‘developers with an artistic side to them’, of the sort who are usually found designing video games or beautiful web pages.
But that’s not quite what I have in mind here. Rather, what I’m thinking about are developers who are especially skilled at finding solutions that other people do not come up with.
This doesn’t even necessarily mean the best solutions, mind you – just the ones that really needed some thinking outside of the box to be found. This also means that the Creative overlaps with some other categories on this list, and that they are distinguished more by a matter of degree than by one of fundamental qualities.
Programming is a job for thinkers, so people who think differently can really go far. But don’t fall into the trap of thinking that the Creative developer has some sort of ‘gift’.
Some people may naturally be better at this sort of thing than others, but everyone can train themselves to approach problems creatively and find increasingly original solutions. It just requires passion, practice, and having seen many other problems and solutions before. Or in other words – good old-fashioned experience.
And that ends my ‘reordering of the universe’! As I mentioned at the outset, these are just my opinions and I don’t consider myself any sort of authority on this topic – I’m just a guy who likes writing lists.
If you recognised yourself as a programmer in the article, then great! If you did not – well, I hope the blog at least kept you entertained. Happy coding!