To everybody that attended one of my talks at DevTeach this week. All of the materials are now online for download at the DevTeach website. If there’s something else you find missing or just want to find, please drop a comment and I’ll post more links. I’ll write a longer writeup after I get home over the weekend, but in the meantime I’d like to thank everybody that attended my talks this week. I got a tremendous reception from the audience and I loved the stream of questions and conversations during the talks. Some speakers want just to tell you things, but I do a lot better speaking in informal talks where the audience is participating and DevTeach has been great for that.
Other Reading
- I used a lot of examples from StoryTeller for both WinForms samples and build automation samples. You can download and mock this code to your heart’s content at http://storyteller.tigris.org.
Agile Design
- Is Design Dead? by Martin Fowler
- Lean Programming by Mary Poppendieck
- Leaky Abstractions and the Last Responsible Moment for Design
- How much design before unit testing, and how much design knowledge before TDD?
- Ordering Code Construction Tasks – Work vertically and refactor away any duplication!
- Jeremy’s First Rule of TDD – Isolate the ugly stuff
- Shrinking the Edge and Expanding the Creamy Center by Jay Flowers – keep the nast enterprisey infrastructure to the fringes of your application to maximize the ability to use evolutionary design
- Use a refactoring checklist to pay down Technical Debt as you work – Little refactorings applied immediately are the ounce of prevention that keeps a ton of rewrite away
- Classic Technical Lead Blunder– Been there, done that
- My Programming Manifesto
- The Don’t Repeat Yourself Principle and the Wormhole Anti-Pattern
- On Writing Maintainable Code
- Orthogonal Code
Maintainable Ecosystem
- Creating a Maintainable Software Ecosystem
- Finishing Off Each Iteration with a Deployable Product
- “Code Complete” is a lie, “Done, done, done” is the truth
- Database per Developer and Environment – A lot of people disagreed with this, or felt that this was infeasible, but test database contention can more or less eliminate the usefulness of automated testing and Continuous Integration
- Using Continuous Integration? Better do the “Check In Dance” – Proper build and code hygiene is important, and no one wants to be the “broke the build again” guy.
Put that Wizard Down! (Patterns for Maintainable WinForms)
It’s not entirely a done deal yet, but it looks increasingly likely that I will be writing a book next year on design patterns for smart/desktop/composite applications along the lines of Martin’s duplex book idea. The following is basically the proto-book. Look for more content by the end of the year.
- Build your own CAB Table of Contents
- How I got into this mess – Look for the section “Microsoft, OSS, and the Patterns and Practices Team”
- Preamble
- The Humble Dialog Box
- Supervising Controller
- Passive View
- Presentation Model
- View to Presenter Communication
- Answering some questions
- What’s the Model?
- Assigning Responsibilities in a Model View Presenter Architecture
- Domain Centric Validation with the Notification Pattern
- Unit Testing the UI with NUnitForms
- Event Aggregator
- Rein in runaway events with the “Latch”
- Embedded Controllers with a Dash of DSL
- Managing Menu State with MicroController’s, Command’s, a Layer SuperType, some StructureMap Pixie Dust, and a Dollop of Fluent Interface
- MicroControllers