Agile Software Development

The Problem is that software projects still deliver an unacceptable level of quality and responsiveness. Part of the reason for this is the industrial-era Scientific Management approach. Part of the reason for this is the progamming culture that grows up around a language...

Agile software development provides information-era management: Reduce Cycle-time and start expecting zero defects.

But the cultural issues and organizational structures remain extraordinarily difficult to deal with. Some hope may be appearing in a new programming language (and more importantly programming culture) Ruby.  Ruby at it's core includes an agile way of development.  Agile was not merely added onto Ruby after the fact like it was for J2EE (and .NET).

The promise of applying Agile-Thinking to Software development is available now. It consists of an Agile Processes like Scrum and ExtremeProgramming (XP) , and a deeply Object Oriented environment and culture. All of these are currently available.

Beating the competition only requires putting them all together.

 


-- Mark Windholtz

The Bright Side of Defects

Suppose you notice your car is suddenly handling poorly going around turns. You check under the hood, and around the outside. Then you notice that the tires are low on air. That must be the problem. You add air to the tires and forget about it. 2 days later the car starts to float while driving on the highway. Once again the tires are low on air.

Do you

  • continue to fill the tires every few days?
  • Or get the tires serviced?

Read Full Entry ...

-- Mark Windholtz

The Process that cannot be named - II

Phases inhibit success because software development is a learning activity. And learning is a continuous activity. Phases break the continuity.

For example in the Phased approach there is a Requirements Phase.


Read Full Entry ...

-- Mark Windholtz

The Process that cannot be named

The typical phased software development processes (aka waterfall, aka SDLC-Software Development Life Cycle) has phases:

  1. Gather Requirements from the Customer
  2. Analyze the problem
  3. Design a solution
  4. Write the code
  5. Test
  6. Deploy

It makes sense to build systems this way. Unfortunately, it also does not work.

What does?


Read Full Entry ...

-- Mark Windholtz