I do a lot of teaching in Test/Behavior Driven Design, C# Patterns and Practices, and also spend a lot of time coaching teams and development organizations on becoming more agile. So, I decided to combine all of these lessons into a deep dive boot camp class.
I taught several of these now, and they've been very successful. The base syllabus that the class contains is listed below, but each one has been unique. I ask the organizations to let me know what their pain points are, and the class gets customized to the specific needs.
Sprinkled throughout the class are C# development patterns (and their best uses), plenty of Pragmatic Programmer References, and architectural tips and recommendations.
As I always say in my conference talks, TDD/BDD is not just writing tests first. It requires a completely different mindset. The goal of this class is to teach and apply those fundamentals required to start the transformation to test first development.
The entire class is recorded via Camtasia, and the videos come with the class for future reference.
Day one is spent lecture style learning all of the required elements for Agile and T/BDD. We start by building a foundation for User Stories/Context Specification, Pair Programming, Development Patterns, and Unit Testing itself. Then, we begin writing up the story cards that will become “the board” and define our application.
Agile Practices Deep Dive
- BDD User Stories/Context Specification
- Development Patterns
- Effective Unit Testing
- Code Coverage
- Use Case Coverage
- Unit Testing Frameworks
- Test Fixtures
- Fixture Inheritance
- Increasing productivity with Visual Studio
- Database Testing
- Fakes, Stubs, and Mocks
- Dependency Injection
User Stories/Context Specifications
- Story Cards
- Points and Velocity
- Creating the “Board”
This is where the students have to apply their skills taught in the first day and develop an application in a test first manor. I serve as the product owner and provide requirements definition for the students, and they have the day to flush out a working model. (This domain problem can be generated by the team to reflect an issue they are working through, a requirement that they currently have, or can be one of the samples that I have used in past classes.) We approach the project in an agile fashion, giving the base requirements, and as we work through the two four hour sprints, we learn the best way to get the detail necessary to effectively code the domain problem.
By forcing the students to apply themselves immediately, we find where the gaps are, and can get those questions answered immediately. One of my pet peeves has always been going to training, then getting back to work, and not being able to apply the new techniques. Did I really understand it? Do I understand where and how to apply the concepts and techniques? This format answers those questions immediately while the instructor is still there!
Day 3 (Optional)
Better Development Workshop through Patterns and Architecture
This optional day is based on teaching Patterns and Practices for the .Net developer. Practical pattern based development is always talked about, but not applied nearly often enough. In this day of workshop based development, we go through the most common patterns that apply to line of business development.
Does this sound interesting? Helpful? Contact me at phil "DOT" japikse "AT" pinnsg "DOT" com for more information, pricing, scheduling, and references.