The tale of the specialist and generalist in tech industry
This is an essay and will be expanded
There is no doubt that the specialization and labor division are among the most outstanding achievements of the industrial revolution and the modern economy, but does it apply to all roles in the tech industry?
Liberals often say that with labor division, the sum of labor made by each one working in its specialty area generates more value than if they worked in the entire process alone. Given our modern society, I do not doubt that this is true.
In macroeconomics, the value generated by trade and labor specialization surpasses the value when the production chain is not specialized on an exponential scale.
An essay written by Leonard Read called I, Pencil and often used in economy classes to explain the complexity of a pencil denote the amount of work specialization in our current production chains. It explains why no single person in the world can make a simple pencil, listing all its components and the number of people involved.
Specialization in the Tech Industry
But how much is this specialization required and beneficial in the Tech Industry?
Today even simple tech products require a wide range of knowledge to make them truly successful.
Roles in the Tech Industry
Let's work on a simple smartphone application example.The application will need to serve a purpose, be useful, or have no value. Considering this, we need someone that is an expert in that field, a Business Analyst . As we are creating a smartphone application, we need a Mobile Developer . Will it run on Android ? iOS ? Both? We may need more than just one Mobile Developer . Our application needs to distinguish itself from others, be more beautiful, easier to use. Therefore, we will need a Designer .
The application needs to work correctly. To ensure there are no errors, someone needs to test it, and if we can automate those tests, someone needs to work on that automation.
An application has no value if no one uses it. We need to deliver it. Someone needs to set up a continuous integration workflow for it.
We discussed the needs of the application frontend, we may have our application working now, or we may need external data for its functions.
We need an application backend for the data access, which starts an entirely new chain of necessary specialties, at minimum, a backend developer.
Does it have persistent data? Again, we need a database developer and a database administrator.
Does it communicate with other systems? Again, we need an integration or API specialist.
It requires hosting and be available on the internet. A system engineer needs to deploy it on a network controlled by a network administrator and later managed by a system administrator.
All those pieces need to play well together, and a system architect will ensure that.
We do not want our application to be compromised and our valuable data stolen or destroyed, do we? Therefore, we may need security engineers, penetrations testers, and other security specialists tailored to each part of our application.
Wow! That is a lot of people that need to be managed by someone else.
At this point may be time to put an intelligent quote here:
An expert is one who knows more and more about less and less until he knows absolutely everything about nothing. - Nicholas Butler, philosopher
I intentionally did not mention specific technologies, programming languages, network protocols, hardware architectures, and a wide range of essential activities if we consider the big picture. We will not run our data center or be our internet provider for that. Facebook, Google, Microsoft, and other tech giants do that.
The Specialist Generalists
In the tech industry and especially in startups, we are more and more searching for generalists with a wide range of knowledge rather than specialists to complete the work.
Sample fancy job roles that include multiple roles are:
- Full Stack Developer: the junction of a Backend Developer, a Database Developer, and a Frontend Developer;
- DevOps Engineer: a Developer and System Administrator;
- DevSecOps Engineer: a Developer, System Administrator with a deep security background;
- Full Cycle Developers Full Stack Developer with a DevOps Engineer;
Of course, those job roles and the descriptions that I give are oversimplifying a broader context and problem in the tech industry and its economy. By definition, the economy is the process of getting value with limited resources. The more scarce and disputed resource in the tech industry is humans, and we try to get all the value from their labor as we can. This brings us to another economic concept: offer and demand.
Offer and Demand
As the amount of knowledge required for a role increases, the number of professionals available to fulfill that role decreases and becomes more expensive. This unfulfilled demand created an entirely new branch of business with the as a Service (aaS) products to allow small and medium-sized companies to work without that many different individuals executing each role.
Given the number of roles required for even small things, the advent of IaaS (Infrastructure as a Service) allowed us to outsource not essentials activities needed to run a tech business, like a data center, a database, storage, or network.
Today, it is relatively simple to deploy many servers all around the globe in minutes with services like Amazon AWS, Google Cloud, or Microsoft Azure, to name just the bigger ones. We can run our application using managed databases on Amazon RDS, Google Cloud SQL, Mongo Atlas, and many other companies. We can enforce security using managed solutions called WAFs (Web Application Firewall), also available from many vendors.
For even more outsourcing, PaaS (Platform as a Service) or BaaS (Backend as a Service) tools that offer low or no-code approaches like Firebase can allow you to fast prototype and even run your application with a minimum team.
Those services help you when the team is limited, but you should not take all for granted without risks. For example, a mistake using Firebase exposed tons of data public on the web.
The no conclusion
Solutions to help run a tech business emerge each day, but they will never cease the need for qualified professionals. And the demand for generalists in small teams comes with its risks. For example, you can't expect a generalist at an average salary with a wide range of topics in their hat and years of experience in each. But, on the other hand, you can't expect a specialist with many certifications in one area to have a broader knowledge of the many areas that exist in the tech industry.
A team of specialists may or may not solve a problem better than a team of generalists. With two specialists in different areas trying to make something, you have silos of knowledge that may lead your product to a complete failure. On the other hand, being able to wear different hats in a team and communicate and discuss the integration of the product components is a job that only a generalist can do.
To not conclude but broader the discussion on this topic, I should say that you can have a team with either professional, but you must ensure that your team covers all the product lifecycle. The team should identify problems with both they responsibilities and the services they are using.
Those are some references and articles I read to not conclude anything in this matter: