Thursday, May 24, 2007

Software Development = Process Improvement

The point of enterprise applications is to enable business processes.

Great developers understand their business process from end to end - the different departments and partners involved, the miss-steps and hand-offs, the data flows and human tasks at each stage. In fact, often they understand it better than the business managers!

And the main role of many CIOs now is to own the process for improving business processes. This requires strong business skills and understanding of best practice in the marketplace.

Automating Process Improvement

So it's pretty ironic that probably the least automated process I can think of is process improvement - it includes business requirements, analysis, design, coding, configuring, testing, communications, and release. Developers are meant to be the experts at automating processes, and they can't even figure out their own!

As a result of this, you need a translation layer ("business analysts") between the business and software developers. The fact you need a translation layer really bugs me - it should be transparent.

Developers all focus on programming languages and code techniques (Java versus .Net, or dynamic versus static, or REST versus WS-*), but this misses so much in the end to end process. For example, what if there was a website that

  • hosted your application
  • provided page design and mock-up functionality
  • provided workflow design ability between different pages
  • supported version management and code trunks
  • created test environments on the fly
  • produced automatic test scripts
  • provided a security and permissions module
  • handled auto-backups and disaster recovery
  • handled Atom data sources

Viewing Process Flow

Developers want to create master process engines to direct workflows (e.g. Business Process Management Systems, or complex BPEL XML), but this misses the central lessons of the web: the URL, the stateless web page, the hyperlink, and the browser "back" button.

I'm envisaging something a bit different: a 'page sorter view' for web pages, similar to Microsoft Powerpoint's ability to view presentation slides together. This could be used by site designers to:

  • check completeness of the site
  • ensure a consistent look and feel
  • check which pages hyperlink to others (perhaps represented by arrows)
  • check which pages view / edit data sources
  • check page permissions
  • view workflow from page to page
This way, much of the site design can be done before any development is even started, and in time for the business to validate it - it's a much better process for process improvement.

You could even enable a REST style by guiding designers to select appropriate URLs up front, and promoting Atom for data sources.

Plenty of Room for Improvement

Code writing is only a fraction of the end-to-end process for process improvement, which is generally very immature and un-automated.

Just as Software as a Service (SAAS) providers are shaking up industries like account management, HR and Finance, I can see SAAS versions of Eclipse and Visual Studio taking over the market - not just for developers, but for designers and the business too.

Only when developers have automated their own processes will they be able to turn their full power to enabling the business.

No comments: