While application of agile principles leads to better project success, some projects are still failing due to the lack of understanding of exact client requirements.
The main reason behind this is that organizations are aiming more towards managing their product, and they do not like to take the burden of managing anything else. This way the business product is focused the most, and thanks to the managed services, reliability and availability of the product is now high. Also, scalability and redundancy is there. In addition to that, the product has a good opportunity to grow itself with the latest technology.
While things are stabilized and have more control in cloud managed services, software delivery lifecycle changes have also happened. The famous waterfall method has been replaced by Agile, and Agile has been replaced by DevOps (Continuous Integrity & Delivery). Here are some of the highlights on how to use AWS to streamline your system architectures and automations:
Agile framework is an iterative and incremental process. It delivers products in collaboration with crossfunctional teams. The main objective of introducing agile into the software development industry was to achieve rapid delivery of high quality products while responding to frequent changes in customer’s mind. Extreme Programing (XP), Scrum, Dynamic Systems Development Method (DSDM), Adaptive Software Development (ASD), Crystal, Feature-Driven Development (FDD), Pragmatic Programming, and Lean Development are practices under agile umbrella. Though all the practices adhere to agile principles and values.
Design Thinking (DT) is also an iterative process, which is a creative strategy to provide solutions to complex problems. It is centered around thoroughly understanding customer’s needs and try as many possibilities, before coming up with a preferred solution. DT is extremely useful for tracking complex problems that are ill-defined or unknown. In this approach, a problem is first analyzed and experimented with different designs.
However, iterative and incremental delivery of Agile is insufficient when the customer is not getting what he/ she desires due to the lack of proper design or solutions. Even though agile projects have a high success rate, the question to raise would be whether agile development can provide customer satisfaction by implementing the right features?
Thus, it is imperative to explore how DT practices could satisfy customer expectations in agile projects. DT is a systematic process focused on innovation rather than traditional thinking.
Following elements were identified as DT practices
This can be used to identify the customer real needs in the requirement gathering phase. Identifying customer real needs are the biggest challenge that software development teams face during the project. Customer real needs can be identified using customer journey mappings, prototypes, Proof of Concepts (POC), Story Mapping, use-cases, heat map, customer profiling and use-case scenarios.
Thinking by doing is action based thinking, which is important to express the idea as tangible with using POCs, prototypes, clickable wireframes etc. Thinking solutions are very challenging, especially in software development because it is important to come up with innovative ideas instead of providing general solutions. With applying thinking by doing practices, the project team is more confident with the solution that they expect to deliver to the customer.
The best solution is then developed out of several experimental designs. The development process needs to be flexible enough to use this approach and apply the best solution that fits to the problem. DT helps designers to resolve the problem by giving a 360-degree view of the problem by considering the different aspects of it, such as end-user requirements, social factors of the environment, current market, and trends. DT helps to look beyond what you see in the tradition problem solving methods, and it gives innovative ideas that match the environment and society.
Moreover, inventors can use DT to win the market with innovative product development. Understanding what customers really want is the most critical part in software development. Main reason for many project failures are due to unclear user expectations. DT practice can be used to understand what customer really wants at the initial stage of the project. Agile and DT practices go hand in hand because both are iterative processes. Therefore, it is easy to apply DT practices to improve customer expectations in agile practices.
Thinking by doing DT practice and visualizing go together. First, make the idea as tangible, then visualize it to the customer. Stakeholder perception on visualizing ideas helps to implement the right feature. This is important because the customer can see what the development team trying to create and feedback is a very effective of understandings the real expectation of the customer.
This approach is very useful for coming up with best possible solutions. Using the divergent approach is to create ideas by exploring many possible solutions. Then, combine the best ideas and techniques to provide the best possible solution for the given problem.
It shouldn’t be a single solution. Several solutions should be preset to the customer, in order to identify what they really want. After generating several ideas by using this approach, choose the best possible one with merging several solutions and considering their respective pros and cons.
Collaborative workstyle is an idea of placing importance on working with a group of people to make decisions by sharing ideas. With the collaborative approach, this is mainly done by brainstorming. Brainstorming can be used to justify decisions, get ideas, evaluate the pros and cons to make decisions, and clarification of ideas. They always say that “multiple brains are better than a single brain”. Stakeholders are important for collaborative work. Senior members of the team specialize people of the area, and owner to make a decision at the end. Otherwise the brainstorming is not useful.
The ultimate goal of a software product is customer satisfaction. The figure illustrates a model which can be used with Agile iterative process.
This model describes how to effectively use DT practices with Agile in a sequential manner within each and every sprint.
As the first step, apply HCA in the requirement gathering phase to identify customer real needs. Understanding correct requirements and what the customer is expecting to see in their product. Therefore, it is important to allocate considerable time to understand the correct requirements by applying HCA techniques.
As the second step, generating ideas by using the divergent and convergent approach. After identifying the real needs of the customer, it is important to identify the best possible solution that is most suited for their business needs. As such, the project team needs to generate multiple ideas and come up with several best solutions based on pros and cons.
As the third step, convert complex problems into pilot solutions based on generated ideas. In this step the feasibility of selected solutions needs to be verified. Doing this will increase the confidence level of both the customer and the project team. Moreover, it can be identified failure very early rather unexpected failures.
As the fourth step, visualize the pilot solutions for enduser testing and for their feedback. In this step, get the customer and end-user feedback for the pilot solution. With this, the customer can imagine what the end result of the product will be like, and they are likely to comment on whether this is in line with their expectation, which helps with fine tuning the process. Next, the end-user feedback is gathered before the MVP is built. As a result, the risk of reworking complex developments is minimized.
Collaboration, which is 5th DT practice is common for both Agile and DT. It needs to be used in every step of the process, involving internal and external stakeholders for decision making and for brainstorming.
Finally, DT needs to be practiced as a synthesis process of Agile. By default, Agile emphasizes value added to the customer through frequent deliveries while DT is identifying the real needs of the customers and providing the best possible solution for their business context. This will minimize the number of iterations for accepting the solution to the customer, and the customer can have many features within their budget and timeline.