Quality vs Speed

Recently someone asked me about quality vs speed. How do you decide which one to use? I said it was a false dichotomy.

What is quality?

Software quality is not a deliverable like it is in real world tasks. In construction I might be able to ask for a low quality house to be built and people could buy warped wood and chipped bricks. A low quality pencil might use balsa wood. A low quality appliance will have non-so-stainless steel.

In software applications, I might say that a low-quality app is an app that is slow or error prone. Maybe the application is missing critical features of a competitor.

In code itself, quality is often a short-hand for ease of development. Does working on the code make you want to throw your computer out the window and become a monk? Do you feel like you are a pinball bouncing around? How may of your best people are quiting to "explore new opportunities"?

What is speed?

Slightly easier to define, speed is usually a measure of those pesky mythical-man-hours. How much did your boss have to pay you to get the task accomplished?

Quality vs Speed in Applications

The quality of an application is generally unrelated to the speed with which it was developed in my experience. I think this is because the hard part about most software work is the need to understand what the features are supposed to do. After that the code should fall into pace.

I would argue the inverse of that is true for any non-trivial application. The development team will need to start spending significant time tracking down errors and in rework.

Quality vs Speed in Code

From my experience, this is also unrelated. The reason for this is that quality code is the result of a set of skills and habits. You cannot go to a developer and tell them that they need to write low quality code in order to deliver faster. The developer would assuredly go slower because you are telling them to break their habits and try to figure out what exactly you think they need to be doing.

To compare to another type of writing, Steven King is simultaneously a prolific writer and also a high quality writer and this is because he honed his skill set. Asking him to deliver faster by reducing his quality would certainly decrease his writing quality while failing to increase his writing velocity.

A True Dichotomy

Developers should always be working to the best of their abilities and habit, which should be the highest quality they can perform, because that is actually the fastest they can work. But, there is a trade off that can be made; learning takes time. How much time should the team spend learning?