“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:
- The Players
- The Game
- 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
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
“A good retreat is better than a bad stand” – Irish sayings
- saving energy, time and money
- maintain capacity to join the game later under more favourable conditions or move to another game
- no chances to succeed
- Don’t do anything
- 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
“Evolution is not a force but a process. Not a cause but a law.” - John Morley
- 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
- Slow, requires many improvement cycles
- Reliance on existing fundamentals and core ideas
- Low chances of emergence of disruptive ideas and breakthroughs
Select working existing ideas and improve them, dump harmful ideas
- interested and learning players
- complex, unpredictable, but promising game
- moderate pressure, positive dynamic, absence of serious fundamental problems
“It is impossible to predict the time and progress of revolution. It is governed by its own more or less mysterious laws.” - Vladimir Lenin
- Fast leap forward, rapid advance
- Quick removal of barriers, fundamental problems and weaknesses
- Overcoming people inertia and group thinking
- 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
Come up with new crazy ideas, close your eyes and jump to implement them
- 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:
- The best strategy for the present moment (criteria are discussed above)
- Actions to enable better strategy in the future
What can a team do to prepare for the better strategy?
- Grow - increase capabilities and motivation of players:
- 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
- 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.
- Adapt - constantly improve, adjust and respond to become fit for the changing environment, people minds and new opportunities
- Be Agile
- 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.
- 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.
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.
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.