This is a response to this blog post here – In praise of fungible developers that an organization can shuffle into different positions without affecting productivity.
I recently read about T shaped developers, who have both breadth wise and depth wise knowledge. I do agree that developers need to be holistic and try and grok as much as they can. However, a specialization is equally essential.
If we could all hire handymen who fix everything, why do we need electricians and plumbers to fix specific things? Because water and electricity behave very differently.
And if you are a developer starting out, I’d recommend you spend your time learning one thing properly before trying your hand on everything. Worse, trying to be excellent at everything. I regularly respond to requests for advise on reddit telling them exactly this. (Here and here)
Maybe, being a polyglot or full stack developer would work for someone who is naturally good at understanding abstractions and applying it to different languages. It is an admirable skill and kudos to people who can do that. But its not everyone’s cup of tea and it shouldn’t be an organizational level expectation.
I understand why a manager would think fungible developers are awesome. Of course they want a team where everyone works on everything and there is no change in productivity. This is the idea behind a lot of Victorian era organizations where one item can be easily replaced by the other without any loss in productivity.
Soldiers in the army fit this analogy very well. One unit can easily be replaced by another without any change in productivity. But we do require “bomb specialists”. Teachers in schools are also part of the same analogy. And there’s a big difference when a math teacher tries teaching arts.
It is too idealistic to expect this of every developer. Ideally, we all want to be good at everything but in reality, that is not the case. We all have our strengths, interests and passion. It pays heavily to follow what your heart wants.
I hate it when corporations treat developers like expendable resources shuffling them around from one place to another. This is essentially what will kill the Indian IT sector. Junior developers (freshers as we call them) are expected to work anywhere they are dropped into. Instead, wouldn’t it be better if the training period was utilized to identify suitable roles based on their aptitude and interests? Or is that too much work for an organization?
This is precisely the reason I quit a large IT MNC to work at a startup where my skills were put to use. I simply couldn’t put up with a semi-managerial role and work on technologies that didn’t speak to my heart. In the last one year, I’ve learned more than I have cumulatively learned working 4 years at an organization that shuffled me in different roles.
Its nice to have polyglots or full stack developers when you need to put out fires but when you need something done really well, you need a specialist.
Startups do this a lot. Passionate developers who want to get their idea out work on every aspect of the website. Yet, the moment funding comes in, they start hiring specialists. It’s because specialists have meditated on a specific problem for a longer period of time. It is more likely that they will solve your problems sooner and better than you can.
While a lot of backend developers can work and get the UI to a decent shape, it takes a specialist designer/UI developer to take it to a higher level. Many times I’ve had clients approach me to revamp their UI because it looks like it was put together by a developer.
Also, I have worked with a few stellar full stack developers who prefer to leave the dirty parts of something like CSS or responsiveness to a frontend specialist, who has worked day in and day out on this and can get it done faster.
Unless a full stack developer is equally stellar at every technology they lay their hands on, I disagree that being holistic is more important than being a specialist.
If that’s your calling and you are naturally good at it, more power to you. But an organization shouldn’t require all incoming developers to work on everything and learn everything. In fact, its the other way round.
Developers should be encouraged to work on things that interest them. Several organizations allocate time for working on personal projects. And they would help get the word out if it is open source. That’s the kind of culture we need to build.
User experience and writing beautiful back-end code are very different verticals. Developers should be encouraged to follow their hearts and spend more time building a specialization for a niche. Organizations should be spending more time building tests to discover strengths of each developer.
Let’s not build a culture where everyone is required to be good at everything.