10 Pillars of Modern Embedded. Pillar 3: Automated

Automated

Modern firmware teams ensure their development process is as automated as possible. This eliminates mistakes, alleviates the temptation to avoid steps, and improves the speed and efficiency of developers. Developers can spend more of their time on the creative portion of development that adds value, while the computers can worry about the tedious parts of development. Automation also allows vastly enhanced testing workflows that improve quality. Automated workflows are game changers for modern firmware teams.

Let’s dive into why and how you would automate.

Why Automate?

Get it right every time (by eliminating the tedium)
Automation might sound like it’s straight out of a sci-fi movie, but it’s actually just a fancy way of saying “no humans required”. Let’s be real – who wants to spend their day manually compiling source files, testing, packaging and compressing compiled files, producing installers, updating database schema, deploying code, and more? Bleh – no thanks! Why not automate monotonous, tedious tasks? Like it or not, the workhorse of automation is scripting. Getting to a “one step build” is table stakes and often the easiest first-step. This is a script that:
Runs from the command line (not a GUI)
Builds, tests, and packages your code without any human interaction

Once you have a one step build, you can sit back and breathe easy. You’ve taken a big step forward in your automation journey! And you stop worrying about all the tedious steps you needed to remember before. Throw away that set of 14 post-it notes you had hidden in your drawer that you followed religiously to perform a release. (You don’t have to cross your fingers anymore either!) [Read more about “Automating Builds”]Free your team to focus on creating value
By automating your software delivery pipeline, developer time is freed up to create cool new features, work on bug fixes, or (gasp!) have a life outside of work? Maybe catch little Timmy’s baseball game?

Humans are good at creative, problem-solving tasks. When automation is used to free developers to focus on these creative tasks, your team’s efficiency skyrockets. You have the one-two punch of more interesting problems to work on, with an automated safety net backing you up! (Just in case your developers forget a step.) Automation results in happy, efficient employees who are empowered to be productive and creative, while bringing value, purpose, and meaning to company projects.Enforce Standards Automatically
Most companies have a development handbook or coding standard that specifies how code is to be written-but how many companies actually follow them? It’s not that your developers are incompetent-but it’s just not fun to think about the rulebook all day, every day. Have you ever been so stuck looking for trivial syntax, naming schema, or bracketing and indent errors that you’ve missed bugs or bigger problems during a code check? D’oh! Automation scripts can scan, flag, and correct these prior to saving, or at least committing, the code-ensuring consistency in the build. [More on “Debugging”]

You can set up “incentive plans” (aka crack the whip), but you will have difficulty keeping those engineers happy and productive. That’s not how a modern team operates and not how modern managers drive their teams to high performance.

Additionally, regulated industries have standards (think MISRA, etc) that need to be followed when developing. In some cases these standards are checked right before release, and in some cases-they are checked manually! Eek! You can kiss your release schedule goodbye when you discover an issue at the last minute. Automating pipelines helps enforce your company build standards automatically.Improve Quality and Reliability
Automation improves the quality and reliability of your product through a combination of the benefits mentioned above. By ensuring quality steps are not only defined but actually performed, and performed every time the software is committed, you can drastically improve your compliance and quality. Software bugs can plague a firmware product, and the way the industry prevents them is to discover them as early in the development process as possible. When you automate your build system, you discover the bugs when they are the cheapest to fix, and when they have the least potential to damage your schedule or your company’s reputation. [Read “Benefits of Automating”]

How Do I Get Started? 

Invest Time in Build Scripts
Your build scripts are the executable embodiment of your development, quality, and release process. Capture everything your company does, or intends to do, in these scripts to ensure they are documented and executed reliably every time. Get your one step build in place, and quality and repeatability become much simpler.

Additionally, build scripts become a first-class citizen of your code repository. Maintain them. Refactor them. Make them readable and beautiful. They are ensuring the quality of your product and the satisfaction of your customers.Shift Left – Automate to Discover Your Defects Early and Often
The cost of defects is directly related to how late in the development cycle you discover them. Imagine a timeline of your development cycle, chart when you discover your defects, and use automation to shift those left. Use a spreadsheet to start, and then automate, automate, automate. As you automate builds and testing, you should begin to see your defect counts shift earlier and earlier. Subsequently, you should also see your development speed and quality increase. A Final Thought
By investing time in automation, firmware team efficiency and effectiveness can be greatly enhanced. Firmware development teams can eliminate tedious tasks, reduce (human) errors, and enforce standards easily-all while improving the quality, reliability and cost of the product. By identifying common errors early, automation allows frequent testing and, when ready, efficient deployment to production. Developer time is freed up for more important things like balancing family life, creativity, and adding value via happy customers who love your company’s products. Cheers to automation!

Thoughts or questions?

Need help standardizing builds, eliminating variations between releases, and reducing manual work? Dojo Five offers tools, techniques, culture, and technologies we believe support a modern, revolutionized approach to embedded firmware development. Contact us with your questions, projects, and unique problems that need solving.

– Joe Schneider, Founder of Dojo Five –


Wanna stay in touch?

Subscribe to our newsletter! We’ll keep you apprised of the latest news at Dojo Five as well as interesting stories relative to the embedded firmware industry.