I didn't post much in the past year due to moving, starting a new job and having a ton of life issues to deal with. I'm now in my first proper holiday since and I'm happy to post a little bit more.
In the past year, though, I've been posting thoughts on Twitter--as I did not have time to work on full posts, but I still wanted to share. So today I'm putting a few of those thoughts together here.
I'm pretty sure the right answer to "hey this project has great performance, let's make it better!" is not "Why bother?": why do you think it has great performance in the first place? Because we bothered. 😂
People often accuse me of being obsessed with code performance, even from day zero.
The thing is that perf is the easiest, most immediate way of reducing tech debt.
The prejudice that highly performing code is unreadable is totally false in the common case.
People imaging doing perf is like making sure to use every CPU cycle like Abrash and Carmack manually interleaving floating point ops with fixed point ops to fill the Pentium pipeline.
Not so! Perf work is in large part removing cruft and leaving essential, easy to read code.
It's changing that n^2 algorithm and using that other n log n. It's avoiding creating 10 million objects because of an oversight. It's making sure you have less code, less layers, less everything useless. Huge readability and productivity improvement!
My obsession is not performance, my obsession is quality code. It is just a fact that if some code performs 10x or 100x slower than it should, it's invariably poor quality code. Many don't realize how fast software should be nowadays, if correctly written.
If you read all these tweets together, my thought becomes quite clear. Bad performance is techincal debt, and not an "imaginary" kind of techincal debt--I'm not redefining the term--but an actual, bona fide indicator that there is debt to be paid. I do not have enough experience to say that this is true in all cases but, if you are not measuring the performance of your app, you are missing out on a great, easy to collect indicator of the amount of technical debt present.
A software engineer & Stack Overflow alumnus. Co-founder of Badgie. I write about software development, coding, architecture and team leadership. I also speak at conferences worldwide.
Software engineers go crazy for the most ridiculous things. We like to think that we’re hyper-rational, but when we have to choose a technology, we end up in a kind of frenzyRead more…