Sunday, June 7, 2009

Responsive Design

Extreme Programming Explained: Embrace Change (2nd Edition)Kent Beck gave a talk at QCON 2008 about Responsive Design. Kent starts out by defining design as beneficially relating elements. Design has elements. The elements have relationships, and the relationships can be beneficial or not. He states that there should be an ongoing investment in design. Design should happen at the right moment to enable a steady flow of features.

Kent moves on to briefly cover some design values, patterns, principles strategies, refactorings, successions and data that help achieve the goal of steady flow of features.

1. Values: simplicity, feedback, community

2. Patterns: most decision are not based on the domain, but are based on dealing with a computer. Having access to a wide library of patterns makes me more effective (vocabulary, efficiency). Do not waste time on originality for problems that do not require it.

3. Principles: There are universal principles like don’t repeat yourself, and then there more specific ones.

4. Strategies: Move your design in safe steps.

  • a. Leap: break it up into tiny steps so you can make a leap in safe steps.
  • b. Parallel: Operate 2 designs in parallel for a while.
  • c. Stepping Stone: If cannot do something in a safe step, build a little component or service to help make progress towards a safe step.
  • d. Simplification: Solve a simplified version 1st without any constraints, then slowly add constraints and continue to solve problem

Refactoring: Improving the Design of Existing Code5. Refactoring:

  • a. Bidirectional: extract method and inline method, extract component and inline methods. All refactorings are bi-directional.
  • b. Fluid: It is not from here to here, but more a sequence of steps.
  • c. First class: Refactoring are 1st class.

6. Succession: important sequences of design that happen over and over again. Like if you know that you need to deal with n elements, deal with one element now and then transform it to deal with n elements when you need to.

7. Data: understand metrics patterns to justify advice.

Test Driven Development: By ExampleKent concludes by reminding us that the goal is to find a way to continually invest in design to more closely approximate this steady flow of features to create value.

This presentation is available on InfoQ at