Category Archives: Programming

Lessons From 9 More Years of Tricky Bugs

Since 2002, I have been keeping track of all the tricky bugs I have come across. Nine years ago, I wrote a blog post with the lessons learned from the bugs up till then. Now I have reviewed all the bugs I have tracked since then. I wanted to see if I have learnt the lessons I listed in the first review. I also wanted to see what kind of bugs I have encountered since then. Like before, I have divided the lessons into the categories of codingtesting and debugging:

Continue reading

More Good Programming Quotes, Part 6

Here are more good programming quotes I have found since my last post.

Programming

“Configuration is coding in a poorly designed programming language without tests, version control, or documentation.”
Gregor Hohpe

“It’s the developers misunderstanding, not the expert knowledge, that gets released in production”
@ziobrando

Continue reading

Programming Conference – Jfokus Stockholm 2025

This week I attended the Jfokus software development conference in Stockholm, Sweden. I first went in 2011, and I have been back many times through the years. The conference has a Java focus (duh!), but many talks cover general topics as well.

The whole development team at NGM got tickets. It is really nice to be able to discuss and compare notes with your colleagues. The big theme this year, apart from Java, was of course AI and LLMs.

Continue reading

Programming With ChatGPT

Using ChatGPT when I code has been a real productivity boost for me. Instead of reading an example on Stack Overflow and figuring out how to adapt it to my particular case, I immediately get code tailored to my specific needs. I my mind, generating code is a perfect use case for LLMs, since I will always test the generated code. If it isn’t working, I’ll find out right away, so hallucinations is not a problem.

Continue reading

Finding a New Software Developer Job

For the first time ever, I was laid off, and had to find a new software developer job. I managed to find a new one, but it took longer than I thought, and it was a lot of work. I was in contact with 30 companies, got a no from 8 companies, no reply from 6 companies, and offers from 3 companies. Here is what I learnt from the process.

Continue reading

Tidy First?

“Software design is preparation for change; change of behavior”

Tidy First? is a new book by Kent Beck. It is a short little book, only about 100 pages (and lots of white space on them), but it contains some deep insights about software development. The book has three parts, going from concrete to abstract. First there is a list of 15 tidyings, which are small refactorings. The next part, Managing, discusses how and when to perform the tidyings. The final part, Theory, presents a great framework for how to think about software development, using the concepts of time value of money and optionality.

Continue reading

What I Have Changed My Mind About in Software Development

I really like this quote from Jeff Bezos:

“Anybody who doesn’t change their mind a lot is dramatically underestimating the complexity of the world we live in.”

Lately I have been thinking about what I have changed my mind about in software development. Here are the things I came up with:

Continue reading

Well-maintained Software

Two months ago, I was a guest on the Maintainable podcast. The first question the host Robby Russell asks is “What are a few characteristics of well-maintained software?”. This is such a great question, and I thought I would expand a bit on my answer from the show.

Continue reading

There Is No Software Maintenance

Every time I hear about software maintenance as a distinct activity, I cringe. That’s because it is based on the outdated notion that first software is developed, then it is maintained. But that is not how software development works today. Software development does not have the two phases development and maintenance – it is a continuous process. Software maintenance is simply software development.

Continue reading

Switching to Go – First Impressions

A few months ago I switched to working in Go. Before that, my main language was Python for many years. The change to Go has been very smooth, without any major surprises or stumbling blocks. This may partly be because in the past I have also worked in both C++ and Java. Even so, Go (the parts I have used so far) is quite straightforward.

Before I started in my new role, I read through The Go Programming Language, which is quite good. Otherwise I have mostly used online resources when I have needed to learn how something works. Both A Tour of Go and Go by Example are good.

Here is a list of things I noticed with Go since I started working in it:

Continue reading