Build effective software product teams

  • Centralized and military top-down structures
  • Planning and coordination done only by management
  • Strict work policies
  • One skill job positions
  • Department boundaries defined by functionality
  • Rewards based on individual performance
  • Employees viewed as tools
  • Employees accept the factory workers role

1 — Small teams

If we work in small groups, it is easier to share the objectives, make sure that everybody understands them and we all are going for the same goals. In a team, the most important thing is the communication, but have you considered how many connections do you need depending on the size of a team?

2 — Business oriented

The development people should communicate often with the business people to understand the needs of the business, so they can deliver software that properly meets the business requirements. When this communication is lost, it leads to loss of the coherence between the business function and the code produced.

3 — Technology led

Everybody in the team should understand the technology they are producing. After all, we are talking about a software product, so everybody should know about it. I am not saying that all the members should know how to code, but understand it properly to fully comprehend the value of the technology behind the business value. And also very important, value the work of their tech colleagues. I personally have seen (two) companies go bankrupt because product managers or sales people didn’t understand what they were doing or selling, and in both cases directors and developers were completely aligned.

4 — Autonomous

Every individual should be able to work in an autonomous way. Mostly, this is already happening in some business or sales units for instance, but it is not that common to happen within the development team. Some companies still have one trick pony developers, that require from the job of other developers to accomplish their own job. We don’t want developers that only work in UI or just databases, we want developers that can bring business features all the way from databases, backend or frontend into production. They should be able to deliver useful software to the business and this requires having the ownership of everything from development to production.

Extra: Trust

Trust is the glue that ties all the previous points together. Within a team, members should not be afraid to ask for help when needed. They all should be keen to share knowledge of any kind. They should not blame other team members. Peers have integrity in their responses, when asked “what do you think?” there are no hidden feelings going on…



Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store
Josep Mir

Josep Mir

Software engineer as a profession, frustrated musician as a hobby, casual sportsman and social drinker in my free time. My personal blog: