Carlijn Compen is VP of software development at Canon Production Printing.

Opinion

“It’s software. We can make anything!” Let’s not

Reading time: 4 minutes

If anything is possible, it can lead to risky situations. Carlijn Compen observes two extreme effects.

My usual way of working involves asking a lot of questions to the people around me. So naturally, when I started in my current role as vice president of software development in a large multinational company, I did the same. I started talking to the developers and engineers about their projects, their ways of working, the challenges they were facing, their dreams, their hopes and their fears. I was particularly struck by the following sentence: “It’s software. We can make anything!” And it wasn’t just one person telling me. Many in my team were saying this, sometimes using these exact words, at other times phrased in a slightly different way. The consensus seemed to be that anything is possible.

This sounds pretty amazing, right? Anything is possible. Impossible is nothing. Adidas used it for many years as their brand campaign. These words, “anything is possible,” radiate positivity and hope. Endless opportunities await. There are no limits to what can be done. Who wouldn’t want to be in such a lucky position, in a profession without limitations in the physical domain?

But if anything is possible, it can lead to risky situations as well. I observe different effects. Let me explain two extremes.

First, because we can make anything, we actually start making anything. We love coding, so let’s write more! We have all these ideas for new features, for improvements, so let’s implement them! Let’s code! And why? Because we can! As a result, our software keeps growing and growing. It’s not always visible, but it’s there. In a conversation with Jurgen Vinju of Centrum Wiskunde & Informatica, he used the word “bacteria” to describe this phenomenon, and I think it’s a very appropriate analogy. Software becomes like bacteria. You can’t see it, but it’s everywhere. And it just keeps growing, every single day. This will eventually start to cause issues. It becomes harder to manage, more and more challenging to control and impossible to maintain.

The second extreme is paralysis. I recently attended a masterclass on cultural anthropology by Jitske Kramer. There, I learned about the concept of “liminality”: a transitional phase in a person’s life, in which ambiguity exists. You are no longer who you were before, and yet you have also not arrived at the next stage. While I don’t think this concept completely applies to software developers in a daily work context, I do believe we can apply its consequences to the situation. In liminality, anything is possible. The boundaries of what once was are dissolved. This can bring a great sense of freedom, but at the same time, it comes with uncertainty. And this can be terrifying. We simply don’t dare to make decisions anymore. We freeze. It paralyzes us.

I believe there’s a way to overcome both of these unwanted effects. It requires one important skill: courage. The courage to make decisions, to consciously choose what to make and what not to make. Because this can save us from coding for the sake of coding. The courage to take action, to start moving when we feel stuck.

Of course, courage alone won’t do the trick. I consider it part of a package of three specific soft skills: curiosity, courage and connection. True curiosity about the world and the needs of our customers and our stakeholders, serving as a solid foundation for our actions and decisions. A genuine connection with those around us, on a personal level. I’ve talked about this during my keynote speech at last year’s Bits&Chips Event, and will discuss it in more detail in a next column.

Don’t get me wrong; I also like to create things, I really do. Making new things, creating something that wasn’t there before, gives me a lot of energy. More importantly, I truly believe that iterative processes are the key to successful product development. I don’t believe in ‘first time right.’ We have to create to learn what works and what doesn’t work, to validate with people. But at the same time, we all have the responsibility to be mindful of what we put out there in the world. And this doesn’t solely apply to software development.

So, when people tell me: “It’s software. We can make anything!”, what do I say? “Let’s not.”

Related content