It turns out that designing software is not so different than designing commercial aircraft. I just finished watching a video that talked about the approach that Bombardier is taking in designing the new C Series aircraft. I was struck by the similarities to agile approaches to software design. In the video, Bombardier describes how they are using an Iron Bird to work through a number of design questions in advance of ever having a version of the aircraft that can ever be flown. The Iron Bird is a life size replica of the plane. Based on the name, I would assume the plane is built in a very heavy material that could never fly. Using this replica, Bombardier is able to valid certain assumptions such as the length of each wire in the electric system. They are also able to confirm that some parts are working properly (like the rudders). They even go as far as to have a complete replica of the cockpit. This allows Bombardier to put pilots in the cockpit to run through simulated take-off and landing sequences.
The basic tenant of the approach seems to be
Validate your design early with working prototypes
Get feedback from users early, well in advance of finishing the end product
In software development, we tend to think of ourselves as special. I often tell people that it is difficult to draw comparisons to building items in the physical world (“Building software is nothing like building a sky scraper”). After watching this video, I am wondering if designing/building software is actually a lot like designing/building commercial aircraft.
Watch the video here (http://www.theglobeandmail.com/report-on-business/video/video-selling-the-c-series/article4400616/)