Sunday, April 18, 2010

Agile... what's next?

I think we are on the verge of something happening in the software development industry. I don't really have anything to back up this feeling, but I can just see the ripples beginning to develop. Agile has been the big idea on the block for quite a while now, but are we sure it produces the best solution to a given problem?

Kanban seems to be picking up steam and helps address some of the realities of software development, but I think we're moving to something more in the future. The big question for me is always "How do we ensure that we have the best solution for a given problem"?

I always look to the natural world for synergies and creative ways of accomplishing tasks. I started thinking about how evolution produces some amazing products and the more I thought about it, the more I began to wonder how we could take key principles of evolution and apply them to software development. A search for evolutionary software development brings up a whole host of interesting pages and research. All of them going back to iterative development, which essentially speaks to me as one of the ways of delivering an agile project.

Evolution to me means more than just being iterative and releasing to a client often. Evolution is about branches, about experimenting, about taking risks, about killing off unsuccessful combinations, about tracing back lineage and most importantly it is about the unique assembly of given problems. It is the survival of the fittest.

If you are going to create an environment where only the best solution will survive, then you need to create an environment that has the following conditions:

1. More than one solution
2. A method to measure the success of a given solution
3. A way of quickly combining solutions to create a new, unique solution to the same problem

Many years ago I remember reading a research paper from a scientist that had created a chip that was able to evolve and recombine its own circuits to solve a problem (If I remember correctly it was comparing to audio signals to see if they were the same). After many generations the scientists looked at the circuitry and discovered that they chip was now utilizing unique methods they had never dreamed of (There were some electromagnetic properties now at play with the configuration of the chip - See http://www.damninteresting.com/on-the-origin-of-circuits for more information).

If in the 90's we as a global community could produce a chip that could evolve, self develop and ultimately leave researchers baffled as to how it functioned, couldn't we do the same with software? Instead of doing paired programming, couldn't we come up with two unique solutions, which are then measured, combined, discarded or built upon?

If you take an idea like Test Driven Development, utilize it with a technology like GIT and take the above suggestion you end up with:

1. More than one solution
2. A method to measure the success of a given solution
3. A way of quickly combining solutions to create a new, unique solution to the same problem

What are your thoughts? What's next after Agile?


2 comments:

  1. Interesting post Tech Manager. I think overall the biggest thing that will lead to an evolution in methodology is focusing on the business value we are delivering. In the IT world, this means producing well thought out working software on a regular basis over a long period of time. If we create a culture that rewards the final product, and not the effort in getting there, then we will see transformation where it is needed. The biggest revolution that a company can undergo is realized from building up the leaders (at all levels) to recognize an reward when it's appropriate and to support when it's needed.

    ReplyDelete
  2. I agree that we really need to focus on business value. I think that the problem we're faced in the challenge of our business not really understanding what they want clearly enough that it can be translated into requirements. If we take an approach where we can show business users multiple options, I think we'll be able to hit a much better final solution.

    "Show" in my eyes, do not mean that we have to develop multiple solutions, we could simply prototype various options quickly.

    ReplyDelete

Bookmark and Share