The secret of highly productive engineering teams
Productivity of software engineering teams can vary a lot, so what makes some teams much more productive than others?
Ever thought about what makes some engineering teams highly productive as compared to others? What such teams do differently than others?
Can it be due to difference in skills of engineers in different teams?
Well, somewhat that’s true. Good technical skills matter. But I have seen engineering teams, which even with technically skilled engineers, are not as productive as some other teams.
What other thing is different? Good product management?
Hmm, that’s again partially true. Effective product management is crucial, and the value of what engineers deliver truly relies on how well the product roadmap is designed. However even with great product management, some engineering teams are still not productive.
So there can be numerous factors that can contribute partially in enabling engineering teams to be more productive. What if I told you that there is one secret sauce that can drastically improve the performance of an engineering teams? Would you agree?
Here’s the recipe of that sauce.
Highly productive engineering teams take efficient and effective micro-decisions.
Let me explain in detail.
In various organizations, often the strategic decision making is done by the top management. Most of the times it defines what products to develop and what services to offer. Such decision making can be termed as macro decision making.
Then there is a product team which decides with management the roadmap and plan for the product. After that, engineering teams are asked to initiate the development of the product.
Engineers can then work in two ways, either completely rely on the product team for each and every nitty-gritty, or they can take efficient and effective micro-decisions.
Relying on product team all-the-time makes engineering teams sloppy. Although product managers can help in creating a solid roadmap and well-groomed user stories. However no matter how well groomed the user stories are, there still remain unknown areas and questions which are usually explored during implementation. Since product managers cannot be available to provide every specific detail of the user stories every time, the engineering teams that overly rely on product team for every decision will wait for a decision from the product manager to continue their work.
An example can be:
There is a requirement of greeting the user with a welcome message when they open up the home page of the website. Engineering team starts to develop the feature, and during development they realize that they need to take a clarification from the product manager. Clarification about if the user is already on the home page and they refresh the page, so should the user be shown the welcome message again? The answer can impact the amount of effort to be put in developing this user story.
This is a micro-decision.
So engineering teams that rely on product team for every decision will be hesitant to take such micro-decisions themselves. What if there are dozens of such micro-decisions every week that engineering team did not take themselves? Result would be slow product development, and would make the engineering team less productive.
On the contrary, there can be those engineering teams, who do not hesitate to take such micro-decisions. They would think themselves about the intention of the user in a user story, and try to place themselves in their shoes, and come to a conclusion quickly and continue the development. Sometimes such decisions can be wrong and can result in few hours of wasted-effort, but many times it will save the idle time that results in indecisiveness that may result in several hours of no-effort.
Prerequisites
There are few prerequisites that enable taking such micro-decisions.
Such engineering teams should enjoy Guided Autonomy. Autonomy to engineering teams means that they should be empowered to experiment and take initiatives on their own, their opinions should be respected, they should enjoy freedom in making their own choices without any micro-management. Guided Autonomy enables the engineering teams, and provides them the due freedom as mentioned above, but it also helps them minimize any temptations and unjustified work by the guidance from product team and senior engineers.
Such engineering teams should develop a Detailed Understanding of the Product itself. They should understand what the customer actually wants, and think themselves as customers when making micro-decisions. They should be aware of the impact they are making by working on each user story. They should also be aware of the overall impact of the product that they are developing.
Such engineering teams should have Courage and Courtesy. Courageous to take bold micro-decisions that simplify and pacify the product development. Humility when their decisions are questioned, they should be not take that as personal, and elaborate logically the rationale of decision making.
Such engineering teams should enjoy Trust and Appreciation from the product team. They should never be micro-managed. Whatever the decision they take, the product teams should demonstrate trust in them and should appreciate that by taking such decisions the engineering team wants to help the development of product to be smoother and efficient.
Concluding the discussion on a quote from an article on Harvard Business Review about the importance of efficient and effective micro-decision making.
What many companies don’t realize is that micro-decisions — small decisions made many times by many workers at the customer interface — can have a major impact on the business. How they are made can be the difference between sloppy and effective execution, and between profit and loss.
I hope that you find this discussion to be informative. Let me know what you think in the responses to this story.