One question that each developer should ask himself is: “Am I a carpenter or a cabinet builder?”.
It might seem a silly question, but there is a difference. It isn’t the case that one is better than the other. This question isn’t about quality of work. W
hen asking this, we also don’t worry about any compensation that one might get. So let me illustrate what I see as the difference.
A carpenter is someone that has a lot of skill in working with wood. A carpenter can work in a shop or at a construction side and will use any tool available to do the job, has a fundamental understanding of how wood can be used to achieve a goal.
A cabinet maker, in this case, is great at building cabinets. Can make any type of cabinet, if it is a cabinet. So don’t ask a cabinet maker to build stairs, or to build a doorframe.
So, this fictive cabinet maker, can do the same thing our fictive carpenter can do, building cabinets. The difference comes when a stair needs to be built. Then the cabinet maker won’t be able to help, and the carpenter will.
So, translating this to the world of software development, we can see a cabinet, a stair or a door frame as different programming language. And unfortunately, all these roles are called ‘software developer’, while they are clearly not.
In my opinion a software developer can work with a broad set of programming languages. And will be able to solve any computer task, so basically, it’s a generalist.
And we have programming language specialists, like java developer or python developer. Immensely useful, as these know the in depths of a programming language.
So, with this knowledge, ask yourself again the question:
Am I a carpenter or a cabinet builder?