Is Outsourcing Killing Developers
Published: 2023-04-23 12:44:44

I live and work in one of the Balkan countries, Belgrade, Serbia. After the sad '90s, all countries in the region try to catch up with the rest of the world. That led to a boom in IT. A large portion of IT is outsourcing companies. Some companies are domestic, and some are foreign. Also, some companies opened their R&D centers in the region. Small and big as well. There was and still is a large number of startups.

Today, outsourcing is still a big chunk of IT here. Things are changing, but slowly.

## My Way of IT

I worked for various companies. From startups to big corporations. From small projects for a handful of people to large ones serving millions of users. On some projects, I had a small role, while on some, my part was noticeable. About two-thirds of those years I spent in startups and outsourcing companies. I think I'm in the middle of my carrier at the moment.

⚠ _Small disclaimer. I do not consider myself an expert. I have some experience. I think. Let's say that I like my work
to speak for me._ ⚠

These are some principles that I gathered over time:

* _Things change over time_, especially in the business. Do not get attached to your code. It is legacy at the moment you write it.
* _Prioritize_. Everything is doable, but not at the same time.
* _If you have to work extra time, the plan is wrong, or you need more knowledge._ So, either you get trained, or the plan needs to
  be changed
* ❗ __Know why you are doing it.__ Be familiar with the business goals.
* ❗ __Leave your 💩 at the door.__ Do not bring your problems to work. Do not bring your work problems home.

Sorry, but I need to be honest. I'll explain myself at the end.
  
## Startups 🏃 🏃 🏃 🏃

_A startup reflects the founder's personality_, especially at the beginning. One thing is sure. You have to work a lot __chasing MVPs.__ The startups are great for learning about tech and business, people, office politics, sacrifice, etc.

While a startup grows and matures, the dynamics change. As growth happens, more people join the startup. Then, the startup needs new ways to structure the team, processes, and tools. While it was easy to discuss and do things at the begging, at this moment, this is not the case. More people, more dynamics, all that lead to new processes. Those processes are needed to keep the teams on the same page. That is a moment when the startup starts to mimic the product company but wants to keep the startup flavor. Also, it is the moment when some people begin to leave. Most of the time, it is because of a new dynamic. Some individuals like the chaos and hurray of the startup, but that dies with the growth.

Suppose you join later when the startup matures and has a solid foundation. In that case, it looks more like working for a product company. Still, there is a lot of work to do regarding the product itself and the processes around it. While it is an excellent place to learn and thrive professionally, it can be very demanding. No matter how mature it is, there is much work to make it stable and sustainable.

## Product Companies 📦 📦 📦 📦

Product companies are the ones that have a product that they sell. They are willing to _invest in new tech and people to give them an edge_. These organizations are running a business in the long run.

For me switching from an outsourcing company to a product company was a significant change. It took me some time to digest the difference and realize what I could and needed to do. It was a time when the company that I joined was transforming technically and organizationally. __But when the company builds a healthy culture, it supports its members. In every sense.__

Early on, I got copies of **The Phoenix Project**. Reading that was an eye-opener. It is frustrating when you read it because you'll realize you already know all those principles. But the trick is to formulate them and act. Trying to apply what I learned from it and its sequel **The Unicorn Project** and **The DevOps Handbook**(bible) significantly changed how I work.

Today, tech changes so fast. Mainly to support the business. That is why teams need the freedom to learn and experiment
to create new opportunities for products. Investing in people is a need if a company wants to grow.

## Outsourcing Companies 💦 😰 💦

No matter how fancy they are or how much sweet talk their HR does, they care only about client satisfaction. How will one do in such a company depends on many factors.

❗ _The most important one is the client._ The client is coming with the budget to do a project. An outsourcing company promises to deliver that. If clients already have outsourcing experience, it is a smooth ride. If the client has yet to gain any outsourcing experience, good luck.

_Soft skills_, this one is quite important. As you can not choose co-workers and clients, you have to be able to find a way to work with different kinds of people. Communicating with people from different cultures, backgrounds, and education is necessary. Also, you need to be able to convince clients to trust you. Your team needs to trust you, too. And you need to trust your team. That can be hard.

❗ The process in outsourcing companies has a goal to _track hours and what is delivered._ Yes, many of them in daily work use agile methods. But, in the end, what is important is how much you worked and delivered. That is why most outsourcing companies invest heavily in processes and tools around
them. That often leads to unnecessary bureaucracy, like the developer does not start working until the ticket is well defined and has all the details. To push not planned work, a client reports a bug. Etc.

❗ Once a project is over and the client is happy, the part of the team moves to the next project. The rest stays to support the project. Maybe you can choose to remain in the project and retire 😀 But, in general, you will move to the next project.

❗ The downside is that outsourcing companies are looking for people with specific skills. So, if you do not have them, you do not get hired or hired but do not get paid how much you wanted. Learning new things is more complicated. You are doing it outside work hours. That is because you are not paid to learn but instead to deliver. So, it takes work to get and keep different skills up to date. It could look like working double shifts.

❗ Influencing system design as a whole is challenging or impossible. In such teams, roles are strict. So, your job is to do what the ticket says, and that is it. There is someone who is creating tickets and doing system design. Whit such a concept, having groomings, retrospectives, and other agile ceremonies is pointless. Depending on the team, that can lead to a lot of frustration. If people that lead the team are willing to share responsibility, and the rest of the team is ready to accept responsibility, only then agile is justified.

## The Good, Bad, and Ugly

If I put together what I mentioned above, I can say that outsourcing has its primary goal of making money. That it is. It is a business. You have the skill, clients need it, and you exchange it for cash. Simple. The problem is that you focus on a small tech area and a small set of issues. You can say that
you are becoming a specialist. Chasing to be a full stack, whatever that means. Making clients happy and then moving on is your goal.

Startups and product companies are different. They have to have an idea. Around that idea, they are building a product. That is a never-ending story. So, to survive, they need to take a risk and experiment. Tech is there to minimize the risk and to support the business. That is why they must invest in people and empower them to learn and experiment. To take responsibility. To be able to make decisions. To be able to fail. To be able to learn from mistakes.

In the end, we are all people. We can't just sell our time. We need to be proud of what we are doing. That is why we need to understand the goals and be able to influence them.

Next time you are angry at your boss or colleague, or process, ask yourself why you are doing it. Am I at the right place? If you bring your anger home, you are in the wrong place. No matter how high your salary is, it is not worth it. You need to be in a better place if you can enjoy your work, express yourself, and give and receive feedback. That is not happening in many outsourcing companies. They are just coder factories.

I do not say that all startups and product companies are fantastic. But eventually, they had to start transforming to survive.

Who is the good, bad, and ugly? It's up to you to decide.

I'm sorry if I sound like a preacher. It was not my intention. Thank you for reading, and I hope you enjoyed it. If you have any questions, please ask. I'll be happy to answer.