Recently, it had dawned upon me how similar building software products was to baking sourdough bread.
To set the context, let me share some background and a little story. My fiancé, Marko, and I are consultants in the tech space and LOVE food. We often work long hours so by the time we factor in a social life, dining out was the norm and cooking/baking was the exception. After many years of excuses, we began to question the quality of ingredients and food which we were eating from restaurants, markets and grocery stores. One weekend about 6 months ago, we were having a conversation about the weekly purchase of artisan bread, which led to a personal challenge of “how hard could it really be to make our own bread”.
The conversation went a little something like this:
Me: “I like this sourdough too, but why is this it ‘better’ than the ones from Harris Farms or Woolworths?”
Marko: “It tastes better.”
Me: “But at $10 (compared to $5) per loaf each week, it would be good to know…is it healthier?”
Marko: “I’m not sure.”
Marko: “Actually, how hard could it be to make bread anyways? Let me take a look (and simultaneously opens Google on his mobile).”
Whilst it might sound like a typical couples conversation, this was “the end of the beginning”. A sequences of events, research and experimentation had begun. We both learnt a lot about bread, it’s history and the difference in store-bought bread compared to the bread is that baked at home with homemade sourdough starter.
Here are four facts about why real sourdough (and homemade) bread is healthier than store-bought bread:
It’s amazing that bread is the most widely consumed food in the world and that it’s been apart of our diet for approximately 30,000 years. Let’s take a look at the 7 commonalities that we noticed between homemade sourdough bread and software development.
When we don’t understand how a particular technology works, we apply the “brute force” method by default. Likewise when making our first loaf of sourdough bread. It’s all about trial and error but it may not be the most efficient for reaching the imagined goal. For example, when making a decision about how much to invest into developing a software product, we are often emotionally distracted by a combination of capturing the opportunity and the funds that we’re willing to pour into it.
When making real sourdough bread, bakers use something called “sourdough starter” (aka natural or wild yeast), instead of commercial yeast. The starter constantly needs to be “fed” in order to keep it active and to maintain its ‘strength’. Additionally, the process for making the dough takes patience and attention to the personality of the dough. For example, there is never a fixed time around how long you should let the dough rise for because there are many factors that influence the rate at which the dough will rise.
Similarly, the technologies used to build software products need to frequently be updated because technologies are constantly evolving. And once a software product is built, the work is really only half done. The product must now be maintained and enhanced in order to stay competitive and useful for its customers.
In 2011, a book called the Lean Startup was published and the concept of running experiments exploded in the tech space. The general principle is to rapidly discover if a proposed business model, thus software product, is viable. This grew in popularity quickly due to the number of factors like a business’ technology legacy, requirements, constraints and team skillset and experience that played a significant role in the resulting software product. Whilst two different teams might have the same skills and experience building web software products for a particular industry, 99.9% of the time you will end up with a different product (eg. multiple ways to write code that achieves the same result). No two software products are created exactly the same.
The same can be said about baking sourdough bread. When making the exact same loaf of bread, a baker could have followed the exact same measurement of ingredients, but without knowing the environment the dough was proofed in, 99.9% of the time you’ll end up with a different kind of loaf. Temperature, duration of proofing, different types and qualities of flour and the combinations of different flour types can result in a wide range of sourdough bread flavour, shape, crumb openness (interior texture) and overall quality. I can speak from second hand experience of listening to my fiancé, who also happens to be a software engineer and regularly talks about his next sourdough experiment. There’s always a discussion about the sourdough’s hydration and the debate about the percentages of different flours in the next sourdough loaf. One may dare to say that sourdough baking has become a scientific hobby for some. Therefore, no two sourdough breads can be alike.
Obtaining a certain level of quality is all about frequently collecting early feedback. In the kitchen, it is common to continuously make the same type of bread and modify one or more variables (eg. type of flour, proportion of water to flour, etc.), in order to work towards a desired flavour and crumb openness in the sourdough bread. To achieve this, it requires patience and an analytical approach due to the many iterations of experimentation with each new sourdough loaf. For example, feeding the starter regularly with unbleached organic plain flour until it is established then occasionally feeding it with wholemeal flour adds a little ‘nuttiness’ to its flavour.
In product development, it is common for each new feature to be tested or put in front of a customer to obtain feedback and learn what needs to be tweaked or what didn’t behave as expected. Customers often cannot articulate and prescribe the exact issue with the product. Instead, customers’ infrequent engagement or “uninterested” reactions of the product are often a sign that the product doesn’t provide value or meet a need. Hence, it is crucial to continuously experiment, test and learn the new product ideas and what the end-user’s needs are.
For both sourdough bread and software products, there is a wide price range associated to how much it will cost to make or to build, eg. time, experience, skill and quality. The key factors influencing which end of the price scale you end up paying depends on the quality of the product, skills and experience involved to produce the product and the associated worth assigned to the product by the customer. At the end of the day, if the customer does not see any value in a particular product (eg. artisan sourdough bread or custom software), they would most likely go for the cheaper option.
Regardless of it being sourdough or software, it’s important to educate the customer on the different ends of the price scale and the respective pros and cons.
There are many reasons why cheap sourdough simply doesn’t exist. The process to make it isn’t fast, so the ‘time-is-money’ approach just doesn’t work here. With a loaf naturally containing so few ingredients, any artisanal baker worth their (third ingredient) salt will take huge pride in selecting the best ones for the job.
Developing software is also expensive, not because of the cost of developers to build the product, but because of the collective cost of all the activities, time, resources and effort that is required to take a software product from a concept to a finished product that customers will use.
To be clear, I’m not saying you can’t get cheap sourdough bread or software products. But if you do get them cheap, you should ask yourself “what corners did they cut in order to reduce the price?” What are you paying “tomorrow” for the perceived cost-saving incurred today (eg. the cost of convenience)?
Whether it’s getting the sourdough bread to the “right” level of sourness or getting your bread to the desired level of “fluffiness”, there are many unknowns with how the bread could turn out. From the history of the sourdough starter itself to the batch of organic flour and combination of different flour types, it is not easy to predict the exact characteristics of the sourdough bread. To give you an idea of some questions:
The biggest question that we want to know when it comes to software development is “will there be customers who will pay for this new product/feature?”. There are also countless other questions like:
As you can see, uncertainty is the norm when it comes to baking sourdough and developing software. But with experience and the help of more scientific approaches, the multiple variables involved with bread making and software development can be brought under control as a result of reducing the uncertainty. As a result, bakers and producers of software are empowered to make more confident decisions and have a more realistic expectation of the outcome.
For some, sourdough bread may be as simple as buying sourdough bread from the grocery store as an item to be eaten. For others, it may be as complex as understanding all the ingredients, quality and nutrition of the ingredients, sourcing their own ingredients then baking their own sourdough bread.
Sourdough can be as simple as buying it from somewhere. But it can be as complex as understanding all the ingredients, quality and nutrition of the ingredients, sourcing their own ingredients then baking their own sourdough bread. With software products, the same two extremes exist — eg. to build the software from scratch or to utilise a software that is already pre-built by a third party.
For both sourdough and software products, there are different pros and cons corresponding to the “from scratch” (eg. homemade sourdough and custom built software) compared to the “pre-built” (eg. store-bought sourdough and software built by a third-party) version of the product. These pros and cons help the consumer to decide based on their perceived value.
By default, both those who produce software products and those who bake real sourdough bread must be analytical thinkers. Analytical because it is a mandatory requirement for uncovering the essence of desirability, usability and quality of the end product’s consumer in order to be successful.
“There are no cheap tickets to mastery. You work have to work hard at it, whether it means rigorously analysing a system…and throwing yourself into the humility of not-knowing.” — Donella H. Meadows
Software development is the art of problem solving because a product usually stems from experiencing a problem or desire to make something more efficient with the help of technology. There are no formulas or instructions to inform how we could create the perfect solution. The probability of the intended solution is surrounded by waves of uncertainty due to several factors such as the rapidly changing and wide variety of technologies and imperfect information. Thus, the only way to succeed is to operate lean, fast and learn lots along the way!
On the other hand, as the chef Julia Child puts it, “no one is born a great cook, one learns by doing”. Chefs and people from the food industry say that cooking delicious food is not only art, but also a skill because of the vast range in ingredients and flavours, the attention to detail and use of techniques. “When you analyse cooking there are many techniques that must be mastered, and some are really boring,’’ said Michele Urvater. The same can be said about baking bread. Therefore, one must constantly balance creativity and adaptivity in the food industry because our forever evolving food sources, environments and trends.
So when it comes to successfully producing real sourdough bread and software products:
And if you didn’t already know, bread making has been around for thousands and thousands of years. Could we learn something from baking sourdough to improve the way we develop software today?
Do you want more? Follow me or read more here.