Optimising for a Software Engineer’s time

Photo by DANIEL DRYWA. License: Creative Commons Attribution-NonCommercial 4.0 International License.

Throughout my years in the software industry, I have noticed a practice that to this day I do not quite understand. And that is the optimisation for a software engineer’s time. In my view, a software engineer should create software that is considerate of the end-users’ time. To achieve this, they should aim to write programs that are not wasteful of a machine’s resources and make the most efficient use of the hardware. Every design decision should have these two things as its top priority.

However, most of the discussions I have observed or participated in focused on code readability, structure, and usage of bloated frameworks to save development time and effort. Some discussions even got quite heated and passionate. And the most perplexing aspect to me is that none of this is relevant to the end-user. The end-user does not care about code structure, readability, or which shiny new framework is used. What matters to them is that software works. They want the software to complete a task as fast as possible so they can get on with more important things. Equally, the machine itself does not care about code structure, readability, or any kind of framework used. All it cares about is executing the next instruction from memory, trillions of times per second. Why is so much focus being put on things that, for the most part, do not matter to end-user or the machine?

I have heard a lot of answers to this question, but none of them convinced me so far. I have also read a lot of books about code readability and structure, but none of them convinced me to adopt their practices. They did, however, have one thing in common. And that is the hubris that optimising for a software engineer’s time is more important than that of the end-user and machine. And to me it is missing the point of what a software engineer is supposed to do.