Chaos Reigns Firmware Development. Why Does It Have to Be That Way?

Remember Pat Benatar's song about battlefields? Same goes with embedded development as with love. Here are ways engineers can work to get a project from devolving into disarray.

March 7, 2016

4 Min Read
Chaos Reigns Firmware Development. Why Does It Have to Be That Way?

Embedded software development can often feel like a battlefield. Chaos rules, while managers shout orders to engineers on the front lines with little clue as to whether they are advancing or falling back. Success feels like it depends less on strategy and skill and more on pure dumb luck. Here are a few simple principles developers and managers should print out and review daily when a project descends into chaos.

Principle #1 – Keep to the Path

I love the potential that the Agile Development processes provides engineers, but sometimes the ability to be agile and adapt to changing circumstances can be far more destructive to a schedule than simply keeping to a straight path. Take for example the daily stand-up. Having a quick meeting discussing progress, blocks, and the goal for the day is a great idea -- until it gets abused. Daily stand-ups can quickly decay into a circular loop of changing priorities.

Take, for example, what happens when problems are encountered that require a few days or weeks effort to resolve. Many managers, rather than keeping to the iteration or the plan, will decide to keep the project moving by shifting the daily priorities. The team only gets one day to dig into an issue before having to switch to another priority, making it difficult to keep track of where the task left off. The moral of the story: Stop changing priorities on a daily basis! The project isn’t being sped up but only slowed down.

Principle #2 – Slow and Steady

Many embedded software development studies have shown that throwing developers at a project won’t get a project done faster. In fact, it only delays the project further. The best chance of getting a project out the door is to, instead, take it slow and steady with a small team of experienced developers. When the pressure is on to deliver and deliver fast, don’t frantically start banging out code like there is no tomorrow. The result of fast-paced development is even slower debugging. Careful development of every line of code and thinking through the implications will result in a longer design or implementation phase but a far shorter debugging phase.

READ MORE ARTICLES ON FIRMWARE:

Principle #3 – Keep the Cart Behind the Horse

Projects get out of control easily. Embedded systems, and especially software, are not simple. The complexities involved can easily distract a team to the point that they are looking 10 miles ahead rather than 10 inches in front of them. Don’t let the cart get in front of the horse!

A prime example is developing “production” code before a software design or requirements even exist for the project. Teams that take their time by developing a well-thought-out architecture can easily translate that architecture into code. The process is like taking a blueprint for a building and using it to build it. No construction company on Earth would buy supplies and design the building at the same time as they construct it. Embedded software developers shouldn’t either!

Conclusions

Don’t get me wrong; these are all obvious principles that every engineer, maybe even every human being, knows. The problem is how quickly we forget simple logical principles when a customer is putting us through the wringer. Many development efforts start off as a well-organized, strategized campaign, but at the first sign of trouble or resistance, order decays into chaos. The next time development starts to spiral out of control, take a few moments to review these principles, get your heading, and charge.

[image via Google Images]

Jacob Beningo is principal consultant at Beningo Engineering, an embedded software consulting company. Jacob has experience developing, reviewing and critiquing drivers, frameworks and application code for companies requiring robust and scalable firmware. Jacob is actively involved in improving the general understanding of embedded software development through workshops, webinars and blogging. Feel free to contact him at [email protected], at his website www.beningo.com, and sign-up for his monthly Embedded Bytes Newsletter here.

Like reading Design News? Then have our content delivered to your inbox every day by registering with DesignNews.com and signing up for Design News Daily plus our other e-newsletters. Register here!

Sign up for the Design News Daily newsletter.

You May Also Like