If there is one constant through-out the embedded system industry, it’s that our delivery timelines are yesterday. The demand for advances in embedded systems and for the latest and greatest widget put a constant pressure on designers to deliver as fast as possible. Let’s examine five foundational tips for accelerating embedded system design.
Tip #1 – Take the time to design a scalable and flexible architecture
The hardware and software architecture that is designed for a product is so critical. The architecture provides the map for the product that shows all the major blocks, their inputs and outputs and how they relate to all the other components. A poorly designed architecture can result in multiple hardware spins to adapt to changing market conditions. A poorly designed architecture can result in constant software rework. That takes time and money. Spend the time up front to carefully think through your hardware and software architecture. Make sure that it is flexible and scalable to handle adjustments and feature additions or even product changes. You’ll discover that a well thought architecture can save so much rework that the extra time has a huge return on investment (ROI).
Tip #2 – Leverage existing platforms
As engineers, we love to get into the low-level details and tinker. Starting a new project with a new processor can be extremely exciting! The problem is that if we want to do things quickly and accelerate development, we can’t start from scratch on every project. Working at bit and byte level is time consuming and has a big learning curve. Even starting with basic building blocks and trying to integrate them together can be full of issues and pain. This is where leveraging an existing hardware and software platform can dramatically help developers. A platform provides all the basic building blocks, the scaffolding for both hardware and software. All the developer needs to do is at their features and product differentiators and they are done.
Tip #3 – Master debugging techniques
It blows my mind how much time is spent debugging software. I read once in the Embedded Industry survey that 40% of a developer’s time is spent debugging. I didn’t believe it. So, for the past several years whenever I gave a conference or client talk on debugging, I asked the audience. The survey is accurate! On an average 12-month project, that’s nearly 5 months spent debugging! Debugging is failure work. It’s fixing something that should have been done right the first time. Decreasing the time spent debugging in half could dramatically accelerate development and costs. (This is per developer!). Take the time to learn how to prevent bugs and quickly find the ones that do sneak through.
Tip #4 – Slow down to go fast
It’s counter intuitive. Slowing down to go fast? Yet, with all the clients I’ve worked with and companies I interact with every year, slowing them down always makes them go faster. The reason for this is that many technology companies are working at warp 9 and at that speed, developer discipline goes out the windows. Processes go out the window. Corners get cut. The latest fire re-assigns and redirects development constantly. The result, very fast paced work that goes nowhere and produces lots of defects that then need to fix. Slow down. Resist the pressure. You’ll discover that you’ll be able to decrease development time and costs.
Tip #5 – Get an external opinion
As a consultant, this tip sounds self-serving, but I’ve found that even for myself, having a second set of eyes on a project, a code base, etc, can help make sure that the project is going in the right direction. When you start in developing a product, you find that you are at the ground level, looking through the forest and all the trees (project details). Getting a second opinion brings in someone who has no preconceptions and no-bias. They can look at the product from the air and see the path that the team is going and if it’s in the wrong direction!
These are five foundational tips for how you can accelerate your development efforts. I hope that you will take a few moments to ponder how you can use these tips successfully. What additional tips do you have for your fellow readers?