At Omada Health, we have a set of values that guide everything we do as a company. This post, however, is not about our company values, but the values held by our Engineering department. These are the principles that drive the work we do as software developers, data scientists, and infrastructure architects. These values are the product of brainstorming by the management team, and were given shape by input and healthy debate across the entire department. (As with any exercise in identifying guiding principles, there was very little that was clear and obvious from the get-go.)
Our Engineering Department’s values, in no particular order, are:
- Data-Driven Approach
- Mindful Collaboration
- Shipping Software
- Diversity & Inclusion
- Learning & Innovation
Today’s post concerns the first of those, and future posts will go into detail on the others.
When we talk about sustainability, we aren’t referring to ecology or economics, so I’m not going to talk about renewable energy or fair-trade crops. For us, sustainability means pacing ourselves, thinking about the future without losing sight of present needs, and remembering that professional software development is a marathon, not a sprint.
As it applies to Engineering at Omada Health, sustainability means, among other things:
- Preventing turnover
- Avoiding knowledge silos
- Shipping quality, well-tested code
- Having a strong relationship with our Product teams
Putting it into practice
We’ve put this value into practice in a number of ways, whether it’s promoting a healthy work-life balance, practicing pair programming (it’s our default mode of operation), or taking the time to refactor old code. We practice test-driven and behavior-driven development (TDD and BDD), which we combine with comprehensive monitoring of key performance indicators (KPIs) and system health, to help surface anomalies and outages as quickly as possible.
In service of sustainability, we practice some tenets of Agile software development. The principles that are most important to us:
- Starting simple and improving iteratively
- Continuous delivery of working software
- Being responsive to changing requirements and circumstances, especially when they are beyond our control
- Allowing our teams to organize and run themselves
- Face-to-face communication
- Close alignment between the Product and Engineering teams
- Regular retrospective meetings to reflect on, and make adjustments to, team processes
How does practicing sustainability help us?
First and foremost: teams made up of happy people are more productive. (Who knew?!) Through promoting a healthy work-life balance, reasonable working hours, a culture of inclusion (more on that in a future post), and building and nurturing cohesive teams, our people enjoy coming to work, and they are motivated to make Omada Health a leader in helping people live free of chronic disease.
On the more technical side, we know from experience that keeping things simple is challenging. How do we decide what needs to be included in an MVP, and what can be added in a later iteration? How do we identify what we need to do now, what we’ll definitely need in the future, and what we might need later on? Answering these questions requires a firm understanding of the problems we’re trying to solve, and putting those answers into practice requires buy-in from stakeholders. (Then there’s the question of identifying your stakeholders!)
Of course, we want the software we build to last. TDD, BDD, and pair programming are effective ways of preventing knowledge silos, documenting expected behavior, and getting input from multiple people. What’s more, we encourage everyone to include refactors of old code if it gets touched through the course of writing new code. And taking the time to do refactors now will make twelve-months-from-now you very happy.
Lastly, doing all these things is impossible if the relationship between the Product and Engineering teams is broken or lacking in trust. We encourage a healthy relationship between Product and Engineering by ensuring that they are constantly working closely together, and always able to communicate. Whether that’s in daily stand-ups, planning sessions, retrospectives, or ad-hoc conversations, the key is open, honest, and clear communication.
At the end of the day, we like feeling proud of the work we do. We want our work to have a profound and lasting impact on the lives of our participants. The surest way to ensure that our work will endure is to practice sustainability across the board, every day.
Reference: 12 Principles Behind the Agile Manifesto