Friday, September 4, 2009

The Pragmatic Bookshelf presents a monthly free magazin, compiled by their editor Michael Swaine.It brings you a magazin packed full of interesting articles, features, and departments. Download it in PDF, mobi (good for the Kindle), and epub (great for Stanza on the iPhone).

The Issue 3, September 2009 contains an interesting article by by Kent Beck about "Responsive Design: Coming to Grips with the Chaos That Is Software Design". Beside the fact, that we both seem to share the same BASICs :), Kent made some statements I fully comply with.

Design is good. Design is central to effective software development.Programmers can add features steadily to well-designed software. Programmerscan easily test well-designed software. Well-designed software is easy to tunefor better performance. Most of the hard problems in programming turn outto be design problems.But design has a dark side. While there isn’t a single best design for any system,there are many poor designs for that same system. The more experience aprogrammer has, the more design ideas he knows.

The word "responsive" in the name of the project reflects this need for balance.Some design needs to be done in advance of coding, but over the life of theproject most design will be done in response to the changing needs of thesystem and the changing and growing understanding of the developers.

He provides a brief overview of the lessions he has learned so far:1) Beneficially Relating Elements.2) Design is Fractal.3) Safe Steps.4) Isolate Changes.5) Embrace Ambiguity.6) Cultivate Confidence.7) Cultivate Humility.8) Exploit Symmetries.9) Trust Succession.10) Design Is a Team Sport.11) Play with Words.12) Play with Pictures.13) Clear Strategies.14) Inside or Outside.15) Toss It.16) Keep It.17) Both.18) Suit Design to Needs.19) Use Tension.

Design is not a rational process.Much as we like to think we are making design decisions, much of the structureof our systems emerges from the nature of the problem and the nature of thetools we use. Our designs shape us as much as we shape our designs.[...]The challenge is to embrace responsibilityand at the same time take an appropriate role in designing. Learning to achievethis balance is the next goal of the Responsive Design Project.