16 May 2011
Exposed: The secret life of software developers
A friend once asked me what software developers do when they're not creating the next new release of a software application. I thought it was the opening line of an uncharitable joke, but it was actually a serious question.
As far as he knew, developers at software companies spend the time between new release projects in hiatus, learning crochet or sipping Piña Coladas on the beach. They appear to go underground.
His company designs and manufactures machinery where new models are a refinement on the previous – better, but not significantly changed or expanded. So most of the time, armies of design engineers are just not needed, and improvements scheduled for the next model are relatively minor and can be developed on demand.
But in the engineering software world, the answer to his question (of course) is application engineers continue to develop the software between the release of major upgrades or service packs. It's just that you don't see, or benefit from, the results of their work until it hits the streets.
The established approach of periodic 'big bang' software releases is seemingly a matter of practicality and economics. It's just not a sensible approach, so the historic argument goes, to pump out a rapid succession of entirely new software releases, each with just an updated function or a couple of new features. The disruption, cost and the risk to productivity are too high. Instead, all the newly developed capabilities and technology wait in the wings for their final amalgamation into the next major release or service pack.
And so we've grown accustomed to an industry routine, carried along by a seemingly beguiling rhythm of buy and wait, upgrade and wait again.
Meanwhile, the potential productivity and competitive benefits provided by the new capabilities in waiting are unavailable to those that professionally use and rely on the software. This is a big deal in the high competitive electronics design industry where new technologies, and the resulting market opportunities, come thick and fast.
Imagine though, that the not so secret output from software developers could be implemented in your existing design software on a piecemeal basis, effectively in real time, as soon as a new feature or capability is developed. No waiting, no major software installation, no workflow disruption, no loss of configurations and no risk to design data integrity. It's a compelling prospect.
The approach already exists in software applications that use downloadable plug ins to enhance their functionality (such as web browsers), but it's generally not associated with anything as complex and multidimensional as engineering software. However, if a single application electronics design system was structured on a base platform designed to accepted software plug in modules, the opportunity exits for new software features and updates to be installed at any time, from within software itself.
The beauty of this modular approach is its ability to be reconfigured, expanded or updated on a piecemeal basis, without disrupting the rest of the system or the design workflow. Plug in modules could be easily rolled back to a previous version or uninstalled (unplugged in effect), and designers could configure the functionality of the design software to suit their exact needs.
Above all it would allow electronics engineering software to be kept relevant and up to date. In turn, designers can stay ahead of the game by reaping the benefits of what software application engineers really do get up to between releases. It would soon be apparent that it's not crochet or lounging on the beach.