Yesterday concluded the first training course put on by Headspring Systems (and taught by me). A non-biased write-up can be found here by Karthik Hariharan of Telligent.
The course curriculum was completely hands-on and built around a real Work Order system with an automated build and automated unit and integration tests. The code is available to the public via the Google Code subversion repository. You can update to a different revision committed each day. We ran a local SVN repository to have fast network connectivity, but I pushed a commit to the Google Code repository along the way. You are free to see how the system progressed over the three days. The system is not meant to be a complete example of everything right. There are things to correct intentionally put in as a learning tool for the class; however, you can take that system and adapt it to your needs.
The course covered the following topics, tools, and design patterns:
- Performance optimization
- Subversion
- Onion architecture
- Inversion of Control
- Domain Driven-Design
- Test-Driven Development
- SVN branching and merging
- Resharper
- Build automation with Nant and CCNet
- Pair programming & the TDD game
- Dynamic & static mocks & stubs
- Refactoring
- Integration testing
- Interfaced-based programming
- Team dynamics
- NHibernate basics
- Using CruiseControl.net
- Source control structure (trunk, tags, branches)
- CCTray
- Team design/whiteboard modeling
- Optimizing NHibernate queries
- Automated database migrations
- Complex NHibernate mappings
- Automated deployments
- Nant
- Redgate SQL Compare
- SQL Profiler
- TortoiseSVN
- NUnit
- VisualSVN
- TestDriven.Net
- Log4Net
- RhinoMocks
- Separation of Concerns
- Factory pattern
- Model-view-presenter
- Strategy pattern
- Builder pattern
- Repository pattern
- Aggregate pattern
- Template method
- Visitor pattern
- Specification pattern
- Dependency Injection pattern
Future course date are available here. You can see from the list above that we cover many of the practices of Extreme Programming. What you don’t see are things that you can learn at other training courses, like LINQ, etc.. Our goal is to provide a unique training course that isn’t available elsewhere. If you are interested in learning C# specifically or .Net programming, I’d also recommend JP Boodhoo’s Nothin’ but .Net series.