Mike Daconta


3 reforms needed to avoid the coming software development disaster

Developers are being splintered by competing players instead of moving toward convergence

The application development landscape is in tatters because there are too many dominant players, platforms and software development kits (SDK) vying for developer mindshare. At the same time, there are new disruptive technologies, such as 64-bit computing and IPv6, waiting in the wings.

This double body blow is the straw that will break the back of the development community and cause massive pain until a clear direction emerges. And the ramifications of this chaotic environment are serious: continued buggy and unreliable applications with stovepiped data and a short shelf life; continued lack of professional standards, licensing and liability for software engineers (unfortunately, I still have to use that term loosely); and continued proliferation of proprietary, closed devices, data standards and platforms.

Speaking of proprietary platforms, the iPad is an extension of Apple’s iPhone and iPod lines and is little more than a large iPod Touch. Strategically, it seeks to be a Kindle-killer, but more importantly, it will provide another outlet for iPhone developers to sell more software. So, although the iPad makes perfect business sense for Apple, it is a disaster for the development community because it continues the splintering of developers at a time when technological convergence should be leading to greater software reliability. And for me, software reliability in the government sector is the No. 1 concern.

Let’s examine those dominant platforms and players and the disruptions. First, the platforms.

  • Target-based platforms: Web, cloud, mobile, rich Internet applications and desktop. These platforms target a specific set of devices or environments. The problem is that although each environment has similarities, most software platforms for those environments reinvent the wheel each time. Each vendor in each niche puts out a custom SDK with its own set of duplicative libraries. Worse, each niche competes not only against the other niches but also against the other types of platforms listed below.
  • Technology-based platforms: Java, Linux, open source. These platforms are centered on a single, unifying technological concept. For example, Java is centered on the principle of “write once, run anywhere;” Linux on a free operating system; and open source on the notion of collaborative, community development.
  • Proprietary platforms: Microsoft, Adobe, Amazon and Apple. These platforms revolve around a for-profit corporation as the prime mover. Microsoft is the clear leader in proprietary platforms, with its Windows franchise. Adobe has Flash, Flex and AIR. Amazon has the Kindle. Apple is rivaling Microsoft with its music, mobile applications and elegantly designed Macintosh hardware. It is debatable whether Google belongs here, as they compete in many of the technology and target-based platforms but with an open-source bent.

Although I am a believer in free markets and the benefits of competition, industry has a responsibility to work together on the foundational layers to build security, quality and reliability from the ground up to advance the professionalism of the field. In essence, the information technology industry must emulate other engineering disciplines, or technological disasters and cybersecurity holes will worsen.

Make no mistake: In terms of job creation and cybersecurity, this must be a national priority. The need is even more pressing given the large number of new technological disruptions on the horizon. I do not have space here to go into details, but the major ones include: 64-bit computing, IPv6, cybersecurity, robotics, flash storage, new modes of use (gestures, voice, augmented reality) and new devices (smart phones, netbooks, e-book readers and tablets).

In line with our mantra of change, I propose a few technology reforms.

  1. License software engineers along the same lines that other professional engineers are licensed.
  2. The National Science Foundation and Defense Advanced Research Projects Agency should lead the development of an open, 64-bit, language-independent, layered redesign of the technology stack.
  3. Move beyond software as art to fully embrace software as engineering.

About the Author

Michael C. Daconta (mdaconta@incadencecorp.com) is the Vice President of Advanced Technology at InCadence Strategic Solutions and the former Metadata Program Manager for the Homeland Security Department. His new book is entitled, The Great Cloud Migration: Your Roadmap to Cloud Computing, Big Data and Linked Data.

Reader Comments

Thu, Feb 18, 2010 David Swink Vienna, VA

There is certainly a problem with how software applications are developed, but the problem is deeply embedded and can be blamed on government agencies and large corporations blindly purchasing software without any attention to standardization. Large purchasers insist on locking themselves into apps that run only on Windows, or Oracle, or whatever. Furthermore, we've become ensnared in bad methodologies and increasing interdependencies and steeper learning curves. Several basic structural problems need to be addressed: 1) Demand a standard OS -- Unix. This is the "grown-up" OS. Mac and Linux platforms speak this language; only Windows refuses to follow. 2) Don't use static compiled languages. Computers have long been fast enough to run powerful scripting languages -- especially compiled-just-in-time languages such as Perl. Why compile Java into separate bytecode that must be expanded into machine code before it can be run efficiently; why not just run an appropriate scripting language directly? 3) Don't use OOP!!! OOP doesn't have any advantages over procedural/relational combos, and many disadvantages. OOP: causes bloatware, mandates large libraries requiring ever-steeper leaning curves to master, requires programmers to "think backwards", and encourages one to "hard code" data structures into the code body -- a no-no in older programming textbooks. Use a robust procedural language along with a relational database for maximum flexibility and modularity. (Ref: http://www.geocities.com/tablizer/oopbad.htm) Large companies have purchasing power, and could collectively encourage the above changes by being more selective. Perhaps IEEE or another group could be encouraged to develop and coordinate the requirements for such a shift. And perhaps the general computing world could borrow from the embedded community, which of necessity HAS to adhere to more rigorous standards. Software development cannot become a real engineering discipline until the fundamental problems just mentioned have been addressed. And it follows that requiring licenses to continue current practices would be like "putting lipstick on a pig".

Wed, Feb 10, 2010 JimM Washington

Michael, I think you're saying that the world is getting more complex. It's like saying that the weather is changing and we might have a tornado. OK? || If there is a proliferation of platforms, designers can focus on one or two and the others will die out over time. It happened to NetBIOS, and VMS. The coming of 64 bit and IPv6 means that developers must upgrade skills. If they don't, the work will go to people that do, in China or India. Your advice should be to stay relevant. Right? || Finally, licensing software engineers is an answer, but we took an alternate approach by certifying software security professionals last year. You can read about that process on my blog at www.codeguard.org/blog. It's not easy, but it might be a first step. Overall, I agree that it could be a disaster, but we, as an industry, have complete control over the impact.

Wed, Feb 10, 2010 Bob Toronto

Bravo Rob, I agree with you comments!! The Dev Community have shifted gears away from the main stream because the main stream has become Lame! (never thought I would use that word)... Microsoft being the main contributer to the demise of the main stream treats their development community like dirt. The tools are way over priced and has a very closed ecosystem. MS has lost the site of what's important... this has left a space for the Open Source Communities to thrive as a result. All I can see from here is more opportunities not less.... Software quality in my opinion has improved in the Opensource space.... as for Professional Standards....I think that ship sailed to India, China and other countries that the big companies outsourced Corporate Softwared Development to. It must suck to work for a government Org that relies on the "main stream"..... As the Microsoft Titanic starts to sink I would put on your bathing suite fast...... Its going to be a cold swim to shore......

Tue, Feb 9, 2010 Rob Florida

>>This double body blow is the straw that will break the back of the development community and cause massive pain until a clear direction emerges. *** I disagree. The development community is more robust and resourceful than you give them credit for. >>And the ramifications of this chaotic environment are serious: continued buggy and unreliable applications *** The environment is a product of the market. The faster the code is produced, the faster to the marketplace, the more profit is produced or less investors' money is lost. >>with stovepiped data and a short shelf life; *** Companies don't want to share data with competitors, they have invested too much company/investor resources developing the product. Consumers of the software drive the shelf life, try to force them to use PalmOS 1.0 instead of the iPhone OS v3.x >>continued lack of professional standards, licensing and liability for software engineers (unfortunately, I still have to use that term loosely); *** Professional standards = an investment that the market is not willing to pay. >>> and continued proliferation of proprietary, closed devices, data standards and platforms. *** Linux/Unix is a great, stable computing platform that will never be mainstream to the consumer. If a company invests millions of $$$ on a platform, why make it open source so Joe bag O' donuts can hack it up in his basement, sell it on iTunes and laugh all the way to the bank?

Please post your comments here. Comments are moderated, so they may not appear immediately after submitting. We will not post comments that we consider abusive or off-topic.

Please type the letters/numbers you see above