Apply today for a FREE subscription to CIO Magazine!
Mon, Jan 7, 2008 23:59 EST

|
Posted by: Michael Hugos in Best Practices Topic: DevelopmentBlog: Doing Business in Real Time
Current Rating: |
In spite of all the best practices and project management techniques, scope creep (and resulting delays and cost overruns) has always been the biggest problem on most development projects. The only way we are going to solve the scope creep problem is to understand and deal with the underlying dynamic that creates scope creep in the first place.
This dynamic has two drivers. The first driver arises from the fact that the more we analyze a situation the more complexity we discover and so the more complexity we add to the design of the system. The second driver arises from the fact that most business people have been through system development projects before and they know there will never be a “phase two” on the project (in spite of what anyone says). They know they’re only going to get one shot, so they try to think of everything they might ever need and they push for all those features to be included in the first phase.
These two drivers set up a self-reinforcing cycle that leads to an infernal, downward spiral of mounting problems. Lots of analysis is done, lots of complexity is discovered, people feel they will need lots of features to deal with all that complexity and they insist on getting all those features in the first phase. There is a palpable lack of trust between the business and IT people because of this. Inevitably the design requirements call for a system that is way too big and way too complicated; chances of building it on time and on budget are slim to none, and IT is almost always the party who gets the blame.
The answer to this downward spiral is simple yet also counterintuitive. The answer starts by doing less analysis (not more), a LOT less analysis than is usually thought necessary. Restrict analysis to only what the business people need right now; do not spend time speculating on what they may need a year from now. People know what they need right now because they’ve already thought about that and they can usually tell you in 30 minutes or less. It’s when you start asking people to speculate about what they’ll need one and two years from now that things get complex.
Because you focus ONLY on the here and now, you can do less analysis and you can quickly design a system that gives people that handful of useful features they really want right away. And because the design is therefore relatively simple, you can also build the system very quickly and put it into production.
If you deliver the first version of the system in a 30-45 day timeframe, you will totally surprise (and delight) the business people. They will start using the system right away and they will thank you for making their lives easier. Yes, they will thank you. And they will tell you they didn’t think you could get a system delivered so quickly, and they will start to trust you when you say there will be a phase two on the project.
And then, after a few weeks, you start working with the business people on the next round of features they want to add to their system. They will have had time to work with what you just gave them, and they will see what they need next. Again you are only asking them to tell you what they need right away, they are not being asked to speculate about vague and complex possible future needs.
This agile and iterative system development approach is the way to side-step
What a novel idea – give the users what they want, not what we think they need!
I keep hearing about Agile this and Agile that. Get real! How do you "evolve" from a foot bridge to a bridge that will carry a tank over a river? How does a log cabin "evolve" into a 100 story building? I know that IT is different than all of the physical sciences (it is not!). We have to understand that IT is not different than the industrial age, the nomadic age, the agricultural age, etc. The end product is different, but the physics are the same. If you want a 100 story building (eventually or not - time is not the issue), you have to begin the engineering for that requirement. If you want a Boeing 747, you have to begin the engineering with that understanding. I would love to see REAL examples of how these Agile techniques actually (documented) produced benefits and produced the requirements the business actually wanted.
The problem is that we in IT have not figured out that Engineering an information system is different Manufacturing (implementing) an information system. That was the understanding that led to orders of magnitude increases in productivity in the industrial age, and the ages before it. In the information age we are in now, someone is going to figure this out (perhaps it will be in Japan, as it was in the industrial age). Here, we are always looking for "All you got to do is ...., and you will never have to work again in your life!). Lets get real before we loose the IT business to someone who understands engineering is different from manufacturing.
An interesting perspective that ignores the engineering aspects necessary to take a one story building to ten over time. If the foundation isn’t there you have to go back and put it in. With this strategy you may need to rebuild the foundation multiple times. However, if you start with something built on an SOA foundation this approach might make sense.
Dear Engineering is Different than Manufacturing:
I feel your pain and I hear your anger. We in the IT profession are going through a painful transition - again. I remember the anger that was evoked 25 years ago when PCs began infiltrating corporate offices. IT professionals reacted with a mix of scorn, disbelief and anger. Everyone knew that only big iron could run big companies and those ridiculous little PC boxes where nothing but toys...
What is happening now is even more disruptive (and threatening) to our conventional notions about how to design and build systems. The development environment itself is changing very fast. Ready or not, the systems we develop from here on out will not be built from scratch, but instead will be built using SOA, SaaS, databases, middleware and little chunks of custom code all bundled together under web portal interfaces. They will indeed seem to evolve from log cabins to 100 story buildings.
I see this realization is already starting to dawn on the person who posted the "IT is Engineering" comment; this person is starting to see the implications of SOA. Hmmm... what would happen if we built iterative versions of a system using SOA to combine small chunks of custom code and predefined components like databases, web interfaces, and parts of existing systems and packages?
Of course we could successively scale up a system like this to handle greater and greater numbers of users and greater amounts of transactions and data. Just add more servers and more database capacity and more communications bandwidth as needed. These tasks are not high adventure any more, they are just standard system maintenance operations. And as you upgrade the carrying capacity of the infrastructure, you keep adding new features to the system as business needs dictate and you use SOA to link them in.
I used these techniques as a CIO over a five year period to design, build and iteratively enhance a suite of e-business and supply chain systems that drove the growth and changed the business model of an $8 billion distribution organization. I won awards for this work from CIO magazine, Computerworld and InformationWeek. I've written several books on the subject among which are Building the Real-Time Enterprise and CIO Best Practices both published by John Wiley & Sons. I will be glad to provide you with REAL examples and details and user testimonials of how agile approaches work extremely well.
Eugene Nizker in his comment below asks some very pointed and very appropriate questions. He says it better than I can. It's time for our profession to get over the anger and fear and get on with making agility happen. It's already 2008 and according to my calculations we'll be into the second decade of the 21st Century in two more years. The world is moving way too fast for old 20th Century industrial approaches to work any more. Time to wake up and smell the coffee.
Excellent. I think you hit the nail on the head for the leading cause of scope creep. Your approach to correcting it is a very good one, and will work well in many situations. But nothing in life is ever simple, or one size fits all.
The limitation in the suggested approach, is in the architecture of the solution. If future needs and wants aren’t considered, a system may be designed that will either not scale elegantly, or not scale at all, to meet future needs. A complete rewrite may be necessary. When this happens, the initially successful first phase, may be relabeled an abject failure by the organization.
So how much analysis should be done? It comes down to expert judgment of Project Management, Lead IT Resources, and ideally (if there’s trust) Project Stakeholders. It’s part of why Project Management is an art form, as much as a science.