Three Steps Ahead

By Manfred.

What years of software development taught me about quality, curiosity, ego—and knowing when to try another path.

Imagine installing a software update by asking a robot to chisel the new code into a stone slab.

My first thought is simple: the chisel will break.

It sounds ridiculous, but it reminds me of the early days of software. Before downloads, we sent updates on floppy disks through the post. If an update needed five disks, you could almost guarantee that disk three or four would be unreadable. Then the whole thing had to be sent again.

That is what experience teaches you. The more small parts a process depends on, the more opportunities there are for something to go wrong. Sometimes it is not the grand idea that fails. Sometimes the hammer handle simply comes loose.

The devil is in the detail.

And yet experience creates its own danger. After doing something for long enough, you can become very sure that you know how it should be done.

Sometimes that is exactly when you need to question yourself.

I trained as an electrician and started my apprenticeship at sixteen. I came out of a protected home environment and suddenly entered a completely different world. I had to learn responsibility, standards and what a proper piece of work actually looked like.

For me, a job is properly done when two things are true. First, it meets the required standards. Second, I am satisfied with it myself.

That second part matters more than people sometimes realise.

Recently, workers opened the pavement outside my property to lay cables. When they closed it again, I watched them pick up each paving stone and look carefully at how it fitted with the next one. They could have thrown the stones back into the hole and left.

They didn’t.

You could see that the result mattered to them.

I think you can often recognise that in somebody’s work even when you know nothing about their profession. You see whether they care.

But caring has a dangerous side too.

I have a tendency to make things too perfect.

Software makes this particularly easy. You finish something and think, perhaps I could improve this part. Then another idea appears. Then another function. Then a better design.

You want the people using it to say, “Wow, this is fantastic.”

So you keep going.

At some point experience has to apply the brakes. There was a requirement. Have I fulfilled it? Does it work? Am I satisfied?

If yes, stop.

Sometimes 110 per cent has to be enough.

I have learned another version of the same lesson: a finished version 1.0 is better than a half-finished version 2.0.

You can have a thousand ideas for what comes next, but first you need something that works. Use it. Test it. Learn from it. Then improve it.

Otherwise you can keep adding until you have created an enormous block that looks impressive but no longer functions.

Better a small block that works.

I learned that the hard way. Once, I reached a point in a software project where I could no longer understand what I had programmed myself. I had followed one idea into another until the structure had become too complicated.

I threw it away.

Weeks of work went into the bin and I started again from zero.

Software is like building a house. If the foundation is bad, you can keep adding walls, but the house will always wobble.

The foundation has to be right.

There is another problem when you create something yourself.

It becomes your baby.

Software development is a little like writing a book. You put time into it, thought into it, perhaps even part of yourself into it. Then somebody comes along and says, “I don’t like it.”

My first inner reaction can be rather dramatic.

Who are you to criticise my baby?

You immediately want to defend it. The other person does not understand what you were trying to do. They don’t know how much thought went into it.

Then comes the difficult part.

Maybe they have a point.

Perhaps something could be changed. Perhaps there is another route to the same goal. Perhaps they simply don’t experience your creation in the way you expected.

The art is getting out of defence mode long enough to look again.

That is not easy.

A few years ago, I began working with a colleague roughly half my age. Naturally, he had a different style and different approaches. He had also learned things academically that I had learned only through years of experience.

That tested me.

The real question was not whether a younger colleague could have a better idea. Of course he could.

The question was whether I could look at it properly and say, when necessary: yes, this is better than the way I did it.

The biggest fight was mostly with myself.

Experience is valuable, but experience does not only mean that you have seen many successful things. It also means you have seen plenty of things go badly wrong. That can make you cautious.

Sometimes too cautious.

A younger person may simply try something because they do not carry all those old disasters around with them.

The best situation is when both sides bring something useful. Experience says, “Be careful.” Curiosity says, “Have a look.”

I am now working with people much younger than me, and I can still work at the same level. My work is respected.

I take something from that.

Apparently, I haven’t done everything wrong.

But staying at that level means continuing to learn. In software there is no standstill. You go to bed, wake up the next morning, look online and suddenly discover something that makes you think: that is exactly what I was looking for.

You do not have to jump onto every passing train.

But you need enough curiosity to look at the timetable.

Strangely, I am much braver with software than I am with food.

A few years ago, on my way to southern France, the Mayor presented me with a Tarte Flambée for the first time. I looked at it with considerable suspicion.

When it comes to food, I can be very traditional. There is an old German saying: What the farmer doesn’t know, he doesn’t eat.

That can describe me rather well.

But I tried the Tarte Flambée.

And I liked it.

I cannot say that one meal changed my life, but something did shift afterwards. Over the years, I started trying things I would once have rejected immediately.

I even discovered that I like tzatziki.

Earlier I would have said: absolutely not. I don’t want that stuff on my plate.

Then I tried it.

Oh.

Not bad at all.

That is perhaps how curiosity often works. Something unfamiliar becomes easier when there is one familiar piece you can hold onto. Tarte Flambée looks a little like pizza. Fried fish is still fish. There is a bridge from what you already know to something you do not.

You do not suddenly become open to everything.

You just find a doorway.

Then you decide whether to walk through it.

At the end of our conversation, I was asked what I would tell a young apprentice who wanted to know when to follow the way they had been taught and when to question it.

I don’t think there is a perfect answer.

Perhaps only this:

Stay on the paths you know until you are prepared to accept the risk of taking another one.

You have to gain experience. You can try things gradually. You can test another route.

But curiosity does not remove responsibility.

There is still limited time. The work still has to function. Standards still matter. Your own standards matter too.

And I like to keep a way back.

When somebody wants to make adventurous changes to working code, I make a backup first.

Then we can experiment.

Because trying something new does not mean forgetting what experience has taught you. It means using that experience without allowing it to become a cage.

Think about the change. Think about what it will affect.

Then think one step further.

And one more.

Three steps ahead.

That may be the real value of experience: not knowing that the old road is always right, but understanding that every new road has consequences.

Sometimes the difficult part is not finding the new road.

It is allowing yourself to take it.

Leave a Reply

Your email address will not be published. Required fields are marked *