dispatches

dynamic. code. solutions. why?

Software Industrialization

without comments

Starting a new software project starts a spiral of dualities: excitement and dread, anticipation and fear, happy to have work yet not wanting to do much of it. From the moment the project starts – regardless of whether it is straight development or starting from interviews with business stakeholders – everyone involved is afraid that their expectations won’t be met, but also afraid that their expectations will be met.

Software is cast in many different ways:

  • Inherently creative
  • Abstract, intangible yet has real results (do you remember Year 2000? )
  • Really, really, hard
  • Expensive
  • Projects are often late, over budget, and don’t meet users’ needs
  • Requires special skills, years of current & practical experience
  • If it breaks, it’s the user’s fault and costs a fortune to fix

If you looked at the software industry in a vacuum, you’d probably wonder how millions of developers and hundreds of thousands of organizations make their living from producing and maintaining software – with a track record like this, the field should be full of starving programmers!

Things are very different outside the vacuum – there’s a lot of success and money in the industry. Yet, since the beginning (about 40 years), the industry has set its focus on transforming itself into something that resembles a factory. A distributed factory that uses techniques like just-in-time-delivery and that takes advantage of world-wide capabilities and pricing, resulting in an industry that provides the solutions that businesses need, in the time that they need them. The process is called software industrialization.

Software industrialization attempts to find a balance among complexity, quality, time, and cost while increasing productivity. The end state occurs when the industry is capable of repeatedly delivering fast (time), inexpensive (cost), quality (quality) and complex (complexity) products.

Current trends focus on the four key pillars of industrialization:

  • Standardization – build versus buy, broadly accepted & open standards
  • Automation – automated testing, DSLs, supporting toolsets
  • Specialization – use specialized components, libraries, product lines; introduce specialized skill sets only when everything else fails

Software Industrialization is not new – Microsoft, for example, has been successful at moving towards many aspects of software industrialization:

  • Broad acceptance of products like SharePoint, SQL, and BizTalk servers – all are de facto standards
  • Commitment to the .NET Framework and Base Class Libraries
  • Standardizing on the C# programming language
  • Integrating techniques like MVC into products like ASP.NET
  • Unifying object models, configuration through WCF, WPF

Broad acceptance of products like SharePoint, SQL, and BizTalk servers – all are de facto standardsCommitment to the .NET Framework and Base Class LibrariesStandardizing on the C# programming languageIntegrating techniques like MVC into products like ASP.NETUnifying object models, configuration through WCF, WPF

Standardized technologies drive adoption, yet the scarcity of people that are capable of understanding and effectively applying them has driven organizations to look elsewhere for talent. The industry today outsources some aspects, which often get outsourced again, to reduce cost and still maintain quality.

At the beginning of this article I talked about a spiral of dualities – will software industrialization shift towards one of the dualities? Which one? What happens when software is so easy to build that, like manufacturing in many countries, kills the industry – transforming it into an industry where a margin of 0.02% is considered the foundation for building a business and attracting investors. What happens to all of the people that use the software – are they so naive to believe that they are at the top of the food chain – the ultimate consumer? What makes anyone think that they have intrinsic value in an industry that tries to convert its consumers into producers?

Fortunately, F. P. Brooks is right – there is no silver bullet. While we continue to search for the silver bullet anyway, software industrialization will work to get us closer to fast, cheap, complex, and quality software that can often be made to be good enough to get the job done.

The problem is that we may stop searching at a point when the industry becomes good enough. Fortunately, that’s blog post for another day.

  • Broad acceptance of products like SharePoint, SQL, and BizTalk servers – all are de facto standards
  • Commitment to the .NET Framework and Base Class Libraries
  • Standardizing on the C# programming language
  • Integrating techniques like MVC into products like ASP.NET
  • Unifying object models, configuration through WCF, WPF
  • Broad acceptance of products like SharePoint, SQL, and BizTalk servers – all are de facto standards
  • Commitment to the .NET Framework and Base Class Libraries
  • Standardizing on the C# programming language
  • Integrating techniques like MVC into products like ASP.NET
  • Unifying object models, configuration through WCF, WPF

Standardized technologies drive adoption, yet the scarcity of people that are capable of understanding and effectively applying them has driven organizations to look elsewhere for talent. The industry today outsources some aspects, which often get outsourced again, to reduce cost and still maintain quality.

At the beginning of this article I talked about a spiral of dualities – will software industrialization shift towards one of the dualities? Which one? What happens when software is so easy to build that, like manufacturing in many countries, kills the industry – transforming it into an industry where a margin of 0.02% is considered the foundation for building a business and attracting investors. What happens to all of the people that use the software – are they so naive to believe that they are at the top of the food chain – the ultimate consumer? What makes anyone think that they have intrinsic value in an industry that tries to convert its consumers into producers?

Fortunately, F. P. Brooks is still right – there is no silver bullet and the essence of software development remains elusively at large. While we search for the silver bullet, software industrialization will work to get us closer to fast, cheap, complex, and quality software that can often be made to be good enough to get the job done.

The problem is that we may stop searching at a point when the industry becomes good enough. Fortunately, that’s blog post for another day.

Written by Erik Westermann

June 17th, 2010 at 3:46 pm

Posted in Uncategorized

Tagged with

Hosting Issues, Moved Blog

without comments

My web host made some changes which lead to problems with my outdated installation of Community Server (2007).

Instead of fixing the problems, I abandoned Community Server in favour of WordPress, so now I am migrating content from the old blog to this new one.

var testCode = "Just testing some code";

Written by Erik Westermann

June 17th, 2010 at 12:35 pm

Posted in Nontechnical

Tagged with