Coding like coffee

Coding like coffee

It's always been a joke that developers like coffee. Since before the dawn of time (ca. 1/1/1970 if we ask Unix), nearly all developers guzzle coffee to some extent. It's the fuel that drives the industry. "Coffee come sin, code goes out!" as the popular joke among many goes. But if we take a step back, coffee is actually a great analogy for development overall and not just the gas that powers the engines of programmers from Antarctica to Greenland.

It was during a conversation with my boss about, you guessed it, my obsession with "good coffee" leading up to the departments newest purchase in a proper espresso machine, that I realized that the making of coffee and the rabbit-hole of nerdery that can go with it matches development to an almost ridiculous degree.

Coffee, to the outside observer, seems simple, right? Take some obscure brown powder, chuck it in some water, stare at it for a while and pour the now-brownblack soup into a cup. Add sugar and milk until it becomes palatable.

But this really isn't how coffee works. At least, not if you want something even remotely decent. And this is where coffee preparation really starts looking like development itself and why, I think, there is a disproportionate amount of developers that identify with specialty coffees and brewing processes. Because there are so many factors to fiddle with to optimize your product for exactly your palate, it's extremely reminiscent of the plethora of ways we can approach a project that is, essentially, "chuck some developers in a room, wait a while and enjoy the bittersweet program that comes out".

No alt text provided for this image

Coffee comes in a lot of varieties. Pour-over, drip, french press to name a few of the more vanilla types. You have the cheap Mr. Coffee or the expensive Mocca Master and everything in between, and that's for the drip methodology! Want to really jump into the rabbit hole? Try an AeroPress, a Mocca Pot, a Costa Riccan sock brew system or throw your life savings at an expensive Espresso Setup. Some systems work "out of the box" with pretty much whatever coffee you chuck at it, others need careful dialing in of amounts and grinds to produce something palatable, but then they can go from "chuck it out the window" to "this is better than sex!" in no time.

And this is where coffee becomes an amazing analogy for programming. You have the simple languages and pre-built frameworks, where it takes very little effort to get "something decent" out of. However, the resultant product will rarely be able to yield truly unique solutions and, well, results, fiddling with the inputs can only do so much.

Alternatively, one can spend more and more time on doing things "from scratch" or using much more specialized frameworks And, just like with coffee, the potential of the resultant systems is so much higher. If you spend the time to develop a website or app from the bottom up, you can optimize your presentation, logic and data manipulations to a much higher extent, adding value and ease-of-use to the final product. And if you want to squeeze every last ounce of efficiency, you spend either the time or money on the necessary things to be able to fine-tune your output based on the input.

To put this in coffee terms, the quick-and dirty solution is a drip or french coffee press. But you are stuck using pre-ground coffee that has lost some flavor and you have no ability to adjust the grind-size, roasting factors or exact water temperatures. But hey, you have coffee that at least will be consistent. Moving across the spectrum, you find preparation methods that allow you to make coffee on the go or just a quick infusion of caffeine all the way to the (Almost) Extreme Overkill Solution: Roaster to control the bean preparation, grinder and scale to control exact amounts and grind settings and an espresso machine to control pressure, temperature and flow.

No alt text provided for this image

Of course, not every solution requires perfection, and sometimes you would rather have a rich, oily French Press brew as opposed to a crisp SL28 bean grown on a small east-facing hillside in Burundi,roasted to two degrees past second crack, ground to exactly 2-h setting on your Vario grinder and put through 8.4 bars of pressure at exactly 26 seconds using 92-6 degrees water (treated with 3rd wave water additives, of course). But looking at it from afar, these two very different paradigms actually share a slew of similarities, which can really be boiled down to a list that many project managers can recognize:

  • How much time and money do I have?
  • How unique does my product need to be?
  • How efficient does my product need to be?
  • How flexible, both in in- and output should my product be?
  • Are my developers properly caffeinated?

So next time you see a gaggle of developers in the kitchen with various wonky gadgets, trying to create their own varieties of their favorite types of coffee, just remember, it's not just us being hipsters. It's another testament to the very style thinking we do every day. It's in our blood.

Or, well, it will be, right after I finish steaming this milk.

No alt text provided for this image


Har vi fået espresso maskine på kontoret 🤩

Like
Reply

What happens when there is no coffee? 

  • No alternative text description for this image
Like
Reply

To view or add a comment, sign in

More articles by Peter Nellemann

  • There and back again - a server’s story

    The best stories start out and end in the same location, where many events and years have passed, lessons are learnt…

    4 Comments
  • Why not be a chameleon?

    When I was 17, I lugged Danish candy, clothes and a ton of dream across the Atlantic ocean in two suitcases. The next…

Others also viewed

Explore content categories