Hibernating Rhinos PracticesPairing, testing and decision making
We actually pair quite a lot, either physically (most of our stations have two keyboards & mice for that exact purpose) or remotely (Skype / Team Viewer).
And yet, I would say that for the vast majority of cases, we don’t pair. Pairing is usually called for when we need two pairs of eyes to look at a problem, for non trivial debugging and that is about it.
Testing is something that I deeply believe in, at the same time that I distrust unit testing. Most of our tests are actually system tests. That test the system end to end. Here is an example of such a test:
[Fact] public void CanProjectAndSort() { using(var store = NewDocumentStore()) { using(var session = store.OpenSession()) { session.Store(new Account { Profile = new Profile { FavoriteColor = "Red", Name = "Yo" } }); session.SaveChanges(); } using(var session = store.OpenSession()) { var results = (from a in session.Query<Account>() .Customize(x => x.WaitForNonStaleResults()) orderby a.Profile.Name select new {a.Id, a.Profile.Name, a.Profile.FavoriteColor}).ToArray(); Assert.Equal("Red", results[0].FavoriteColor); } } }
Most of our new features are usually built first, then get tests for them. Mostly because it is more efficient to get things done by experimenting a lot without having tests to tie you down.
Decision making is something that I am trying to work on. For the most part, I have things that I feel very strongly about. Production worthiness is one such scenario, and I get annoyed if something is obviously stupid, but a lot of the time decisions can fall into the either or category, or are truly preferences issues. I still think that too much goes through me, including things that probably should not. I am trying to encourage things so I wouldn’t be in the loop so much. We are making progress, but we aren’t there yet.
Note that this post is mostly here to serve as a point of discussion. I am not really sure what to put in here, the practices we do are pretty natural, from my point of view. And I would appreciate any comments asking for clarifications.
More posts in "Hibernating Rhinos Practices" series:
- (22 Feb 2013) A Sample Project
- (06 Feb 2013) Design
- (05 Feb 2013) Pairing, testing and decision making
- (04 Feb 2013) We are hiring again
- (31 Jan 2013) Development Workflow
- (30 Jan 2013) Intro

Comments
Comment preview