I have been involved in many systems implementations projects, and its only really in last couple of years that I have come to appreciate that software implementations and development projects are beginning to be structured like any other business process.
And why? What do you mean you ask?
Let's take a closer look. Most of us in the industry look at processes day in and day out, as its part of the business world we operate in. The business we work for, whether a small to medium enterprise (SME) or a large multinational all have processes.
The most simple and wildly controlled of processes that businesses have are to do with money. Businesses live and die by the fact they can sell products (whether services, widgets or even software) and receive money for doing so. If we look at Wiki's defintion of a process, we can see it's a fairly elementary component of the work we do.
Wiki's Definition: (Wiki Links)
A business process or business method is a collection of related, structured activities or tasks
that produce a specific service or product (serve a particular goal)
for a particular customer or customers. It often can be visualized with a
flowchart as a sequence of activities.
So why has it always been so hard for software development projects to deliver on time and to budget? I think its because we do not do enough of standardising the processes related to our projects. Sure, we have project methodologies and analysis frameworks, but at the end of the day the projects we undertake always have the same common components and will therefore always fall into this simple definition.
My challenge to you therefore, is to look at ways we can better compartmentalise our systems projects and analyse them in the same way we look at the traditional business processes.
Software as a business process:
Let's go back the money process I outlined earlier on. Assume I am a company that has received an order for a service from another company, this would be the main process:
1. Raise a sales order
2. Deliver the service
3. Raise a good received note
4. Invoice the customer
5. Receive payment,
6. Complete transaction (match the sales order to the GRN to the invoice)
Store all the records in the companies ERP (Enterprise Resource Planning, think SAP) system and you're done.
Simple? Now in order to control my sales order process, I run reports to help me understand if someone does not pay on time..normally called the Aged Debtor report...this lists all those companies that have not paid me within the agreed period, so I have enough information to brow beat them till they pay up.
Why can't we apply this to software development? for example, assume I am a project that is delivering business systems enhancement requests to the main line of business:
1. Raise an enhancement request
2. Create the enhancement
3. Deliver the enhancement
4. 'Invoice the customer' ( recharge business by showing evidence via a traceability tree for example)
5. Receive payment (project charter or enhancement request closed)
5. Complete transaction
Store on the companies SDLC ERP system. We could then run a report highlighting which defects that are preventing delivery of the enhancement over the agreed time frame...the Aged Defect report...By doing this we are applying the same principles of business control to systems developments projects and implementations. Processes and reports to control and manage the outcome, that's the benefit. We can also then start to compare this data across projects and start to lift the lid on the causes of software delivery delays. Apples with apples?
There's the glitch...most IT and Busines Systems departments do not have an ERP system for software delivery. However, I think we now have an answer to this problem.
I have been truly impressed by IBM Rational's Jazz platform of late (and I am as big a cynic as any, especially as I work in software) . With the release of 3.0.1 version, I can now state with confidence that the ERP for software delivery has arrived with the CLM or Collaborative Lifecycle Management offering. Like ERP that has modules of capability (Sales, Purchasing Stock Control, etc), Jazz has modules of capability related to the SDLC (Planning, Requirements, Design, Quality etc)...the journey and the challenge is on...
To know a bit more, check out Jazz and CLM 2011 here:
IBM Rational Jazz