The product approach in outsourced development. Behind the scenes at a major IT integrator. Part 2

Practical aspects of choosing between product development and outsourcing: timelines, quality, and team control.

  • Myth About Outsourcing
  • Myth About Product Companies
  • Interesting, creative tasks that are easy and enjoyable to work on
  • Code quality, code culture

Reading time: 5 min

In the first part of the article, we examined two common misconceptions about working in product and outsourcing IT companies and found that objective quality assessment and recognition of developers' achievements do not depend on the company type.

The key point is how responsibility for the future result is distributed and how the relationship between the client and the developers is structured.

Is this a partnership, or blind execution of a technical specification?

Let us look at three other misconceptions.

Myth About Outsourcing

Outsourcing is a kind of assembly line, where clients come and go quickly. The main thing is to deliver the project on time. That means working within strict constraints, because deadlines cannot be missed.

Myth About Product Companies

A product is always a long-term relationship. You can work on one product for years, put your soul into it, and nurture it like a flower or a child. That is a different, higher level of relationship than assembly-line production.

Reality

  1. Projects at a large IT integrator are far from just building a little website.

  2. They involve a huge amount of work, often spanning several years: complex integration or enhancement of unique modules.

  3. In that case, the working relationship is closer to a partnership.

  4. They are long-term, and in the Agile paradigm they are not limited by time at all: a product can be improved endlessly.

  5. Many of our clients have maintained long-term partnerships with us.

  6. This includes continuous product development, making difficult management decisions, and improving approaches. For example, for one major online store, we decided to change the architecture: we are moving to microservices and completely redesigning the frontend.

  7. This is necessary so the client can achieve new ambitious goals set for 2020-2021.

  8. For clients from another company, we brought all the scattered services together into a single ecosystem.

  9. We spent more than a year digitizing their business.

  10. We developed rules for building the system architecture and created several services. For example, a document recognition service, a mobile app for warehouse staff, microservices for routing orders on conveyor lines, and much more.

  11. There are always schedule requirements, of course.

  12. Any business works with limited resources and cannot wait forever for value delivery.

  13. However, the product approach means not building more features per unit of time, but building the most valuable, highest-priority features by selecting them from the backlog.

  14. The team also determines the risks around time estimates independently and daily, just as it independently determines the scope of work. And timelines are increasingly forecast in quarters and half-years, while instead of features we start talking with the client about outcomes.

  15. This is the most important skill, and it is what distinguishes an engineering team from a coding team, just as a typist is valued for the number of characters and a writer for the meaning.

Myth About Outsourcing

Custom development is considered boring because you always have to think about business metrics. Employees often leave outsourcing companies if they are moved to a project that does not interest them.

Assess where AI can deliver impact in your process

Myth About Product Companies

In product companies, you can improve and grow an existing successful product, such as Yandex products. That seems easier, since the main part of the product is already built, and it is also rewarding to help create useful software used by thousands of people.

Reality

  1. An engineer is not someone who churns out perfect little abstractions in a vacuum, even if they are beautiful and packed with unusual features.

  2. It is someone who solves practical tasks with maximum economic efficiency. Everything else slows the work down.

  3. Interesting tasks also exist in custom development, if you see the client not as a one-time customer but as a partner for the long term and take your work seriously. In addition, outsourcing companies are often freer in their choice of technologies.

  4. If you are interested in learning something new, go for it!

  5. After all, what matters most to the client is achieving business goals.

  6. If it can be done faster, he does not care which technologies IT specialists use. For example, two talented team members decided to learn Ruby and moved to the relevant project within two sprints!

  7. That allowed them to find the best solution for the client’s tasks and learn a new stack. But what if they had proposed changing the stack in a product company?

  8. That is hardly possible for a product that supports the whole team. We allow rotations between projects.

  9. If a project is a complete nonstarter, the developer can move to another team with different tasks.

Myth About Outsourcing

In an outsourcing company, little attention is paid to code quality. The expectation is that once the project is delivered, the contractor will not see it again, and therefore bears little responsibility for it. The flip side is that a project can be handed off after this kind of coding, and then you have to clean up the accumulated problems.

Myth About Product Companies

A developer builds their part of the product from scratch and does not have to deal with someone else’s code.

Reality

Product and outsourcing companies share the same pain point.

It means being tied to someone else’s old code if you start working on a product after launch.

The problem will be solved when a strong code culture is embraced by all developers, regardless of which company they work for.

No magic fix for someone else’s poor-quality code has been invented, because it exists in every type of development. By the way, there is a well-known story: in 2014-2015, Microsoft laid off almost the entire Windows testing team.

This was connected to a new product testing paradigm, as well as new product and HR policies.

After that, the developers started complaining about their own company’s code quality, and users noticed that there were more bugs.

A product company through and through, with no quality guarantees

Outsourcing development is impressive precisely because it strips away everything unnecessary. In companies that specialize in complex solutions, engineering culture plays the leading role.

Without it, projects would quickly become unprofitable.

Unlike product companies, we do not have time to gather huge numbers of people with trendy job titles, spend all our time in endless meetings, and blur the goals.

We often hear developers say that in a product company you can spend a day thinking about architecture. Hmm, maybe.

But how often does a product actually try a new architecture or a new approach? In complex outsourcing work, to test something new, you simply move to another product team or a new project. And the variety of metrics and business areas broadens your perspective.

Conclusion

  1. So, in this article and the previous one, we looked at five typical objections developers raise about working in outsourcing companies.

  2. In fact, these are myths. Today, outsourcing and product culture are not opposites.

  3. Product thinking can and should be developed in any company, and prejudices about outsourcing are outdated in most cases.

  4. The essence of product thinking is how goal setting is structured and whether the team is accountable for product metrics.

Discuss the article: Product Approach in Outsourcing Development...

Send via: