7 Tips to Accelerate Firmware Development

Embedded software development teams have a unique challenge before them; how to develop more and more firmware in shorter and shorter timeframes. How can developers get everything on their plate completed within the time allotted? Here are seven tips as food for thought.

Tip #1 – Continuously Innovate

Focus cannot simply be on creating code as fast as humanly possible. Teams need to continuously innovate and change the way in which they develop their software. A few key questions that teams need to be asking are:
– What are we doing well?
– What can we do to improve?
– Are we doing anything that is no longer necessary?
– What can we do to streamline?
– How can you move to the next level? More process? Less process?

Tip #2 – Create a Skills Improvement Plan

It doesn’t matter how many years of experience you have, or how awesome you are at embedded system development, the fact is that developers should never stop learning. Software and electronics industries change at a rapid, nearly exponential rate. Each year identify 2 – 3 activities that will be followed through on an individual and team level to raise the bar. For areas to consider improving in, see Mastering the 8 Pillars of Embedded Software.

Tip #3 – Start Using a Platform

Starting a project from scratch is not going to help developers create firmware faster. In order to accelerate firmware development, teams need to start adopting platforms that provide the fundamental, low level building blocks that allow them to focus on their higher-level applications. Microcontrollers have become far too complex to start developing our own drivers from scratch any longer. Despite how fun this is, start investing a platform to development your products on. An example platform includes the Renesas Synergy™ Platform (one of my favorites), STM32 CubeMx and so on.

Tip #4 – Balance the Workload

Developers can’t work 60 hour weeks’ week in and week out. It just isn’t feasible. Productivity drops, developers tire, work gets sloppy, bug rates increase and overall the project takes longer despite putting in more time. Adding developers and putting in more hours isn’t always the solution to move faster. Balancing the work load where developers don’t work back-to-back 60 hour weeks can help get team energized and prevent burn-out.

Tip #5 – A Homerun can’t be Hit by Everyone Every Time

I’ve seen project managers many times base their schedules on homeruns being hit by everyone, every time. As exciting as that would be, teams can work faster by realistically scheduling their project. Optimistic schedules quickly put stress on developers who are always falling further and further behind. Productivity drops, stress is high and the whole situation doesn’t work out for anyone. As part of the project planning, include catch-up phases to account for unexpected issues. Stress levels will be lower and productivity will be higher.

Tip #6 – Leverage and Reuse Code

Don’t develop code for a single use. Plan to reuse as much code as possible. Why reinvent the wheel? Strive to reuse as much internal code as possible. Become familiar with 3rd party components both open source and commercial. Leverage these as much as possible to prevent your team from recreating something that already exists.

Tip #7 – Hire the Best

Whether you are hiring engineers, consultants or purchasing 3rd party components, aim to hire the best. In general, the best is not inexpensive but you really do get what you pay for. The best often exceed expectations or go above and beyond make sure that their clients or employers get their money’s worth and more. Using the best often results in better ROI, improved code quality and time to market.

Conclusions

Development teams are facing smaller budgets, faster time to markets and more features. These are seven thoughts to fuel your mind on how you can speed-up your own software development practices.