Do you still remember the last time you did a “simple” software developing project? With the rise of big data, cloud platform, IoT, AI, and blockchain, software development projects have become bigger and more complicated, and delivery times shorter. How to develop software that closely matches clients’ values is now more important than ever, and can even make or break a product. All of this means change—software needs must quickly evolve with the times and meet the clients’ needs. Hence, agile development was born.
There is a saying that aptly describes software development: “In software development, the only thing that is constant is change”. Agile development is about never refusing to change, and even actively seeking to change. If we think about it, isn’t the process of developing software always filled with all kinds of changes? Clients’ businesses always change with their enterprises’ development. In software development, the changes are seen in business logic, user numbers, security, and so on. In addition, as products are implemented, clients will gradually have clearer ideas about their businesses. Therefore, new demands often appear after clients have uses a product for a while. Also, sometimes software analysts may misunderstand the clients’ needs, so correction is needed. All of these changes happen constantly. Agile development embraces changes through client engagement, repetitive operation on a regular basis, incremental delivery, and constant improvement.
Incremental Delivery and Constant Improvement
Applying repetitive operation and incremental development, agile development runs repetitive operations regularly, delivers in increments, and enables clients to engage in the software development process, so the team can receive the clients’ feedback in time. In doing so, clients will have confidence in the development team, while the team can gain confidence from valuable delivery. Another benefit of this is we can have excellent error testers—our clients—for free. Incremental delivery also gives us opportunities to correct errors as soon as possible at minimum cost.
All kinds of errors will occur during the process of developing software. Some errors are to do with changes in needs, some involve developing methods and skills, and others are related to team management and team cooperation. In agile development, retrospective meetings enable the team and the clients to reexamine current issues and improve them. Thus, errors can be fixed efficiently and be prevented from reoccurring. A team that can keep improving will keep growing, and will definitely be a team that is willing to embrace changes.
Every repetitive operation in agile development needs to be run in a fixed time period. A Scrum usually needs 2 to 4 weeks. The first day of scrum will start the repetitive operation, and the delivery, presentation, and retrospective meetings will be executed on the last day. Every sprint will have its own rhythm. A good team should establish a rhythm that is not too fast and not too slow. In short, a team’s rhythm should be controllable. Therefore, avoiding multiple people taking leave at the same time is a detail that the agile development team needs pay attention to. A burn down chart is a good tool for project management and for checking the team’s rhythm. Sometimes, appropriate adjustments are needed to maintain team’s rhythm, otherwise the project may spiral out of control.
This means encouraging every individual to help finish the project, giving them the environment and support they need, and trusting that they can accomplish their tasks. Building team trust is very important in agile development. Agility emphasizes self-organization and self-management to participate in every single part of agility actively, such as refactoring codes, work priority arrangement, pair programming, and so on. All of these tasks require mutual trust among team members.
Another important element is mutual trust between development teams and clients. Traditional projects often provide detailed work instructions and fixed schedules. However, the agility team embraces changes, and keeps delivering high-value functions. Therefore, if one side is too overbearing, the other side will become afraid of changes and lose their energy and creativity. Moreover, meeting clients’ need involves a lot of trial and error. In other words, the team needs to develop prototypes fast for clients to use and find errors, and then the team corrects these errors in real-time. None of this can be accomplished without trust.
Wistron ITS has Built Organizational Agile Development with Clients
Wistron ITS has been actively participating in every level of our clients’ organizational agility projects, including program increment planning for every product, agile release train, RPE meetings; as well as agile development activities such as product function planning, repetitive operation planning, daily meetings, incremental delivery, CI/CD, constant iteration and retrospective meetings. We continue to successfully deliver different increments of each product, which is why Wistron ITS has become our clients’ business partner in 2017.