The coveted, and often overused marketing phrases in product development as a whole revolves around decreasing costs, faster time to market while improving product quality. We have all heard these statements uttered by probably 90% of all engineering vendors ranging from parts and software suppliers through system integrators and even consultants. As humans, we want to do more at the same or better-quality level while decreasing the resources we use to achieve our end goals. In many cases, this all comes down to engineering development time and costs. Here are my top five techniques for accelerating engineering development.
Technique #1 – Master your defects
Embedded software developer on average spend 20 – 40% of their time debugging their software. That sounds outrageous but if you look at the Aspencore 2017 Embedded Survey Results or survey developers at embedded systems conferences you’ll find that figure is accurate! If 20% of a work year is spent debugging, that’s nearly 2.5 months and that’s in the most optimistic case. Businesses and developers that want to accelerate engineering development need to focus on mastering their defects and put in place the processes to not just prevent defects but also techniques to catch them as soon as they occur.
Technique #2 – Have the right tools for the job
If you want to go fast, you need to have the right tools to ensure that you can go fast. I have a client that I have worked with for over ten years who steadfastly refuses to invest a quality debug probe. The probe that he uses was purchased for $75 dollars a decade ago. That seems like a great invest of just $7.5 a year but the problem with this probe is that it allows just two breakpoints. One breakpoint must be free when loading the application from the IDE otherwise a resource error occurs, and the debugging process must be restarted. The process probably takes two minutes to do from clicking the debug button to oh you don’t have breakpoints left, try again. Once the program loads, there are still only two breakpoints that must be constantly toggled on and off based on what is being looked at during the session.
A quality probe might cost $700 or over the decade $70 a year. How much extra time and effort was spent over that decade in order to save $62.50 a year? Having the right tool for the job cannot just speed up engineering development but also save overall costs as well.
Technique #3 – Focus on your value and outsource the rest
For any business, and even for engineers, it’s important to recognize what value you are bringing to the table. I see quite a few companies who have a vision and a value they are bringing to the world, but they get caught up in production line details or developing drivers or some other thing. We all have limited resources and by focusing time and effort on the non-value add, it dilutes the value of the business or the engineer. You want to recognize what your key skills and value are and focus there and outsource everything else to someone whose value proposition is to provide those things. By doing so, you can focus on your differentiators while the low-level engineering is done elsewhere.
Technique #4 – Leverage existing software platforms
Back in the day, starting a new project meant that we were going to be spending months of our time learning the innards of a new microcontroller and developing drivers to get it up and running. Once that was done, we could then start to focus on our actual application. Today, we have the opportunity to leverage existing drivers, middleware, operating systems and libraries from not only the microcontroller vendors but also third-party companies that specialize in various software technologies. Leveraging existing software platforms, even ones that are certified, can dramatically accelerate engineering development.
Technique #5 – Leverage existing hardware platforms
It really amazes me on all the solutions that are currently available today that didn’t exist just a year or two ago. For many embedded products, the core hardware features tend to be the same. There a processor that is surrounded by memory that communicates or some interface and samples sensors and then controls something. It’s a pretty generic way to look at things but after having designed systems for automotive, medical, military/aerospace and space systems, I’ve found that there is a lot of commonality between embedded systems. In fact, probably 80% is the same or similar guts and the remaining 20% is where companies differentiate. So, if there is an opportunity to leverage existing hardware why not do it? It can easily remove not just the development effort but also time and costs to maintain the system once it is in production.
These five techniques are just a few examples of low hanging fruit that companies and developers can consider when trying to accelerate engineering development. I’ve found that both myself and my clients have been able to use these techniques to considerably decrease the time we spent developing products and I’m sure that they can work for you as well.
What other techniques can be used to accelerate engineering development?