Abstract: Whenever we design software we face competing concerns. We have to tradeoff ease of implementation, concision, maintainability, and understandability. Often we don't do this consciously, we just sit down and do the work. Each of us bring our development background - the things we've learned or read over the years. If we want to have a discussion about which way is better, it often becomes an appeal to our experiences, the sources we've learned from, or our intuition.
This session presents the practice of using Design Challenges as a way of using framing questions to evaluate code. Design Challenges move beyond design principles by stimulating thought about the ramification of various structural choices.
Learning Outcomes: - You will learn now to apply a set of design challenges to critique code and design in a non-confrontational way. You will also learn how to brainstorm new design challenges, apply them in practice,and leverage them to arrive at better design through team conversation.