software craftsmanship

Posted on December 09, 2012 journal

Last week I had the privelage of traveling to Las Vegas to attend the Develop with Passion Ruby Primer Bootcamp. This was a 5 day bootcamp focused on helping you level up your software skills with a focus on ruby.

It’s been 5 years since I attended the .NET bootcamp. After leaving that course I was excited and energized about my career. I left with a feeling of confidence. Learning how to use test driven development as a design tool freed me from having to feel like I needed to know and understand the internals of each framework I didn’t know. I left knowing that I could design and focus on abstractions, rather then mechanics.

Last week was a brutal reminder that test driven development is about more than just testing but also driving out a design using tests as the driver. It was also a reminder to use my brain.

I realized that I had fallen into a pattern of focusing on mechanics rather then abstractions. I kept focusing on how the code should be written rather then how the code should be designed.

Do you recognize the following pattern. You’re about to write your test. So you start writing…

  it ""

Then you write something like….

  it "should ... blah" do


You skip over the name of the assertion and you start writing the setup/before code and the assertion. You’ll figure out a good name after you write the code you want to write. Right?

Did you notice you were doing that? I didn’t. I just robbed myself an excellent opportunity to design.

By taking a moment to write a proper assertion, you are actually designing.

The week was full of “ah ha” moments for me. It helped me habits that I had formed that I hadn’t spent the time to identify. Not to mention it was an intense week of learning ruby. The little exercises that we were setup to solve kept my brain active and engaged for the full week. I was excited, very excited.

We learned about concepts such as the ruby load path, composition, procs, lambdas, blocks, method objects, modules, meta programming, iterators, binding, rack.

More importantly throughout the week we discussed ways to continue our growth and manage our own growth plans. We talked about the importance of goal setting, how to practice daily brain exercises, and code katas. The most important lesson was to focus on the relentless pursuit of mastery not the attainment of mastery.

If you get lost in the mechanics then you lose the big picture. - JP

Last Thursday, I attended a presentation at CAMUG by Pete McBreen on his book Software Craftsmanship. Pete reminded me the importance of having fun with the work that you do and that it is possible to still have fun crafting software after 20 years. If you’re not having fun then what’s the point.