Creating effective embedded software resolutions for 2015
Happy New Year! Welcome to 2015 -- the year of hover boards, flying Deloreans and another opportunity to start a new with untold opportunity. As each new year approaches the media bombardment of resolutions and statistics can be downright dizzying. A quick review of the top ten resolutions show that they center around either vague concepts that lack the ability to be tracked such as being happier or learning something exciting to breaking of bad habits such as smoking, eating healthier, etc. Little mention is ever made to how to improve ourselves at work, in our careers or to that which is near and dear to my heart -- improving embedded software!
When developing new year resolutions it seems that one of the most overlooked is embedded software development resolutions! Work tends to be one of the highest areas of stress in one's life so shouldn’t setting resolutions that decrease bugs, improve software quality and the design cycle be at the top of the list? After all isn’t a happy work life a bug-free life?
Any good resolution or goal whether it is set for the new year, a new month or week has some common characteristics. The first and most important is that it is specific and not vague. For example, stating that the team is going to do more code reviews this year is doing nothing more than guaranteeing failure; However, stating that all code will be reviewed with code reviews occurring every Thursday from 9 a.m. until 11 a.m and putting it into the calendar has a much higher chance of being successful. There is a plethora of data showing that code reviews are one of the least expensive ways to go about bug squashing!
The second characteristic that a good resolution would have is that it is traceable! Get out your favorite spreadsheet or database application because metrics is exactly what is being ordered. Creating metrics that track code and the software development process is a critical step to ensuring that a resolution is actually occurring and that there is an improvement occurring that is reducing bugs, savings development costs, etc. Most engineers balk at metrics tracking and it can be difficult to get into the habit but as engineers who use data to prove our systems are working should also be creating data that shows our methodology and improvements are working as well!
Not all resolutions necessarily need to be wrapped in a detailed metric. Some of the best resolutions that any engineer could undertake would be to learn about a tool or technique that could be applied to the design cycle. For example, deciding to become a static analysis guru would have a drastic effect on decreasing bugs and creating more robust code. Learning the tool and techniques wouldn’t initially show-up in the metrics but over time as the technique is mastered the metrics should show improvement!
These are just a few simple examples of embedded software resolutions. There are any number of goals that could be set ranging from improvements to software architecture, the design process, third party reviews, coding standards, development methodologies, etc. Some additional thoughts can be found in the associated video blog and some additional tips for creating embedded software resolutions can be found at http://bit.ly/1BFFkia. Everything really boils down to just two simple questions:
1) What do you need to improve in 2015?
2) How are you going to go about making these improvements?
Jacob Beningo is a Certified Software Development Professional (CSDP) whose expertise is in firmware for embedded systems. He works with companies to decrease costs and time to market while maintaining a quality and robust product. He is an avid tweeter, a tip and trick guru, a homebrew connoisseur and a fan of pineapple! Feel free to contact him at firstname.lastname@example.org, and at his website www.beningo.com