As a CIO I suspect that you are well aware that there are a number of different ways that your IT teams can go about developing software (and doing a lot of other things). There is the classic method that has been used for over 40 years called “waterfall”. Then there’s the new upstart in town that everyone seems to be flocking to called “agile”. All of these options can place a CIO in a difficult place. Which way is the best way for our teams to create products?
Starting At The Beginning: Waterfall
It all begins with the waterfall approach to developing software. The waterfall methodology follows a specific sequence from start to finish when the final project is delivered. Project teams execute and fully complete each process or cycle below in the same and exact order each time. Requirements gathering and analysis is the first part of the waterfall approach. Here, information is gathered from clients and other key stakeholders about the functional, system, or technical specifications to be used in a project. Next comes the design: User experience experts work with clients, product team, and other key stakeholders to determine what the product should look like and all of the other desired elements.
Later in the process testing is performed. Performance, systems, and user acceptance testing is then done to ensure the product meets the identified requirements. If defects or bugs are discovered, then they are addressed before delivery. The last phase is maintenance. After delivery, a customer can request additional scope changes to be added and approved. These will, of course, result in additional project costs and time.
Say Hello To The New Guy: Agile
There are limitations to the waterfall technique. Because of these, a new approach called agile was developed. Agile was first discussed in the 1970s in a published paper by William Royce about the development of large software systems, agile is a project management methodology composed of short incremental development cycles called “sprints.” Each agile cycle focuses on continuous improvement in the development of a product or service. Guided by four fundamental values and 12 principles in the Agile Manifesto, this provides an iterative and people-centric approach to software development and involves the following processes:
Agile, like waterfall, begins with planning. This first step involves customers and key stakeholders working together to conceptualize, brainstorm, define, prioritize, resource, and budget a project, which is then approved and initiated. Next comes design. User experience experts work with a Scrum master, client, product team, and other key stakeholders to determine what the product should look like and all of the other desired elements. After this comes development. In this build phase, the development team works through various iterations called “sprints” to create a product that meets the client’s requirements.
Once the product has been created, it is time to do testing. This phase ensures the product is in line with requirements. If defects are detected, the product goes back through a development phase to correct the issue before being tested again. This cycle continues until the product meets the desired specifications or goals. The final part of an agile process is feedback, Teams then look back at the entire process to evaluate how to either improve the product or team performance.
Which Approach Is The Best?
There are many benefits to using agile and to using waterfall, including the following:
The waterfall approach has many benefits. Although the waterfall cycles are more formal and sequential, the lengthy and ordered processes are easy for small and large teams to navigate. Set development cycles can provide more stability for new teams starting out. Project requirements are established at the start, making project execution less complex and with fewer moving targets. Agile also has benefits. Development is rapid yet flexible. Due to the short iterative sprints and a focus on quality, teams are able to identify and fix defects much faster than waterfall. Various small teams can be assigned different tasks that may not hold up different aspects or phases of development.
However both approaches also have their drawbacks. For waterfall development is slower and less flexible due to its sequential nature and is dependent on the completion of the previous phases. Issues are usually only discovered later in the testing phase. Requirements are determined and approved at the start of the project. Agile requires a Scrum master who is experienced with sprints and who is not easily flustered due to the fast nature of iterations. Customers may tend to get frustrated with many requests to review changes. If teams are not well-organized or self-governing, agile may present issues for remote teams located in different parts of the world in varying time zones.
CIOs need to be aware of the advantages and disadvantages of both approaches. Which one to use on a given project will depend on the specifics of the project itself. Make sure that you are aware of what your options are and make wise choices!
What All Of This Means For You
Software development has never been an easy task. There are a lot of moving parts and teams have to manage demanding customers, short development cycles, and limited requirements in order to deliver products that customers want. As a CIO it is your job to make sure that you understand what needs to be done on a given project. Once you know this, you can make a decision as to which development method will best meet the needs of both your development team and the end customers. Getting good at doing this will allow your IT department to make the best use of all of the available development methodologies.
Question For You: When do you think the waterfall technique should NOT be used?
Click here to get automatic updates when The Accidental Successful CIO Blog is updated.
P.S.: Free subscriptions to The Accidental Successful CIO Newsletter are now available. Learn what you need to know to do the job. Subscribe now: Click Here!
What We’ll Be Talking About Next Time
As though airline CIOs didn’t have enough to worry about dealing with the importance of information technology, some people in the CIO job are now having to worry about IT systems that spend their time flying from city to city. CIOs for the major airlines have become aware that their company’s most expensive assets, their airplanes, may be vulnerable to hacking attacks. As airplanes have become more and more modern, the number of IT systems that they contain has been increasing. The result of this is that each airplane is almost as complex as a flying data center and it has as many vulnerabilities. This means that CIOs need to take steps to find ways to protect them.