Strive for Code Quality Over Quantity
Where are your priorities when meeting code deadlines?
February 3, 2021
A short time ago, I was under pressure to repaint the house while simultaneously delivering several high-priority work code projects. It was impossible to do both the right way in a timely manner so I began a search to find a company that could cover the paint job for me and came across one named “Quality over Quantity”. It was a local start-up company that was more interested in providing quality service and work to a few customers rather than maximizing customers to the detriment of quality. So, what exactly does this have to do with embedded software?
I’ve noticed that a majority of companies I encounter developing an embedded product seem to be more interested in quantity over quality. Teams are furiously hacking away at their product code adding as many features as they possibly can in impossibly short deadlines. Many companies will claim quality is important to them, but a quick examination of their product behaviors let alone a look at their software development life cycle methodologies tell a very different picture. A company focused on quality embedded software will have several key ingredients that can be found in their software development life cycle processes.
First, they actually have a software development life cycle process that is not just defined but adhered to and regularly updated to meet their needs. These processes don’t have to be bulletproof, bureaucratic processes but simply defined and followed best practices.
Next, testing needs to be built into the developers’ day-to-day behaviors. Testing is not something that is done only at integration right before the product goes to market or will be demonstrated to a customer. Developers should be creating unit tests, modules tests, and integration tests that can be performed on a continuous integration server. Several years ago, this was certainly something that was challenging for embedded folks, but today there are fewer and fewer excuses not to have these tools set up. (Trust me, I’ve tried to come up with as many as I can, and they just don’t hold water).
Finally, code reviews should also be a natural part of development. It has been shown countless times that the best way to remove bugs from code is to perform regular code reviews. Code reviews certainly catch issues with coding styles, missing conditionals, and so forth but I’ve found the real power in a code review is verifying requirements and that the code does what it is supposed to do. Just talking through what the code does and how it is doing it can often reveal oversights or bring up questions about what is being done. In fact, even as an independent consultant when I write code I will either get a colleague to review my code or I’ll schedule walk-throughs with my client.
What I’m getting at is that, as embedded software developers, embedded product designers, or even executives running embedded system companies need to stop focusing on quantity and start to focus on the quality. I believe it is often a misnomer that quality software is more expensive to develop. I’ve seen time and time again that teams who focus on writing fewer quality lines of code versus a large number of lines of code seem to do so in less time and lower costs. Unfortunately, I haven’t dug through scientific literature and studies to determine if this is a fact, and it may not be that way for everyone, but for me personally and many of the teams I interact with, the statement seems to hold true.
So, are you, your team, or company focusing on bringing quality products to your customers, or are you simply doing as much as possible in the shortest time possible? If it is the latter, what are you going to start doing to get your software development under control?
Jacob Beningo is an embedded software consultant who currently works with clients in more than a dozen countries to dramatically transform their businesses by improving product quality, cost, and time to market. He has published more than 200 articles on embedded software development techniques, is a sought-after speaker and technical trainer, and holds three degrees which include a Master of Engineering from the University of Michigan. Feel free to contact him at [email protected], at his website www.beningo.com, and sign-up for his monthly Embedded Bytes Newsletter
About the Author
You May Also Like