isoga - Fotolia
Design thinking is a development methodology that focuses on cognitive, practical and strategic elements of the design process to ultimately lead to better development. Design thinking's main goal is to improve future development with products and services that are desirable, viable and feasible for users.
In the software development world, design thinking enters the picture when developers have to understand what a customer's requirements are in conjunction with certain challenges and limitations. If teams implement design thinking, the approach can help solve complex problems that don't have any distinct answer.
Let's examine how design thinking and Agile are similar but different approaches to software development and testing.
5 tenets of design thinking
Design thinking can be broken down to five integral tenets.
- Empathize. The designer must identify behavioral patterns, ask questions and assume challenges regarding the final outcome of the project.
- Define. The designer will classify the problem statement and use that knowledge to address and prioritize the user's needs.
- Ideate. In this phase, the designer will work alongside other teams involved in the development process to solve the problems through a series of brainstorming sessions, mind-maps, whiteboarding and other cognitive processes. At this point, the team will develop a layout for the architecture and move closer to actual design.
- Prototype. Design and development teams create a prototype of the actual product. In this phase, teams will build out the product for the first time. This is a phase in which the teams can work together to build wireframes and working prototypes.
- Test. With a prototype now in place, teams can conduct tests to determine if their product solves the problems previously identified. If it does, the prototype can move closer to deployment. A positive outcome will turn the prototype into a minimum viable product, which continues along the development pipeline; a development team then, takes user feedback and continues to improve the application. If the outcome is not positive, teams will need to revisit these problems and create a better product.
4 Agile Manifesto values
The Agile Manifesto is comprised of the following four key values:
- Individuals and interactions over processes and tools. There is more value given to individuals and interactions rather than processes and tools.
- Working software over comprehensive documentation. Preparing documents such as technical specifications, test plans and interface design documents and getting them approved takes a lot of time. Agile doesn't eliminate documentation, but it's streamlined. For example, developers create user stories that provide enough information for the developer to get started.
- Customer collaboration over contract negotiation. The Agile Manifesto describes a customer who collaborates with the development team often, and periodic demos ensure the product meets the customer's requirements.
- Responding to change over following a plan. Contrary to the traditional software development model where change was regarded as an expense and avoided as much as possible, the Agile development model welcomes change because it improves the product and provides additional value.
Design thinking vs. Agile
While design thinking and Agile differ in processes and mindset, they can complement each other when a development team uses them correctly. One of the biggest driving factors in Agile frameworks such as Scrum and Kanban are feedback loops. A -- another critical element of Agile -- is itself also a feedback loop that helps a team become more Agile.
While design thinking determines the right problems to solve, Agile is a project management methodology that helps build better software faster. However, when you combine design thinking and Agile, it can lead to better development and ultimately, greater profits.
Agile Manifesto and design thinking
The Agile Manifesto still represents the core of Agile development, despite its age. The key elements of the Manifesto still play a role in software development; they are:
- Have a goal for whatever you're doing.
- Accept feedback on a positive note and try to get tangible results out of it.
- Ensure you're not constrained in following a plan that cannot be changed.
- Accept that everything is constant except change.
In addition, the Agile Manifesto emphasizes communication, trust and relationships for software development. Face-to-face and constant communication between individuals, teams and business leaders helps keep everyone in the loop as a project moves forward. Regardless of the physical location of anyone on a given team, open lines of dialogue help keep everyone aware of problems, successes, challenges and achievements throughout the process.
Outside of internal communication, customer collaboration also represents an integral part of Agile development. While how a development team experiences the customer's voice has changed dramatically since the Manifesto was written in 2001 -- social media, video conferencing, chatbots, etc. -- the customer voice is still important, and developers must factor it into development discussions.
If development teams can couple the ideologies of the Agile Manifesto with design thinking they can create a project environment that encourages collaboration, open communication and a design process that fosters creativity and innovation.