Designing Objects & Systems seminar
This seminar has evolved from the popular Objects & Patterns seminar that Bill Venners and I have given together for the past several years. The material in that seminar grew beyond its bounds, so we’ve split it into two seminars: this one, and the Thinking in Patterns seminar described later in this appendix.
An important part of good object-oriented design is well-designed objects. A major part of the seminar (distributed throughout the week) is the Object Design Workshop, which focuses on guidelines and idioms that help you create well-designed objects. Each of these will be explained and justified, and then discussed by the attendees. This discussion is an integral part of the workshop, aimed at facilitating a conversation about design among peers that can help everyone to learn from each other’s experiences and perspectives. The Object Design Workshop will give you a specific set of practical guidelines and concrete idioms that you can draw upon in your future object designs.
The other portion of this seminar will focus on the process of developing and building a system, primarily focusing on so-called “Agile Methods” or “Lightweight Methodologies,” especially Extreme Programming (XP). We will introduce methodologies in general, small tools like the “index-card” planning techniques described in Planning Extreme Programming (Beck and Fowler, 2002), CRC cards for object design, pair programming, iteration planning, unit testing, automated building, source-code control, and similar topics. The course will include an XP project that will be developed throughout the week.