Swiss Army knives or Allen keys?
Tags: development, team, specialization, learning
Published: 2022-09-27 09:58:07

When you have to choose a tool to perform a task, you always have two options. You can go to the shop and buy a super versatile Swiss Army knife that will provide you with a lot of options for many different tasks, or you can go and buy a specific tool for a specific task. It will work perfectly for what you need it for, but you won’t be able to use it for anything else, like an Allen key.

With the Swiss Army knife, you’ll be able to tighten certain screws, cut a piece of string, break a branch, build a spear, etc. On the other hand, with the Allen keys, you will be able to tighten hex screws only. So, it looks like an easy decision, doesn’t it? Go and buy the Swiss Army knife and you’ll have a tool that you can use for many situations, and you know it won’t just be thrown into your toolbox and never used again… 

But … what if you need to tighten loads of hex screws every day and have to do it quickly? Now, the decision to buy the Swiss Army knife doesn’t sound as obvious. Even though you know that you’ll use the Allen key just for that specific task, you’d probably prefer to have the best tool for the job.

In **development**, when we have to **build a team** and **distribute the work** between the team members, we have to make a similar decision. Do we choose the Swiss Army knife or the Allen key?

If I told you that you could have a team where all the team members could develop, test, define tasks, create the infrastructure, manage the deployments, automatize CI/CD pipelines, etc, and do it all really well and fast, it would sound like a dream come true, and you would sign up without question. But achieving that is no easy feat. It would take a long time and a lot of effort from the whole team, and that **investment** would also have to be applied to new members that recently join the team.

So if you think of the long term, and assuming that time is not a concern, I would say “Go for it! You will build the best team ever”. But working on a project where the timeline is not a constant concern doesn't usually happen, because in our business, **time is money**.

For most people however, the normal situation is to have **strict deadlines**, because the client is waiting for an application, and the team has committed to delivering the product by a specific date. Usually, whatever that timeframe is, it’s never enough and we always have a lot to do during the final days leading up to the deployment.

So, that means we need to **optimize resources**, and try to get the best out of everyone if we want to meet the deadline successfully. And in that kind of situation where we have adjusted timelines, having **specialists** for each task would be the best option. We can take advantage of each person’s strengths, and as a team, achieve our objective.

This is the eternal debate of “**specialization vs versatility**” but history tells us with [Taylorism](https://en.wikipedia.org/wiki/Scientific_management), [Fordism](https://en.wikipedia.org/wiki/Fordism) and [Toyotism](https://en.wikipedia.org/wiki/Toyota_Production_System), that when **productivity** and **efficiency** become key for any requirement, specialization is the shorter and more successful path. And I have to say that I agree with history. Having a team where you could put anyone on to any task without affecting the **performance** of the team is simply not realistic. Everyone has their own strengths and weaknesses, and everyone has their own skill set. Having a team of clones, where everyone is a champion at everything only happens in the best sci-fi movies. In my opinion, a good team leader should know their team and take advantage of the **capabilities** of each person. They should be able to configure the team where they complement each other, leveraging their strengths and focusing on the tasks that they can nail.

Of course, investing in **learning** should be a top priority for any company, because at the end of the day people are what really matter. They must be the center around which the company should be built. And the only way to achieve that is to provide time and create an environment where your team can learn, increase their skills and grow professionally. They are the seeds, and with the right environment, they will grow into an extremely strong team. That is the long term goal, a team of Swiss Army knives. But when a project requires fast and decisive decisions and actions, choosing specialization over versatility is the key.