Bored Programmers

Last week I’ve tweeted something a little controversial:

The problem with good software architecture: Changing code becomes so simple, that it is boring.

Maximilian Hoffmann

I’ve already pointed out on twitter, that I didn’t tweet this to advocate building a mess. This tweet came from a realisation I had after a few days of not so challenging problems at work.

#Fun at work

I have the most fun at work when:

If you have read Drive by Daniel Pink, you’ll find the three ingredients for motivation in this list: autonomy, mastery and purpose.

This list is true for fine-grained tasks like refactoring a specific piece of code, but also for the business itself. I joined Improbable, because my job ticks off every item — especially last year when I started building the Inspector from scratch.

#Maintenance mode

Nowadays the Inspector is in production and used by customers every day. The problem space has changed from building a product to constantly improving it based on user feedback and new technical possibilities.

Having exclusively worked for agencies before, this is kind of new to me. I only know maintenance from frustrating tasks like fixing this bug in a project someone at the agency had to build quickly a year ago. As you can imagine this kind of maintenance was not fun.

This is different though. I entered maintenance mode of a project I’ve thoroughly built myself. From designing the software architecture, choosing the technology stack to designing user interactions and visual elements.

#Ups & Downs

There are times with hard deadlines, new possibilities thanks to new backend features or a lot of incoming feature requests. Then working on the product is exciting and challenging.

But there are also times where you have a sprint mostly fixing bugs, adding minor features and refactoring code.

This is normal and something I dreamed of when I was working for agencies. Nonetheless it can be boring at times.

#Boring is good

Last week when I had one of those days again I realised something:

Being bored as a programmer can be a really good thing.

It means you’ve done a good job. If adding smaller features to your software is easy and obvious after growing the code base for over a year, you’ve done something right.

If I did a bad job I wouldn’t be bored, I would be frustrated.

Then even small features would be a pain to implement. I would be afraid of touching some parts of the code and the number of bugs in our backlog would steadily increase.

All of this is not the case.

#Happy customers

One thing I really enjoy about product work is the direct feedback you can get from customers. For example it might be one of those “boring” days, where I implement an easy feature from the backlog.

It’s not interesting or challenging. There is no big solution exploration phase, because the software architecture makes it obvious and simple. I might not even see the value in it.

But when we release it to our customers and you read something like: “Great new feature! I’ve been waiting for this.” or “This will make my life so much easier.”

It was worth it.

@max_hoffmann