Hackers and Cooks: how building software really feels like

by Wojciech Adam Koszek   ⋅   Jun 26, 2017   ⋅   Menlo Park, CA

We spend too much time writing code instead of building software, and we forget what it's all about...

After a busy day of debugging you went grocery shopping. After starying for eight hours straighs into the iTerm, being in the avocado section felt like a breeze. And then you enter home.


You enter the kitchen and it’s a mess. You’re scared of putting your bags full of fresh, organic produce. Germs are everywhere, after all, and you know it. The tabletop is sticky. Hard to be surprised–you can’t really recall when it was last cleaned. Or who did it. For sure it wasn’t you. Not since you started living here.

Stove has leftovers of soup. Or butter. Or a salad. Hard to say. This gluey stuff around the electric spiral used to be something, for sure, but now it’s just greese. It burns, smokes and smells each time you boil yourself an egg, but normally it’s too late to do anything about it anyway, so you just leave it like this. At this point it doesn’t matter–the walls around and the ceiling look disguisting anyway. Since the last explosion of burning oil and an accident with a blender it doesn’t make much of a difference.


You scrub a dirt from a floor with your left flip-flop, and put bags there. Left hand close to the opened fridge, and right in a bag.

But wait.

Fridge is full. Not just full. Not simply full. Not full as in: I can’t really fit my new grocery from the floor there. It’s full of things no longer have proper name. Rotting vegetables, old cheese and sauces with no due date. Were their yours? Or your roommates? I mean one of them might have got them, but you don’t know which one.

That’s fine. It’s not the first time this happens.

Before groceries land in there, the fridge needs serious cleanup. You throw bags of goo out, but since the trashcan is full and it’s too cold to go back out now, you just dump the decomposting stuff into the sink. Just for now, you kid yourself, but there’s no other way. You took the old soy milk cartoon out, soon to realize it was there to hold a shelf.

You could in theory just ignore everything and screw a bolt in there to hold the shelf, but who has time for this now. You just stick the old cartoon back in there, but mark it as “DO NOT DRINK EVER”.

From fridge to sink. Now from bags to fridge. You just prevent yourself from running into the same mistake, so things get labels: when you got them and what’s the time by which to toss them away.

That’s it about the kitchen improvements here. The compost in the sink stays there. You might manage to wash a piece of vegetable there on the side, and with one eye on your freshly cooked vegetables and meat with sprinkling olive oil, you manage to dig a place and clean a fork for yourself.


Looking at https://news.ycombinator.com and https://www.reddit.com I have a feeling ninety percent of focus is on software implementation, which is like cooking a dinner in the above story. But every day is quite different: to be able to actually implement a software product, you must first start from all the crap work that needs to be done. Large number of people don’t see that, and if you do, you’ll move ahead fast.

You’ll notice that great software engineers can derive pride and some form of satisfaction of just being in the kitchen. The act of ripping the code apart and putting it back, better, together is what makes them like software. And doing all these surrounding activities is what makes a great cook great. Making yourself find at least some joy in doing a full cycle of software development is important, since otherwise the mental burnout happens. So try to get interested in testing, release engineering, documentation, performance analysis and not just writing code.

What I believe happens as a side effect of this process of “building software” is that you start to appreciate all the people who do a tremendous amount of crap-work and sometimes don’t get enough recognition. You see a reliable unit-test suite in the product you’re contributing to? Well, there’s this one person who might have put a huge amount of work to make it work reliable. Always remember that.


Subscribe for updates

Once a month I send updates on the new content and hints for software engineers.

Liked it? Share it!

About the author: I'm Wojciech Adam Koszek. I like software, business and design. Poland native. In Bay Area since 2010.   More about me