This past week I attended a course in Austin, TX by a company called Develop With Passion, where I got some much-needed education on design patterns, good OO design and how to apply it to a code base. This post will be about the course and my thoughts on my journey in software so far.
"The greatest of weaknesses is the fear of appearing weak to others."
First off, I should share where I'm at. I've just graduated with a BSc. in Computer Science from the University of Calgary. I landed a sweet job at Amazon in Seattle, and I'm starting there later this year. I did an internship in oil & gas in Calgary, AB that finished in Dec. 2011, and that combined with my class assignments and small personal projects makes up the entirety of my programming experience...I thought I was ok at coding, I figured I could probably hold my own in design discussions with most professionals, especially after my experience in my internship. After all, having a degree I'd thought it'd be safe to say I had the right skills. This course proved me wrong. Extremely wrong. Super-Size-Me wrong.
The course took 5 days, M-F, and lasted from 9am to 9pm every day...yeah, not for the weak at heart. A bit of advice: drink water throughout constantly, your brain needs it. The instructor, JP Boodhoo, is a well-known and sought after software consultant/developer in Calgary. He's possibly the best software teacher I've ever had, and by far the most passionate. The class was pretty small, and that allowed us to get to know each other quite well in the 5 days we spent locked in a conference room. Pair programming was a must, and I have to admit, that was one of the hardest parts. We covered everything from design patterns to TDD to domain-specific languages to containers to important .NET core constructs - core concepts to specifics of certain tools. The course is very hands-on (awesome...you almost never get to code with the instructor in university...and that's because most university instructors can't code) and we worked with C#, thought as I understand, JP teaches courses in other languages, ruby included (yee!).
From the first talk on Monday morning, I knew it was going to be something more than just a software skills course. JP began by talking about the importance of goals - personal and professional. JP is like no one else I've met - he can code faster than I've ever seen or thought possible, communicate ideas more clearly than any of my professors, and all the while inspire me to do better - professionally and personally. I was not ready for this course, but I'm glad I took it, and I'm committed to taking JP's software teachings and applying them - not in theory like at university, but in practice.
My fear coming out of the course is that I'll end up shirking on the daily practice I committed to...oh and my goal is to do one 20 minute code kata every day for 1 year...but now it's up here on the web, so hopefully if anyone still reads this thing, I'll get some messages between now and May 18th, 2013 asking if I'm keeping up with my goal...I'd hate to publicly fail a simple 20-minute per day goal. So if you're reading this, and no one's commented recently, leave a message and give me some fire to keep it up!
Anyway, all-in-all, course rocked, but the real benefits of it won't show up for me until I've studied the material some more and got some more code katas under my belt...hopefully I've got something solid to show in 1 year...it was good timing for me, I was getting a bit too comfortable. If you're interested in getting fired up about software again and have some experience in developing object-oriented software already, or if you're like me and just out of school and about to start a job in software, I would highly recommend taking it, here's the link to the site: