This is the last article in a series about exceptions: BasicsTypes and filteringWhere to put catch blocks and handle exceptionsFinishing up Exceptions are an example of the Chain of Responsibility pattern.Image credit Finally If the code in the try block needs tidying up (e.g. it opens files, that will need closing at some point), then … Continue reading Exceptions 4: Finishing up
Category: Quality
Good software and how to get it
A little while ago, I was asked “What makes software good?”, which was followed up by “How do you end up with good software?”. I thought that they were excellent questions, and I will give my answers below. I don't claim to have the answer, just an answer. I’ll try to limit esprit d’escalier / … Continue reading Good software and how to get it
Different ways people add value in a software development team
There was a tweet about how tech companies measure people by the impact they make. I replied in the common terse Twitter way, and I want to expand on that here. I think that there are few different ways in which someone can add value in a software development team, and they're not all equally … Continue reading Different ways people add value in a software development team
Confusing user value with other things
Programmers look at software they’re working on from the inside, but users look at it from the outside. This difference in perspective can lead to different views about what’s important – too often programmers can be consumed by the technical detail and lose sight of value to the end user. In fact, they too often … Continue reading Confusing user value with other things
Customers, suppliers and fences
In my previous post, I contrasted two different terms for thinking about how people interact with your organisation – Customer Experience (CX) and User Experience (UX). Rebecca Brown (a CX expert I mentioned in the post) kindly explained her view of CX to me, which got me thinking of some quality and process things that … Continue reading Customers, suppliers and fences
Using User Experience Techniques to Introduce Mutation Testing
Someone posted a question in a Ministry of Testing Slack channel about introducing mutation testing at work. My answer is below, as someone suggested I turn it into a blog post. I've edited it slightly to make it stand on its own rather than as a response to a particular person's question. It's basically a … Continue reading Using User Experience Techniques to Introduce Mutation Testing
Emotion and software development
I vividly remember an appointment with a sonographer when my wife was pregnant. On one hand, it was a skilled professional using a combination of acoustic gel, a wand that contained a microphone and loudspeaker, a portable computer that did signal processing on what the microphone picked up, and a monitor that displayed a visual … Continue reading Emotion and software development
Performance optimisation – for machines or people?
I recently watched a video and listened to a podcast that form an interesting pair of opinions about performance. The video is Patterns for high-performance C# and the podcast is SE-Radio Episode 357: Adam Barr on Software Quality. There are two things where the podcast and video have no differences: the system must behave correctly, … Continue reading Performance optimisation – for machines or people?
Going a bit deeper with Don’t Repeat Yourself (DRY)
DRY, or Don't Repeat Yourself, is a principle of software engineering. It makes code quicker and easier to understand and to change. For instance, instead of having the same chunk of code typed out twice or more, you carve it out into a method and then call it each time you need it. However, I … Continue reading Going a bit deeper with Don’t Repeat Yourself (DRY)
Fault tolerance
Introduction I am slowly working my way through the 300+ back issues of the podcast Software Engineering Radio. I've got as far as a couple of excellent episodes on fault tolerance with Bob Hanmer. I recommend that you listen to them, even if (like me) you don't have to worry about this kind of thing … Continue reading Fault tolerance