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.
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!
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
Format: 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
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.
BCS Koolitus on Eesti juhtiv IKT valdkonna koolitus-, projektijuhtimis- ja konsultatsiooniettevõte. Loen koolitusfirma kohta veel...