Life @ NCP

not everyone needs to go outside to have fun

Are you talking about software kitchens?

This is a cop-out because it’s a rehash of my previous post, but as an added bonus, here’s a video of me delivering it as a speech at my Toastmasters club.

Toastmasters is a club for improving your public speaking skills. You give speeches and take on speaking roles, and get feedback about what you did well and areas for improvement at the end of the session. The club I go to is full of amazing people and certainly one of the reasons we’re still here in Stockholm! Of course, as you might expect, there’s an evaluation to go along with the video.

And my actual speech draft. When you’re up on stage, some things just don’t go the way you plan, and even from the beginning things started out slightly different 🙂

I work in IT as a software developer, but it’s hard for me to explain what that means to anyone else. A few years ago, to work in IT meant you were “good at fixing computers” or “installing antivirus”. Nowadays it means you’re “making the next facebook” or “about to become a billionaire”. There’s just so many facets to being a software developer that it’s sometimes easier to just grin and nod sagely rather than to explain exactly what I do.

One analogy I’ve recently found useful is a kitchen in a restaurant. No one knows how a software company works (unless you work in one), but everyone has some idea of how a restaurant works, even if they haven’t worked at one. You have waiters, you have the cooks and of course you have the customers. In such a setting, I’m one of the guys in the kitchen.

But this is where it gets interesting. Every kitchen is different. I work in a small kitchen where I have to share my tools, ingredients and space with other cooks. Everyone chips in for a dish, someone does the chopping, someone does the tasting and someone does the frying. Mostly. Some kitchens cook without tasting. Some kitchens have only one cook. Some kitchens have the best tools. Some kitchens have the best cooks. Sometimes the cooks are overwhelmed and overworked. Sometimes the cooks aren’t even from the restaurant, but from the pizzeria across the road. cough outsourcing

Many of the struggles I face are more easily explained as soon as I talk about a restaurant. When I tell people about how users of our software have unrealistic expectations of how it should work, or what can be changed, rather than empathy sometimes I get “but it’s just software, can’t you just change it?”

But when I tell people about unreasonable customers at a restaurant they go, “yeah, I understand”
Imagine a restaurant where customers walk in, and they tell the waiter what they’d like to eat. “Can I have this but vegetarian?” “Can I have truffles on the side?” “Can I have the pecan pie, but no nuts?” “Can I have fried rice, but without the rice?”

We’re more familiar with the idea of an unreasonable customer at a restaurant than an unreasonable user of some software application. In both cases, the customer has no idea how hard their request actually is. They think they have an idea of how hard it is, but without actually having worked in a kitchen, they haven’t got a clue. Of course they might have been chefs before, or formed their estimate based on visits to other restaurants, but that’s kind of irrelevant because there’s someone between the customer and the cooks.

It’s the waiter.

Most of the time the waiter says “sure we can do that”, sometimes he says “that is impossible Madam”, but it’s really up to how well he understands what’s being asked. Often he has other agendas. Maybe he would like to please a really important customer, sometimes he is wildly optimistic about what his kitchen can produce. Whatever the case, he converts a customer request, into a slip for the kitchen.

And this is where I come into the picture.

The slip arrives at the kitchen and everyone scrambles. We look at the slip and go “What the? How could we possibly make this in time?” There’s a deadline to meet, sometimes you’re still dealing with the fallout from the last dish and what sometimes ends up being put on the plate is something thrown together in a rather haphazard manner. Along with prayers that all of the stuff went in. No one likes a meat pre without the meat. Unless they asked for it of course….After all no one likes a meat pie without the meat…unless they asked for it of course. Sometimes it’s so bad the waiter simply rejects it outright.

Assuming that it’s decent enough to be served, and the waiter has written the slip correctly (certainly not taken for granted in many places! sometimes what you asked for is not what you get…), you eventually receive your dish. Sometimes when you see it on the plate it looks delicious, but you bite into it and you find an eggshell or bits of plastic (remember the haphazard assembly?). Sometimes it tastes fantastic but when you arrive home, you spend the next week camped out in front of the toilet.

You might think there are food inspectors that go around restaurants, making sure something like this doesn’t happen, or that offenders get punished and blacklisted…. but there are areas where the analogy becomes a little more absurd. All that for the next speech.

In the meantime I hope I’ve helped provide better context into how a software developer fits in to a software company, and the kinds of challenges we face. How about you? Do you work in a hypothetical restaurant? Are you a cook? A waiter? Or perhaps the person standing outside the restaurant, touting customers and trying to get them in. I’m looking forward to hearing about your restaurant stories.