Developing software is a lot like many major decisions in life. For example…
Let’s say you own a home and you need to protect some tools and equipment. You may have garden tools, a lawn mower, maybe snow shovels and a snowblower. You need a place to store them.
The simplest and lowest cost solution may be pitching a tent. There are lots of choices. You don’t need to spend much money or devote much time. No need to do a lot of planning. You pick out a tent and set it up.
Then buyer’s remorse sets in. You realize that tents have a short life span when constantly exposed to the weather and they offer little, if any, security. So, you decide that a shed is a better solution. You have to decide between metal and wood construction. You also have to decide whether to build it yourself or buy a pre-fabricated unit.
The pre-fab units are readily available, come in lots of sizes and styles, and can be delivered within a few weeks. You order one and have it delivered. It looks great…until you realize that you have some special needs that a pre-fab unit doesn’t accommodate.
You need lots of windows (so you can start your garden plants in the shed each spring) and you need electrical and water connections. Also, the plants take up a lot of space so the shed needs to be bigger. Time to examine other options.
You realize that modifying the pre-fab shed to meet your needs will be a lot of work and expense. It’s just not laid out for your needs. So, you decide to design and build a custom shed. You realize that it will be a project in that you will need to design the shed, purchase the materials, lay a foundation, build the structure, and perform the finish work such as roofing and painting.
You begin the design process and realize that you could add a small apartment over the shed as a second floor to generate rental income. Why not? You have to run water and electrical connections anyway. Just add a sewer line for a bathroom and you have an apartment.
Of course, you’ll need to get help from professionals having experience with this type of structure and you’ll need to allocate a lot more money than you planned. What started out as a simple tent purchase has evolved into a major construction project.
Scenarios just like the above are common in the world of software development. Here’s how it might play out.
It starts out with a simple, desktop, software application — the tent. The software is quickly outgrown as it was not meant to handle a large number of users or big data sets.
A COTS (Commercial Off-The-Shelf) enterprise application or a cloud-based service (the pre-fabricated shed) is tried but it too falls short of what the business needs.
A development team is assembled to build a custom software solution. They are eager to get started and quickly define the business requirements so they can begin the implementation (the custom shed). But, before they can deliver anything of value, the requirements change drastically and the project scope, time and cost increase enormously (the apartment).
What can you do to avoid such a scenario?
Clearly, you need to ask lots of questions and dig deep when seeking an understanding of what the business needs today and what it may want tomorrow. Unfortunately, that’s not enough.
You can never be sure that the above scenario won’t happen to your project. Businesses evolve — sometimes with surprising speed. People come and go — with greater speed. Money appears and disappears — with the greatest speed of all.
For these reasons, your software team needs to move fast and deliver incremental updates rapidly. For most of us, the days of big, protracted, software releases are over. So are the days of building massively complex solutions before engaging the end users directly.
Remember, they may ask you to pitch a tent when what they really want is an apartment. It’s your responsibility to lead them toward the best solution. Agile development techniques can help. Are you up for it?