Whether you prefer “perfect is the enemy of good” or “perfect is the enemy of progress”, the idea behind the two phrases is essentially the same; focusing on perfection often hinders our ability to make meaningful progress and results in diminishing returns in the long run. Despite this being a relatively well understood and acknowledged concept, many teams still struggle with the idea of trying to achieve perfection when it comes to building software.
Truthfully, this was something that we struggled with for a long time at ZenHub, especially in our early days. While we aspired to get new features and functionality to our customers as quickly as possible, we constantly battled with the idea of what would happen if we delivered an experience to our users that wasn’t fully complete. Would our customers lose confidence and leave for another product? Would our reputation that we had worked so hard to build suffer?
While we recognized the need to move away from this “perfection” mentality, things only seemed to get more challenging as we grew. With more teams paying for our product, the stakes felt even higher. Things hit a particular breaking point during the development of ZenHub Workspaces—a project that was initially scoped to take three months that ended up being delivered more than a full year behind schedule with a significantly reduced scope.
We learned a lot from building Workspaces, but among the most important lessons was the idea of iterative development. Rather than wait until the entire feature was completed to release, we realized the need to move incrementally and release our work in phases. Not only would that allow us to deliver value to our users faster, it would provide us with multiple opportunities to gather feedback throughout the development process and improve the end product.
Despite recognizing the value of iteration, it was still very much a foreign concept to our team. Having never offered early access to new features and without a formal beta program, we needed to develop a framework for how we could make new experiences available to teams. More importantly however, we needed to evolve our company culture to embrace iteration and be more comfortable with taking risks with product development.
While we had an informal set of principles that we operated by as a team, we had never taken the time to reflect these into a formal set of company values that we could live in our day to day work. Embracing risk and iteration are not things that come naturally, so to ensure that the entire team was bought into this way of working, we made “experimentation and iteration” one of the five core values that define our working culture and how we operate as a company:
Experiment and Iterate
“We push the boundaries of what's possible by continually experimenting with ways to drive better, faster results for our business. We're not afraid to fail, instead we learn from it.”
In addition to calling out “experimentation and iteration” as a core company value, we also made a point to recognize team members for incorporating this value into their work. To do this, we leveraged a company wide channel in Slack and encouraged the team to call out examples they saw of their colleagues experimenting. We found this not only helped cement the values for the team, but also to get people in the practice of consistently living them.
Living our values
“Experiment and iterate” has now become a blueprint for how we approach product development. Instead of building up towards a single release, we now often incorporate alpha and beta phases into the planning for most new features and experiences. Having an alpha period allows us to test and validate the feature in our own internal workflow, before opening things up to a wider audience of external users as a beta program.
A recent project where we’ve lived this value is our ZenHub Board 2.0. Boards are a critical component of ZenHub that most teams interact with on a daily basis. Unfortunately, because of the way our current board is built, it doesn’t always perform as the number of Issues a team is tracking scales up. As this was becoming a major point of friction for teams, we set out to completely revamp our boards with a progressive loading experience.
In accordance with our values, we started with an alpha version that would contain only the basic board functionality, ie. no filtering, no sorting by priority, etc. While this initial experience was limited, it allowed us to quickly get a working version of the new board out to users so that they could experience the speed and progressive rendering of Issues first hand. This also allowed us to collect early feedback from users around which functionality was most critical.
While the project is still ongoing, our development process has been night and day compared to previous features like Workspaces. By embracing iteration we’ve been able to deliver value to our users faster than we ever have before, while gathering important feedback around our upcoming beta. In the end, we may even be able to limit scope further and release a final version of the board faster based on the feedback we’re actively collecting from users.
Here’s what our Head of Technology, Ev Haus, has to say about the alpha and beta ZenHub Board 2.0.
“Building your product in the open is amazing for many reasons. One of the best reasons is that it allows you to validate your work with your real customers early and quickly. We shipped it as an early alpha to customers before many of the features were ready and we continuously get feedback along the way allowing us to course-correct and ensure we’re focusing on what matters most. We slowly expand the number of users as we gain more confidence, which increases the feedback volume and increases our confidence in the work. The new board is going into a wider beta this fall, and we can’t wait to hear what our users think of the progress made so far.”
Summing it all up
While defining our company values wasn’t the only change we’ve made to increase our pace of development, it set a strong cultural foundation on which we could build upon. Embracing "experimentation and iteration" as a core value forced us to re-evaluate the way that we plan new features and experiences, and think about ways to deliver value to our customers earlier.
For teams facing similar challenges when it comes to the pace of development, looking inwards to your company values can be one of the most powerful places to start.