Showing posts from June, 2011

Inspiring Developers to Greatness

How freaking pretentious is that title! And you thought my arrogance knew no bounds. Silly mortal.

Anyway, this is a question that I have been pondering, and asking, for a while. I wish there were a simple answer, but I also wish I could lose weight while continuing to eat like I do and never exercise.

What I have come up with so far are two factors that contribute greatly to the inspiration of developers, but do not actually guarantee anything.

First, you need to give developers some ability to control their destiny. Developers are naturally curious and creative people, so given a little freedom, they are likely to do something interesting. Or maybe they won't, but they will do something out of the ordinary and they will extend their way of thinking and that can only help their ability to do their jobs. [Thanks to Jason Staten for crystallizing this for me.]

The second common thread in these discussions is "where I work, we do..." The company culture of giving a crap about

Utah Ruby Users Group - First Impression

So, last night I went to the URUG meeting. I have been dabbling in Ruby in the evenings for a while now and I decided it was time for a mentor. Dave Brady has been unwittingly filling that role, and in addition to telling me to go through the Ruby Koans, he suggested a little community involvement. I am thrilled that he did because it was the best user group I have attended.

It started off with the AA style My-name-is-and-I-have-been-doing-Ruby-for-X-years introductions. This was a nice change from the anonymous sea of faces at the .NET User Group.

We got right down to the business of blowing my mind with a presentation on EigenClasses. Basically, this seems to be a private class on the instance object that allows you to modify the instance without modifying all instances of the actual class. If I got that wrong, please flame the comments.

Next was Rack middleware. I drew a lot of analogies to FubuMVC. Again, flames in the comments, please.

I couldn't get wireless connectivity, and m…

Status Update: Videos for Great Good

The NDC 2011 videos are available via torrent: (direct link). My download is still in progress, but the handful I have already watched are as excellent as the last 2 years, so I highly recommend them.

Also, I just downloaded and started watching the Structure and Interpretation of Computer Programs video series. Mind expansion in process. Updates as events warrant.

Not a video, but more like a video game: I am determined to learn me some Ruby. I started last night and I'm about a third of the way through.

That is all for now.

Review: Apprenticeship Patterns

We have been reading Apprenticeship Patterns: Guidance for the Aspiring Software Craftsman as part of our Sequential Learning in the Utah Software Craftsmanship Group. The discussions have been excellent and have lead to greater understanding of the material, at least for me.

The explicit discussion of how to improve has been enlightening for me. There are many patterns that I am now or have in the past applied to my career. There are a few that are new to me. Many of the recommended Actions push me out of my comfort zone.

The assertion that there are not yet any Master Software Craftsmen came as a surprise. There are quite a few people whose works I follow who I have considered masters for a while. Either way, there is a lot of room for improvement all around, so I am excited to Rub Elbows with other aspiring craftsmen.

My favorite quote from the book was "Moreover, most programmers think they are above average. The sad reality is that, due to the skewed distribution of skill illus…

Interaction Tests with Mocks

I seem to always be working on large, unwieldy WebForms apps. Because I am test infected, this means I often find myself refactoring large amounts of code out of code behind classes into Presenters a la Model-View-Presenter so that I can unit test the Application logic as the first step toward a proper Domain model, separation of concerns and, eventually, MVC. Because the only way to know that most of these pages is working is by looking at the UI, I use interaction style tests to verify that the UI is displaying the correct data. Mocks and Stubs become crucial elements of my tests. I used to use Rhino Mocks, but for nearly a year, I have been using Moq. Overall, I prefer Moq, though I don't have any specific reasons why.

Here is a (somewhat contrived) example of how I have been writing these tests using Rhino Mocks:

public void HandlePageLoad_displays_client_full_name()
var clientRepositoryMock = MockRepository.GenerateMock<IClienRepository>();
var viewMock = MockRepos…