Editor’s note: Five years ago we launched this blog to talk about the technology we work on every day. Since then, we’ve grown more than ten times and continue to build the software that makes Indeed the #1 job site worldwide. To celebrate, we’re proud to host a week-long series of posts by Indeed Engineering Manager James Dingle. These posts highlight some core aspects of what makes Indeed Engineering a great place to work.
Word cloud based on all 5 years of IndeedEng blog content
During my year-and-a-half tenure at Indeed, I have discovered a new way to accomplish business goals with software. These principles and elements of Indeed’s culture are quite surprising; if you didn’t see them in action, you might believe any company trying them would be doomed to failure. Quite the opposite is true. While some of these principles are deliberate, some of them happened organically. This series describes my perspective on the principles of our engineering culture at Indeed.
Step One: Keep teams independent
Usually, in large organizations, the company defines a grand vision and then breaks it down into products, stories, features, and tasks. These tasks are transverse, and teams commit to other teams on deliverable dates.
When too many teams depend on each other, hitting dates becomes more important than the actual value delivered. As the deadline approaches, teams start to cut out pieces of their planned work, until the product attractiveness becomes lukewarm, its features unbalanced, and its user experience confusing.
The enterprise culture suffers, too. When teams slip on their due dates, the org can drift to finger-pointing and defensive management. In most software products, these dates are not bound to any external event, but some managers still behave as if the project is date-driven.
Engineering new products means a great deal of uncertainty about the difficulties ahead and how much time it will take to overcome them. Beyond a certain size, adding a buffer to estimates does not guarantee success. This is why smaller, independent teams are so important.
Independent teams (and uncertain dates) may frighten executives who like big milestones on a calendar. They might believe milestones are a source of clarity, motivation, and accountability, internally and externally. They might think that if the product turns into a flow of sand of features, they will not control it. They might think that if there are no dates, people will become lazy, wander eternally and never ship anything. But in reality, employees have multiple reasons to stay realistic.
Independent teams are beneficial for the team and for managers.
For the team, independence ensures:
- less friction
- more identification with the product by contributors, which in turn triggers more motivation and initiative
- most decisions by the team, where context is better understood
For executive management, an independent team:
- is accountable for the true business impact it delivers
- diminishes the risk of a global impact on the company’s strategy if the team fails or is delayed
- can take more risks
What you need to keep teams independent:
- An efficient deployment pipeline so teams can push or roll back their bits as they please.
- Goals and metrics only they can move.
- A test framework to evaluate the impact of new features and experiments.
- An efficient data collection and analysis pipeline.
Indeed has focused on developing the four abilities above while growing rapidly. Goals come top-down, and innovation rises bottom-up.
In the next post, I’ll explore the importance of making better mistakes.
Cross-posted on Medium.