When you think about corporate training courses, you pretty much picture a few 8-5 classes with a nice lunch break, generally easy workloads, and a somewhat low learning curve, right? At least that’s what I always knew them to be until last week. After taking J.P. Boodhoo’s Nothin’ But .NET boot camp the week of November 17th in Philadelphia PA, though, that rosy picture of easy days with only a relatively low amount of learning has been replaced with one of intense training and pushing the boundaries of what I thought I was capable of.
He started us out by sending some prep material a week or so before the class began. Among other things, it included a project with about 18 failing specs (unit tests in behavior driven development terms) that we had to get passing as OO-ish as possible. Simple enough, or so it seemed. I got them all passing in what I thought was a pretty nice solution, at least until the class started.
- Day 1: 8:30am ~ 11pm. After just abut everyone’s machine was up and running, we talked about some basic design patterns (adapter, decorator, etc) and applied them to the prep exercise together. About mid day JP wrote out a basic fluent interface he wanted for querying and sorting in the exercise and left it to us to implement, then walked us through it together. The end result for the exercise was nowhere near what I came up with before the class and really got me thinking about the way we design applications at work and what we consider “good”. Very cool intro to fluent interfaces though. Didn’t do any TDD that day, as he wanted to focus on some of the fundamentals.
- Day 2: 9am ~ 11:30pm. We started working on the front controller architecture (a slight twist on the common MVC style you see in Monorail and ASP.NET MVC) for the web store we’d be working on the rest of the week. From here out it was all TDD using JP’s custom testing wrapper framework, which he mentioned he’s working on release publicly soon. We also looked at a basic logging implementation. The way he was able to craft a lot of these tests in a TDD manor really opened my eyes at how to tackle a lot of tough problems I’d hit in the past.
- Day 3: 9am ~ 1:30am. Pretty much finished up the front controller implementation, which was cool to see as it gave me a tremendously deep understanding into how the bigger .NET MVC frameworks out there work, more than any blog post or series really could. We’d been pairing on and off until this point, but we actually broke into teams later in the day to get the whole front controller working to the point where we could display a page, so team interaction was heavily stressed here.
- Day 4: 9am ~ 3:30am. Broke off into larger teams to complete the bulk of the web store, including a full end-to-end (database to browser) experience and getting everything configured in a nice, fluent, manor. I worked on a fluent interface for the routing configuration, among other things, and the other guys in my group worked on ones for the ORM, IoC container, and object mapping. There was just so much to do it was mind boggling. It was great running into a problem and having JP come over to explain it in a way that made absolute sense, too. His ability to walk through a problem and get a solution is amazing.
- Day 5: 9am ~ 2:30am. Went over domain driven design (DDD) using a standard shopping cart scenario in the morning, then finished working in our teams on the store front the rest of the day, tweaking our fluent interfaces and adding features. We didn’t get to where we wanted to, but I think we were all happy with what we came up with. The momentum from the rest of the week really took a beating after lunch, unfortunately, but we plowed through it.
The material we covered in the class alone makes the course worth it, and that’s not even counting the fantastic food we had free of charge all week (steak houses, chinese, subs, full course Italian - all thanks to Brian Donahue), the awesome discussions, both technical and non, with everyone during meals, the screen casts from the week, and the laughs (which there was plenty of!).
You also have to factor in JP’s motivational ability. The passion he has for development was evient from the first day, and never once slowed down. You can tell this guys absolutely loves what he does, and his ability to share that with everyone and have some rub off is truely special. I came away from the class not only with a new found technical outlook on my code base, but a personal & professional outlook on life. Seriously, it did that much. I tried talking JP into a motivational speech circuit, but it didn’t sound too likely :)
JP talked how he really wanted everyone to stay in touch after the course ended, even to the point of having an alumni get together later next year. It’s cool how much you get to know these other people in the class after such an intense week. I recommended to JP that he have the future classes work on a social networking site instead of the web storefront during the course. Not only has the whole web storefront sorta been played to death in examples, but it’d give everyone an actual tangible tool to stay in contact after the course ends, knowing they built it.
So, if you have the chance to take this course, even if you have to beg and gravel on your knees for the funds, do it. It’s easily worth every penny and more.