As a developer: Specialize or Generalize?

In Developers Jordi reflects on how the degree of specialization of the developers can affect different kinds  of organizations. From this Javier Escribano states:

It’s dangerous for a developer to specialize too much or for a startup to only have specialized developers.

Something, I completely agree for the startup context, also, Javier concludes in his response to Jordi Miró Bruix that:

…great developers are the ones who can be flexible and use the best tool for each work.

Which sounds good, but I think that is only one part of the picture. This conclusion, as good as it sounds doesn’t live in the void, it will be always contextualized in something bigger: the organization. And as Jordi points, organizations evolve following unique paths.

Something I learned from my Gestalt training is to watch for the opposite pole of anything, a tool that I need to use more frequently. In this case, it could be something like “great developers are the ones who rigidly stick to a specific tool for any work”.

This sounds odd, we all have heard that “if the only tool you have is a hammer, to treat everything as if it were a nail.” (Maslow’s Law of the instrument). Knowing that we have in one hand developers and in the other hand organizations, let’s put together the combinations for this two axes and see what happens with these statements: “Jack of all trades, master of none“.

Small Organization – Generalist DeveloperS

The Full-Stack developer that Javier mentions is a specific case (pun intended) of the Generalist Developer: a professional who can easily move between the backend and frontend of web applications. Startups are also a particular case of a small organization.

As a startup usually has a small budget and a small team, sometimes as small as one person, a generalist provides a lot of value. It is possible that the resulting product is not as good as it should be or that the development process wasn’t as fast of smooth but these are natural trade-offs associated to a small team of developers who manages a broad set of technologies and tools.

SMALL ORGANIZATION – SPECIALIST DEVELOPERS

In this scenario, the organization (startup) may not make it: it is easy that a very specific need can arise without a matching expertise on board. The organization could be forced to burn from its small budget to hire a service or  more specialized professionals to fill the gap, or just can’t move forward through this bottleneck.

Big Organization – X Developers

The X stands for boolean Don’t Care condition, if the startup makes it, then it shifts into a realm where it isn’t constrained anymore by a tight budget to hire professionals. At this point, you may encounter a big team of generalists where some specialization has been happening but they are still glued together by this broadly shared skill set.

Specialists may be hired to fill the gaps in the organization, and the specialization of the original generalists (if they stay) deepens because now the size of the organization allows it, a luxury they could not afford before when they were a small team. If you have a specific passion in software development and you want to polish it, now you are in an environment that allows you to focus your time on it.

Also, now that specialists start to pop around, the generalist may feel challenged in their Status Quo and they may try to escape forward by specializing or they may not have another option, both things can happen. One of the alternatives to this process is the figure of the Generalizing Specialists, proposed by Scott Ambler.

Of course, there will be always brilliant developers that will be able to code both the Android and iOS native applications using native tools and also build the backend for this apps, do it in fast and efficient fashion also following best practices and delivering well tested code that is dependable easy to maintain in the long term, unfortunately this is not a common case.

What should you do? I don’t know. As a developer, should you specialize or try to build a more generalized skill set? As a programmer, I was always more a generalist than a specialist, and most the time the compass that I used when I had to pick what technology o tool to explore, what to learn, was what made me happy. I have known developers that have user salary indexes to decide what technology to specialize in, sounds good as well to me. What drives you? 

Who should you hire for your startup? Again there is no good answer, you can always hire a specialist in Human Resources and delegate this problem 🙂 and without a doubt, after a certain organization size this option will be difficult to elude, but as Jordi says “every company should find its way of doing things”. As Javier, I appreciate a lot developer’s capacity to learn, their curiosity and passion, this is difficult to quantify or express but is the way it works for me.

Leave a reply:

Your email address will not be published.

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Site Footer