Software Creation Mystery - http://softwarecreation.org

Selecting The Best Strategy for Software Teams: Retreat, Evolution or Revolution

“If you do not change direction, you may end up where you are heading.” – Lao Tzu

Software teams have three main strategies to achieve success: retreat, evolution or revolution.

  • Retreat – refusal to act or the art of knowing when to say NO. 
  • Evolution – continuous improvement and generation of ideas stemmed from existing set of ideas.
  • Revolution – rapid advance with radical and disruptive ideas, overhaul of existing core ideas.

How can software teams choose the best strategy? They should consider three components:

  1. The Players
  2. The Game
  3. The Dynamics

1. The Players
A software team includes programmers, designers, domain experts, system administrators, testers and other active contributors. Each players has 2 main characteristics

  • motivation to achieve success
  • capabilities (experience, knowledge, skills, ability to learn)

2. The Game
Each project could be considered as The Game where the main goal is successful delivery of software. The game represents various factors: client’s needs and goals, technology, project context, constraints and environment. The game has two main variables:

  • novelty – how much players know and understand about The Game, and their ability to make intelligent moves
  • complexity – how complex, predictable and controllable is The Game

3. Dynamics
Interaction of a software team with external and internal forces. Characteristics:

  • pressure – customers, users, competitors, market, environment
  • trend – positive or negative dynamic of the project and software product

 

Strategies overview

1. Retreat

“A good retreat is better than a bad stand” - Irish sayings

 

Pros

  • saving energy, time and money
  • maintain capacity to join the game later under more favourable conditions or move to another game

Cons

  • no chances to succeed

How?

  • Don’t do anything

When? 

  • poor players – lack of expertise, skills or low morale
  • too complex, uncertain and overwhelming game
  • a project is collapsing or hopelessly loosing positions in a highly competitive environment

2. Evolution

“Evolution is not a force but a process. Not a cause but a law.” - John Morley

 

Pros

  • Reliable mechanism
  • Continuous improvement, adaptation to changes and complex environment
  • Emergence of unforeseen advantageous traits
  • Supports stability and full functioning of the project
  • Enables productive focus, collaboration and harmony; keeps morale high

Cons

  • Slow, requires many improvement cycles
  • Reliance on existing fundamentals and core ideas
  • Low chances of emergence of disruptive ideas and breakthroughs

How?
Select working existing ideas and improve them, dump harmful ideas

When? 

  • interested and learning players
  • complex, unpredictable, but promising game
  • moderate pressure, positive dynamic, absence of serious fundamental problems

3. Revolution

 

 “It is impossible to predict the time and progress of revolution. It is governed by its own more or less mysterious laws.” - Vladimir Lenin 

 

Pros 

  • Fast leap forward, rapid advance
  • Quick removal of barriers, fundamental problems and weaknesses
  • Overcoming people inertia and group thinking

Cons

  • Sporadic, discontinuous, unreliable, risky
  • Possible resistance and fear of change
  • Provides little time for adaptation and ignores complex environment interactions and feedback loops
  • Causes destabilization, temporary chaos in the project

How?
Come up with new crazy ideas, close your eyes and jump to implement them

When?

  • the best and highly motivated players
  • manageable and well understood game
  • radical shift is required to sustain pressure and overcome limits to growth or fundamental problems

The Road to The Best Strategy

As you can see, there is no best strategy for every situation.

Evolution is the most preferable, comfortable and reliable strategy in the complex uncertain world. Few revolutionary ideas will be very successful, come at right time and have significant impact, but most will fail and fade. Most of our achievements are result of evolution than revolution. However, revolution could promote new disruptive ideas, solve fundamental problems and achieve radical shift and advantage. Retreat is a conservative and disaster preventing strategy. A software team can apply these strategies on different stages for different levels of the project.

Software team should think about two goals:

  1. The best strategy for the present moment (criteria are discussed above)
  2. Actions to enable better strategy in the future

What can a team do to prepare for the better strategy?

  1. Grow - increase capabilities and motivation of players:
    • Experiment, make mistakes, acquire knowledge and shape skills. 
    • Consider personalities, group psychology, interests to make people energized and motivated to achieve success.
    • Create stimulus for growth
  2. Learn - you cannot actively change the game, but you can learn the game and make it more predictable and manageable. 
    • Apply system thinking to understand core principles, relations and forces.
    • Become an expert, whose knowledge and intuition could suggest the best moves
  3. Watch - you should watch the internal and external changes
    • Set up feedback loops (e.g. retrospectives) and intelligence that serve as early warning and prevention system
    • Honestly evaluate existing situation without self-deception and blaming others.
  4. Adapt - constantly improve, adjust and respond to become fit for the changing environment, people minds and new opportunities
    • Be Agile
  5. Innovate - strive for the new revolutionary ideas that could change the game or at least give you advantage (within tight project budget :)) Maybe new ideas will fail, but they will provide you with invaluable experience and increased capabilities of the team.
  6. Remove limits to growth - every process have some bottlenecks that slow growth. Removal of these barriers allow to move faster with better results.
    • Find your limits for growth and start eliminating them.

Limits to growth: reinforcing process is set in motion to produce a desired results. It creates a spiral of success but also creates secondary effects which eventually slow down the success.

Another method of finding fundamental problems is 5 Whys. The 5 Whys is a question-asking method used to explore the cause/effect relationships underlying a particular problem. Ultimately, the goal of applying the 5 Whys method is to determine a root cause of a defect or problem.

 

External Forces 

A software team has power to change things, but external forces are very strong.

  • environment can change
  • opponents become stronger
  • product idea become useless

Three small case studies show dialectic of evolution and revolution.

Cambrian period - environment triggers revolution within evolution.
The Cambrian explosion was the seemingly rapid appearance of most major groups of complex animals around 530 million years ago. Before about 580 million years ago, most organisms were simple, composed of individual cells occasionally organised into colonies. Over the following 70 or 80 million years the rate of evolution accelerated by an order of magnitude and the diversity of life began to resemble today’s.

Relatively small changes in the environment are considered one of the main reason for the explosion. One of them is increase in oxygen levels. Shortage of oxygen prevented the rise of large, complex animals. An increase in the concentration of oxygen in air or water increase the size to which an organism could grow without its tissues becoming starved of oxygen. 
Raise of complex animals triggered arms races between predators and prey that caused explosion of huge variety of animals shaped by natural selection. Many species become extinct that could be considered as an extreme version of retreat.

Auto industry - winning opponents stop revolution
100 years ago hundreds of automobile companies competed and produced many revolutionary ideas – from steamed cars to battery powered vehicles. Innovation was rapid and rampant, with no clear standards for basic vehicle architectures, body styles, construction materials, or controls. Development of automotive technology was rapid, due in part to a huge number of small manufacturers all competing to gain the world’s attention.

Revolution continued until gasoline-powered cars makers won with a cost effective design, standardized components and better mass production techniques such as an assembly line. After 1930, the number of auto manufacturers declined sharply as the industry consolidated and matured. Starting from 1960 nearly all modern passenger cars are front wheel drive unibody designs with transversely-mounted engine running on oil products.

Fundamental changes in the game (ecology, fuel cost) seem to trigger a new revolution with gas-electrig hybrids, electric, fuel cells, biomass powered automobiles, but this is much smaller revolution than 100 years ago.

Search engines - a simple algorithm and profitable business model renders evolution pointless
From creation of the Internet in 1993 multiple search engines appeared and become popular and faded – Archie, Excite, Yahoo, Lycos, Infoseek, Alta Vista and many others.
Search engines revolution produced many ideas. Yahoo created manual directory. Wanderer deployed web spiders. Excite brought statistical analysis of words. Alta Vista introduced natural language processing and Boolean operators. Inktomi popularized the paid-per-click model.

However, Google won this revolution with Page Rank algorithm counting incoming links as votes with different degree of authority. After adding profitable business model based on pay-per-click AdWords service, Google become unstoppable - 70% of searches in United States with constantly increasing share.
Can anybody beat Google in search? Evolution won’t help here – revolutionary ideas are needed.

Afterword

I don’t know what is the best strategy for your team – there are so many factors to consider. But I know, your team will win if players honestly recognize reality, pragmatically select present strategies and move to enable the best strategies for achieving success in this complex world.

AddThis Social Bookmark Button AddThis Feed Button


Comments

Currently I’m experiencing a situation where the team doesn’t strive to learn from mistakes and tackle root cause of problems (pareto analysis). The same problem will always repeat in the near future and different players will have to tackle it again.

It is as you wrote, from The Players graph, if the other players is incapable and indifferent and resisting any change that is brought upon them. It is better to “retreat” by switching to other development team (if there is another team) so that all the negativity doesn’t have time to take hold in you.

Comment by mkhairul | November 13, 2008 9:34 pm

This blog have little value without you and your comments, thoughts and discussions. Please, leave your comments. You are welcome to debate and criticize any idea, but, please, don't attack other people. Thanks for your contribution!

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Subscribe without commenting

Software Creation Mystery - http://softwarecreation.org
This work is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 3.0 License .