If you talked to an aircraft designer and they showed you their design drawings but they apologised that they were a bit of a mess and that the design wasn't very good, how keen would you be to go for a fly?
More often than not the first word I hear when looking at someones block diagram is "sorry"
Whereas we love showing off our code, we kind of buy into the software craftsman view of it. We feel our code is well-crafted and have pride in it.
Quite often this contriteness is misplaced, if the code is working and adding value then it is good software in my opinion. It might not be good for all use cases though and this is when we get the call. Most commonly it might be functionally good, but difficult to maintain or extend.
The difference here is interesting and I actually think there are things to apologise for and things that you don't need to apologise.
Say sorry for these!
Untidy code - this is just effort, lack of effort=laziness.
Unfixed code - knowing it's wrong and leaving it, I find this very frustrating.
Vanity Code - Making it complex to satisfy your ego
Note: all of the above are wilful decisions or omissions.
Don't say sorry for these
Unfinished code - I don't know what time pressures you're under, it's unlikely I'll be asked to look at finished code.
Designs that grow (mutate) - Good software should grow and mutate, it means it's being used and refactoring is risky, difficult and expensive. The Software Peter Principle applies here, where the code becomes so complex even the author doesn't understand it.
Code you did before you knew better.
The system is brittle and changes cause chaos. Change is a use case and while it's reasonable for us to assume stuff will need changing it's not necessarily a given at the time of project inception.
One reason we never feel the urge to say sorry is that we write code slow to debug fast and that involves effort and attention to detail. Debugging fast means we can make changes fast too, they are related.
I've tried to float the index to articles at the top of the blog, been told by NI that it won't work and this article is the tester.