top of page

Agile Development

Agile Development is a software engineering discipline that can be applied to the development of products and machinery.  The core principle is to reject the notion of Big Design Up Front, and manage the process as a series of cycles, or sprints.  Each sprint is planned, executed and then reviewed with stakeholders.  Another core concept is the idea of having a working set of code at the end of each sprint.


Applied to hardware development, the standard Agile concept runs aground on some issues that are particular to hardware.  First, one can hardly have a working device the end of every sprint, as it is normally not possible to execute that quickly, and it's generally cost prohibit to resolve every design iteration into hardware.  If you were using the agile process to design a ship, you really couldn't expect to have a working ship at the end of a four-week sprint.


Another area of concern is the notion of specifying along the way.  Agile lets you define the targets for each sprint, while having only a vague notion of the complete package at the end.  Using our ship analogy, that probably wouldn't work out too well.  What if we specified a ship, but really needed a wind powered vessel? Wouldn't all that work that was done thinking that the ship had a motor be for naught?  No, hardware design needs some vision of the full design path to be executed.  It can be adjusted along the way, but the p;ath has to be clear from the start.


Finally, hardware design is often a balance of constraints, unlike software design.  Sure, software engineers face constraints, but not at the same level.  With hardware engineering, the constraint system is a fundamental part of the challenge.  One that needs to be identified as early as possible to allow engineers to make the best tradeoffs between needs.  Telling an engineer that something has to be strong AND light, is much different them just telling them it needs to be strong.  Strong is easy.  Just make it out of steel.  Strong and light, now that takes imagination.   Try telling them that it needs to be both, after just saying it needs to be strong.


However, having discusssed how agile development is not a good fit for hardware development, it is still of use in the process.  One needs to apply the principles, but look at the work output differently.  For instance, having design sprints that are reviewed by stakeholders on a regular basis is a great idea.  In a similar fashion, starting the desing process with a vague notion is also fine, provided that we iteratively review any outcomes to slowly tailor the progress into the correct channels.  Seen as a modification of traditional design habits and outlooks, agile is a very valuable process that can be applied to hardware projects, it just can't be followed by rote.

bottom of page