Design Thinking for Developers
Software is eating the world, but do engineers have the knowledge of the stakeholder's domain to bear the responsibility of transferring domain knowledge to software? The Rosetta Stone of software is to have a domain language that clearly communicates in the language of the field, but developers struggle to get past communication problems:
- Misunderstood requirements.
- Lost context over time.
- Code that does not capture intent properly.
- Unintended consequences of poorly modeled data.
Our workflows and structures create communication barriers we must break down in order to move our implementations closer to their domains. As developers, our goals should include moving code closer to the vocabulary of the domain. This requires understanding not only the problem being solved by a feature but also, more broadly an understanding of the field we are working in.
Design thinking offers a toolset for gathering insight into the domain that can not only help engineers understand a user's problem more fundamentally, it can also offer byproducts such as:
- Providing a better understanding of the entire domain.
- A clearer path to a domain language.
- Understanding problem nuance.
- Gaining lessons learned of the user.
This workshop walks users through a design thinking exercise with an emphasis on being the engineer in the room. We will break into groups and follow a process of exploring the problem space, make CodeMash better for volunteers and attendees. The workshop will be focused on user interviews, capturing vocabulary, ideation techniques, prototyping and user validation. The outcome is a better understanding of how to capture value from these types of session that lead to the development of domain-centric data structures, domain languages, better DB structures, and clearer documentation with more user validation and better long-term understanding of the code base and product.