Make it work. Make it better.
Programmers, myself included, spend a lot of their time learning and debating about new ways of technically doing the same things differently (and hopefully better). There is always a new framework to learn, a new technology to master or a new tool to examine. One principle that helps me not getting lost in technical details when starting a new feature or project is:
Make it work. Make it better.
Make it work.
This phrase should be interpreted in terms of business needs, not coding standards. Our job as developers is fulfilling business needs as good and as soon as possible. Programming is a means to an end. At first we should do everything to make it work, meaning users of the product are able to do something that they either could not do before or at least better. It doesn’t have to be beautiful nor perfect.
Make it better.
Once it works, which often takes much less time than you might think: iterate. Start the feedback circle and let people use your software. Based on their feedback improve what you’ve built. This is what I understand as an agile process.
What about quality?
Making it work first, does not mean we should not care about quality. Quite the opposite, in my experience making it better by taking feedback of users into account is where quality comes from. The important part is having a closed feedback loop while developing the product. In my professional career I’ve wasted hours and sometimes days implementing features based on assumptions that were decided in meetings. This is why it is so important that programmers and designers are part of the whole decision process. They can advise to do A/B testing, building prototypes or come up with alternative solutions that fulfill the same business need, but faster and cheaper.
Not invented here.
After I had realised that I follow this principle, I searched if someone else had come up with something similiar. It’s very unlikely I’m inventing something new here. Of course a famous name popped up: Kent Beck.
Kent is one of the most important figures of the agile movement. He coined the statement: “Make it work, make it right, make it fast.” I think make it right is close to make it perfect and therefore an impossible goal. Make it fast is quite specific and I guess it was one very important aspect in a time where computers were much slower than today.
Make it better is more in line with an agile mindset, because it doesn’t have a specific goal as long as it is an improvement of the status quo. This includes making it fast and getting closer to right.
Why does it work?
The nice thing about this principle is that it’s efficient. From a business perspective stuff gets done quickly, time to market is short and development teams don’t waste time building wrong solutions. From a user perspective the product already solves problems with the first release and improves over time based on their feedback.
If there is one thing you should take away from this post, it is this:
The closed feedback loop is the most effective and efficient way of building digital products.
If you work in the digital product industry, you’ve probably heard of Slack. Slack is a messaging app for teams that managed to become a one billion company in just 2 years. Other companies tried to solve team messaging, too. The most known ones were HipChat and Campfire. Nevertheless Slack is now the go-to app for messaging.
In an interview Slack’s founder Steward Butterfield was asked, how they managed to make the app so popular. Throughout the whole interview one thing is mentioned the most: listening and reacting to user feedback from the start. This is the closed feedback loop in action. I encourage you to read the full interview, but here are some quotes from the article:
We begged and cajoled our friends at other companies to try [Slack] out and give us feedback.
There’s [a] key takeaway from Slack’s early experience: […] Wring every bit of feedback that you can from it.
Beta-tester feedback is crucial to finding those little oversights in a product design.
This is one example where getting user feedback while developing the product was key to making it a success.
Digital companies that understand the value of the closed feedback loop, have a huge advantage over their competitors. In my experience, looking at the quality of digital products and how companies operate, most of them don’t.