You’ve learned the basics of test-driven development. You’ve practised it for a few months. You’ve run into a few problems and figured out how to overcome them. You’re ready to take the next step in your evolution as a designer. This course is for you.
In this course you’ll practise test-driven development as a technique for learning to design well. If you’ve been writing tests first primarily as a means of reducing defects, then this course will help you build on that skill, helping you build systems that do not want to be completely rewritten every two years.
This is a hands-on programming course. You will spend at least 50% of your time writing code. We will use a simple kanban system to plan the course: I will provide a starting set of topics and you will decide which ones we do. In addition to practising evolutionary software design, we will practise group decision-making.
I propose these topics
We will not have time to cover all these topics in great depth, but we will certainly have enough time to introduce them all and dive more deeply into the areas that interest the group.
- How Test-Driven Development works
- Four elements of simple design
- Developing the intuition of top designers
- Interpreting irrelevant details in tests
- Integrated Tests Are A Scam!
- Architecture without trying
- Primitive Obsession and duplication of intent
- A model for improving names
- BDD is TDD acting as a pull system for features
- Economics and software design
- The “ring” architecture style
- Balancing everyone’s idea of business value
- The only legacy code rescue technique you’ll ever need
- How to do TDD with databases, web services, UIs, frameworks…
- Intentional design with mock objects
Before you arrive…
You will need a laptop with a development environment ready to work. We will use git for version control, for which you can find installation instructions here.