We live in a fast-paced world nowadays. Uncertainty about even the near future seems to have become the norm. In order for companies to survive in the long run they need to respond to the continuously changing environment they operate in. So how does running a business differ from developing software?
Internet has changed the way we consume music. Many record stores that sticked to their formula that made them profitable – selling CD’s – closed down or went bankrupt. Why? Their strategy made sense in times where accessibility of music was limited, and only one medium of consuming music was dominating the market. Some record stores survived by adapting to these changing circumstances but the majority is extinct. Why would someone still go to a record store? What is the real need of the customer they can still fulfill? If you’re curious about possible answers for music retailers have a look here.
This is no different for even one of the most conservative branches in the world: the oil industry. After the recent Paris Agreement, we can all foresee fossil fuel will find its way to our history books instead of firing up our combustion engines. Although we don’t know the exact time, we can see it coming. So here’s the choice for the oil industry: are you going to follow your plan to fill your pockets with short-term profits of selling oil and shut down your company when the time has come, or are you going to react to the changing context, and transform the core business of selling oil into providing sustainable energy to the world (in order to survive as a species)?
How does this relate to software development?
The answer is simple: there is no fundamental difference between developing software and running a business, although the needs of end users of software tend to change even faster than the world we live in. Quickly responding to these changing needs is the strategy to stay successful and outrun the competition. And in order to change quickly as an organization, you need to become nimble and you have to resolve organizational constraints that slow down change and innovation.
But how do we identify these changing needs? People in general usually say what they want, which is rarely what they need. But finding out what they want is a great starting point as long as we understand more work needs to be done to find out what they need and for what reason.
How do we discover this? Here comes the good news: by directly talking to the people that are buying and using your product or service. And by talking I mean talking. Don’t limit yourself only to online communities and surveys but visit your customer and sit next to him or her while your product is used. Observe, be curious, ask open questions, try to understand what is important and why.
Whether your product is an app or a sandwich doesn’t matter at all. As long as you keep talking with your consumers you will discover what works and what doesn’t. Experiment based on these new insights and ship it quickly to the market to verify if it really works. Don’t be afraid some experiments will fail because I can guarantee you some will fail. But failure is where you can learn the most, and this learning enables you to adapt to the continuously changing market needs. And when you truly understand your market, you will be successful.
Agile software development
This way of thinking is reflected by the four values of the Manifesto for Agile Software Development. The principles behind the Agile Manifesto describe more specific behavior that puts the values in practice.
No matter what you believe, Charles Darwin was at least right about one thing. It is not the strongest of the species that survive, nor the most intelligent, but the one most responsive to change.