This post lists the key insights from this article, from HotJar’s VP of Engineering, Mohannad Ali.
What great engineering teams do
Agile engineering teams understand how their work fits into the larger company strategy. They make data-driven decisions, ruthlessly prioritizing their work (and reprioritizing when necessary) based on what will deliver the greatest return for the company.
Their focus is laser-sharp, and they consistently communicate the business case for each project so the rest of the company understands why those priorities matter.
What does a VP of Engineering do
A VP of Engineering offers leadership and support to the engineering team and helps maximize their growth, impact, contribution to the business, and overall happiness.
What this actually looks like on a daily basis for the author at Hotjar:
- Working on attracting, retaining, and growing top talent
- Aligning tech strategy with the overall company strategy
- Organizational design and capacity planning
- Collecting and sharing context so the rest of the company understands the business case behind every project
How to build and scale a world-class engineering team
Before joining Hotjar, I was managing a team of about 160 people as their VP of Engineering and Product. In my experience, the key to the success of a team and a company as a whole is one: building momentum. In many cases, when a team seems to lack urgency, the root cause is not laziness or apathy—it’s an absence of momentum.
The importance of building momentum—and how to do it
When a team experiences a win, it sparks motivation, which produces additional wins. Winning has a snowball effect, where the more you win, the more you keep winning.
So how do you build momentum? In physics, Momentum is defined as Velocity multiplied by Mass, so if you want to optimize for momentum, you have to increase velocity. In software engineering, the best way to boost momentum is to achieve quick (high-velocity) wins in areas that have the greatest impact (mass).
Part 1: maximizing your mass
Maximizing mass is all about impact—on your products, your customers, and your bottom line. As such, you must ruthlessly prioritize (and frequently re-prioritize) your projects to ensure you’re achieving the greatest return on your efforts.
What does that mean? To be successful, engineering teams (as well as product development teams, technology teams, etc.: the logic always applies) must:
- Make data-driven decisions, where they value analytical rigor over hunches, ego, and personal opinion
- Develop a business case for every initiative they work on, regularly communicating the rationale behind each project
- Maintain focus and resist the temptation to do too many things at the same time
- Be agile and adaptable, responding quickly to changing market conditions
Part 2: maximizing velocity
This principle is illustrated by three pillars:
1. High-velocity decision making
Here are its four basic principles:
Principle #1: most decisions can be made (and reversed) quickly
Some decisions are highly consequential and irreversible. These ‘one-way doors’ represent decisions you have to get right the first time, so they shouldn’t be taken lightly.
Most decisions, however, are ‘two-way doors’ that can be reversed with very little effort, which makes them excellent candidates for high-velocity decision making. They have light-weight processes associated with them, and you can measure success or failure quickly. Then you can reverse the decision if it doesn’t produce results, so there’s no harm in making decisions quickly when you reach a two-way door.
Principle #2: don’t confuse buy-in with decision-making by committee
Decision-making by committee is costly and ineffective. Instead of having the 75 people in the company make the decision by consensus, teams need to trust that a group of people has the best interest of the company in mind.
Of course, you should do what you need to do to get the buy-in from other people on the team and gather feedback from different departments; in the end, you need to empower teams to make the final decision on their own when it comes to reversible decisions.
Principle #3: make decisions with 70% of the information you need
It’s tempting to wait for near-certainty, but it’s also costly. If you wait until you’re 90% certain before taking action, then you’re moving too slowly for the high-velocity model. Instead, learn to make decisions with 70% of the data you wish you had.
Principle #4: become good at course correction
When you adopt this model, you have to be good at quickly recognizing and correcting bad decisions. If you’re good at course correction, then being wrong will be less expensive than being slow.
2. Shipping fast and learning quickly
As Marty Cagan discusses extensively in his book Inspired, there are two inconvenient truths about products:
- Roughly half of the initiatives you launch will not have the impact you’re expecting them to have on the business. In fact, good teams plan for 75% of their ideas not working.
- Ideas that actually work will typically require multiple iterations until they get the business impact you expect.
Here’s a way to visualize this principle at work:
The peaks in this graph represent successes, and the dips represent failures. You’ll notice that the red curve (a high-velocity team) has four times as many peaks as the blue curve (a low-velocity team).
The red team also has four times as many failures—but that’s a good thing because that’s four times as many learning opportunities. In other words: the red team has more opportunities to validate their assumptions within the same time frame, which gives them a huge competitive edge over the slow, laborious blue team.
3.Improving the efficiency of execution
Standardizing the following procedures will improve efficiency:
- Quick flagging and removal of blockers
- Smart Minimum Viable Products (MVPs): 80% of the value comes from 20% of the effort, so focus on the features that offer the highest return
- Optimizing the use of group time (meetings culture, means of communication, push/pull updates) and using other means of collaboration when they’re more efficient
- Improving the software delivery process: technology, infrastructure, and tooling
- Encouraging a ‘disagree and commit’ attitude. In other words, no final decision should be reached because somebody has been exhausted into submission; a better way forward is to disagree and commit, so the team can move forward and quickly escalate if it’s needed.
Hiring the right people
This should be obvious, but in order to build momentum and accomplish everything I’ve laid out above, you have got to hire the right people. The best processes in the world won’t work unless you have a team that is open to giving them a try.
So, what should you look for when hiring software engineers?
- Open-minded team players: someone might be a brilliant engineer, but if they’re too rigid to explore a new way of doing things, they may end up being our weakest link and slowing the team down
- Skills that exceed ours: we all have our strengths and weaknesses, and a good team is composed of people whose knowledge and intellect complement one another
- Strong communication skills: if we can’t communicate our ideas to others within (and outside) our department, it will definitely create barriers to success.
- Low ego with high self-esteem: this may seem contradictory until you dig a little deeper. Think about the most confident people you’ve worked with—more often than not, they’re willing to admit when they are wrong because their self-worth doesn’t depend on being right all the time.
- Ruthless prioritization and pragmatism: pragmatic problem-solvers understand and embrace the fact that software is never done nor perfect.