Agile Design: Beyond the Basics
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
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!
J. B. Rainsberger (@jbrains, https://www.jbrains.ca) helps software companies better satisfy their customers and the business that they support. He travels the world sharing what he's learned about programming, managing his workload, and designing his lifestyle. He spends a lot of his professional time helping programmers do good work with less stress. He consults with and runs training for companies, he provides personalized one-on-one coaching, and offers online training through http://online-training.jbrains.ca.
Joe enjoys public speaking, writing, and making contact with all the nice people around the world that promote his work. One of his famous talks is 7 minutes, 26 seconds, and the Fundamental Theorem of Agile Software Development. Joe wants to help everyone avoid unnecessary work, remain focused on what absolutely needs to be done, then do it quickly and effectively. You can find his blogs at https://blog.thecodewhisperer.com/ (mostly about programming) and at https://blog.jbrains.ca (mostly about everything else). He lives in Atlantic Canada with his wife, Sarah.