In this course you’ll practice 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 practicing evolutionary software design, we will practice group decision-making.
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 Universal Architecture
- 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
50% lectures, 30% demos, 20% tutorials.
You are encouraged to follow the demos on your machine, and you will be challenged to find answers to 3 larger problems during the tutorials. While they are a hands-on part of the course, if you prefer not to practice, you are welcome to use that time for additional Q&A, or to analyse your own data. We will provide you with all the necessary data sets, and we will explain what free or evaluation edition software needs to be installed to follow the course on your own laptop. In some training centers we are able to provide pre-built machines which you can use instead of your own—please inquire. You will need an Azure account (even a free one) during the course. You can copy course experiments and data into your workspace for learning and for future reference after the course.
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
You’ve learned the basics of test-driven development. You’ve practiced 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!
More information here