Let’s face it. The IT world is complex. And this complexity is exponentially growing. From the Analyst Programmer of the dot-com era, the general-purpose IT professional mostly en vogue at that time, technological progress and the deep penetration of digitalization in all fields of human activity has brought us a wealth of new professional roles that is quickly expanding. Following are some of the IT positions that i have come across while reading IT magazines, articles and job ads:
- (Pick a language) Software Engineer/Developer
- (Pick a language + framework) Full-Stack Software Engineer
- (Pick a database) Developer/Administrator
- (Pick a platform) Mobile Developer
- UX/UI Developer/Designer
- Real-time Systems Software Engineer (Streaming/Messaging)
- Embedded Systems Software Engineer
- Software Algorithms Designer & Researcher
- QA Automation Engineer
- Test Analyst
- DevOps Engineer
- Digital Transformation Architect
- API Developer/Designer
- Performance Optimization Engineer
- Data Scientist
- Data Visualization Engineer
- Big Data & Analytics Specialist
- Networking Software Engineer
- Audio/Image Processing Software Engineer
- Systems Analyst
- Control Systems Software Engineer
- IT Systems Administrator
- Business Analyst
- Application Support Specialist
- Digital Identity Specialist
- Cyber Security Analyst
- Quality Control Engineer
- (Pick a platform) Solution Architect
- Video Game Developer
- Computer Vision Software Engineer
- IoT Engineer
- Blockchain Developer
- Machine Learning Engineer
- (Pick a platform) Cloud Computing Engineer
- Software/Hardware Integration Engineer
- Digital Integration Analyst
- Chatbot Developer
- Robotic Process Automation Architect/Developer
- Agile Business Analyst/Iteration Manager
- Scrum Master
- Project Delivery Engineer
- Interaction Designer
- Infrastructure Monitoring Engineer
And that is certainly an incomplete list as new techs, frameworks, languages, paradigms and methodologies sprout up like mushrooms. Additionally, there are professional roles required to have knowledge or expertise in a specific domain. So, many times it happens that being, say, a Java Software Engineer does not suffice as expertise in a specific field, such as banking, manufacturing, healthcare, etc. is also required.
Now, if we expand the “Pick a …” placeholders considering all the programming languages, frameworks, platforms, database, etc. that are around nowadays and add specific domain expertise often required to fulfill a position, the above list grows dramatically.
The reality is that we live in a complex highly specialized IT world.
Recently, i noticed what seems to be the beginning of a trend that is trying to highly correlate with the increasing rate of specialization in IT and that i call agglutination of skills. While this practice is generally seen in small start-ups (for obvious reasons and probably one of the causes for the high rate of failures) this trend seems to be extending to well established businesses who are facing the hard reality of how complex this field is becoming and are somehow unprepared (or unwilling?) to cope with its rapid expansion, both in breadth and depth.
Since software and automation are permeating all aspects of the business processes in all industries, the need for a variety of specialized IT professionals comes just natural. And here is the catch. While this is potentially a positive aspect since it gives rise to new job opportunities, it doesn’t play well with the basic principles of business, that is reduce costs to increase profits. So here is the solution: agglutination of skills and a new, modern, bombastic role: the Overflowed Stack Software Engineer.
The Overflowed Stack Software Engineer is an interesting (and quite worrying) evolution of its close relative: the Full Stack Software Engineer. Initially this regarded skills confined within a specific IT field, with web development probably being the first to have a “Full Stack” developer role encompassing both the back-end and front-end. While this may still be understandable since these skills fall within a specific realm, what is worrying with this trend is the “Full Stack” starting to get overly full, to the point where it is now overflowing, trying to embrace skills from quite different IT disciplines. So, it is not uncommon nowadays to see job ads requiring the incumbent to be skilled in a diversity of fields.
Some examples that I’ve come across recently expected the candidates to be proficient in a mix of enterprise back-end development technologies, embedded systems development, web front-end technologies, mobile development and even system administration, plus others highly regarded and considered a big bonus. These role were advertised as “challenging” and “exciting”. A quick check also revealed that they had been advertised for many months. Probably they were not challenging and exciting enough.
That’s agglutination of skills at work: the attempt to glue together skills that naturally belong into distinct IT camps under a unified job role and call it “Full Stack Software Engineer”, the title mostly (ab)used in these job ads, or simply (and more shamelessly) “Software Engineer”, where in the real world you will need the services of different professionals. Because, let’s be frank, the likelihood of finding an embedded devices engineer who’s also skilled in web design and enterprise back-end development (or vice-versa) is probably close to those of finding a sheep that can bark.
An interesting position for an Overflowed Stack Software Engineer is shown in the below figure
It seems like they’re looking for a web developer, mobile developer, systems developer, embedded device engineer, enterprise back-end developer, data scientist and DevOps engineer. All in one. I am not sure if they are actually verifying the level of “expertise” of candidates in all those areas, but one will most likely need the skills of the man pictured in the figure below if they really mean what they write. Interestingly (or sadly should i say?), that job ad was from a major player in the IT industry, who should know a thing or two about this sector, which would lead many, under the effect of a well known social phenomenon known as herd behavior, to embrace such practices only because “big cool company X does it”.
Advocates of this trend usually put forward populist argumentation such as “strong skill set”, “open mindness”, “hunger for learning”, “mental flexibility”, etc. to support this practice, trying to brainwash the more gullible minds with the belief that operating in a single well-defined camp is a sign of closed-mindness, rigidity, lazyness and who knows what else. Specialization is necessary in every complex field in order to progress because, at the end of the day, you need the competency of an expert to get the work done properly. That’s why we have specialist doctors in hospitals, not general practitioners. But we actually know why they’re doing this, don’t we? After all, who wouldn’t like to hire a polymath, someone like the guy pictured here on the side and that could potentially replace an entire team of engineers. That would be fantastic. Wouldn’t it? Unfortunately, i’m afraid that’s something pertaining more to the ideal world than the real one.
Being curious about different technologies and even wearing several hats by getting your hands dirty with things that are not your bread and butter is a good exercise to keep your learning capabilities and mental elasticity in good shape. But using technical skills in a commercial/industrial context at a competent level is a completely different matter. And i am very skeptical of the fact that one can be simultaneously competent in many IT fields given the level of complexity that this sector is experiencing. That would be a bit like expecting your GP to be competent in multiple areas of medicine and treating you with the same ability of a specialist doctor. Very unlikely.
Acquiring professional skills at expert levels takes a considerable amount of effort and time, especially in today’s world where systems, frameworks and technologies are getting more and more complex and are fast changing. Considering all this and adding that in an IT area there are several technologies that need to be learned and mastered, our poor Overflowed Stack Software Engineer will likely end up in a psychiatric ward trying to meet unrealistic expectations that are beyond the physical capabilities of the vast majority of the people.
Operating in a complex and heterogeneous world such as modern IT, that’s expanding in breadth (due to widespread adoption of digital infrastructure in all industries) and depth (due to increasing complexity), requires the services of a diverse range of professionals. Trying to work around this natural evolution of things by demanding for unreasonable skill sets in order to abide to sterile business policies will lead to months of unfruitful search and to the shortage of skills mantra.
Today’s IT is becoming a complex compound of highly specialized fields, each one requiring extensive commitment in terms of acquisition of skills and experience, creating the need for new professional roles. The era when a software developer could do a bit of everything and the results would suffice is long gone. Before this trend develops and infects other industries such that we’ll soon have Overflowed Stack Teachers or Doctors (how about a Neurocardiopneumorthoenteroncologist?), let’s hope these people and their advocates will get back into reality.