The baker and the programmer
A baker and a programmer enter a bar. They sit next to each other by chance and order their drinks. The programmer has a blank gaze, sitting head down, staring at a half-empty shot glass. The baker, in a cheery mood asks: “Why the long face?”. The programmer looks surprised, eyes scanning up and down as if searching for an answer in the empty space.?
With a hint of smugness the programmer says “I’m working on a project that bothers me, but it’s hard to describe for those not in the field”. “Try me”, said the baker in a friendly tone.
“Well, I was hired to write software that works, but my client keeps changing the requirements every day. It’s impossible to understand what they want, so all the changes during development make the software unstable and they blame me. It’s all very frustrating.”
“As they should”, said the baker matter-of-factly.?
“Why do you say so?! I’m doing my job, getting the requirements they send me and translating into working code. All the changes after the software is written are the problem, how is that my fault?”
To which the baker replied “You are not kneading the dough enough, or you are not waiting enough time for it to ferment”.
“???”
Seeing the puzzled expression the baker elaborated “I don’t know much about writing software. But I know that companies can be complex, just like bread. If you don’t give the proper conditions and enough time for that complexity to develop, it won’t translate into anything useful. Most of what we do in baking happens before the loaf goes in the oven. It seems to me that most of your work should happen before you write any code…”
The programmer, still baffled, interjected interrupting the baker “Wait, you are talking about designing their processes, that is a job for their internal team. Not for a programmer. I don’t believe your baking analogy works here”
The baker, putting the beer aside for a minute, continued “Instead of abandoning my metaphor, let’s push it a bit further. What I hear you saying is ‘Preparing the dough is not my job, I just take the loaf from the proofing room and put it in the oven’. Well, in that case it is no wonder that you are surprised when you get to the final product. Besides, the oven time consumes a lot of energy, you want to make sure the dough you put in there is ready to grow. Otherwise, the same heat that could create a delicious fluffy loaf can create a dry brick of wheat.”?
领英推荐
The programmer stopped for a few seconds, and considering those last remarks concluded “You might be right on this one, if I get closer to the system design, I’ll have a better chance to understand potential problems down the road, and perhaps even influence design decisions to make the implementation simpler”. The baker smiled happily for being helpful.
A week later they meet again, by chance, at the same bar. The programmer was visibly annoyed, but greeted the baker trying hard to smile. After a short exchange of pleasantries the programmer inquires “Great advice you gave me last time, it actually improved the quality of the software I’m delivering”. “So what’s the matter, you don’t seem too happy about it?” asked the baker. “Well, now that I’m more involved in the design of features, I see that the rabbit hole goes deeper. What I thought were requirements changing or miscommunication is actually my client’s lack of understanding of their own process”. The baker stops to think, for thinking before speaking is a virtue that is appreciated. The programmer gets a pen and paper, ready to take notes, this time much more open to professional advice from a stranger at a bar (the issue with fables is that they need to be coherent, but not realistic).
The baker started to explain his view on how they should prolong the feature design phase: “You know, there are certain things that cannot be rushed. Sometimes the ideas need time to mature, just like I cannot rush the yeast into fermenting…”. The baker was interrupted mid-sentence by what seemed to be one of their baker apprentices. The apprentice called “Hi there, come quick, the dough was fermenting for too long while you were here. We might lose a whole batch”. The baker apologized and left in a hurry.
The programmer soon realized that the baker had left the bar tab open, which he picked up and paid before leaving.
Moral lesson: Don’t rush feature design, let ideas percolate and design based on well deliberated business rules.
Submoral: If ideas percolate for too long you might lose some, which is neither necessarily bad nor necessarily good.
Sub-submoral: When you do rush things, often other people end up paying the price for you.
by Diogo Biazus