Friday 23 November 2007

Pair Programming for Loners

I first heard about pair programming years ago while reading some articles on Extreme Programming. My initial reaction was "That sounds like an interesting idea. It might just work" followed very quickly by "I can think of a few people I would not like to work in a pair with".

The most obvious benefits are:

  • Having someone to bounce ideas off
  • Having someone watch you while you code and make constructive suggestions
  • Watching someone else code and learning from their approach

Obviously if you develop alone, the first two benefits are largely unavailable. The best you can hope for is to get some feedback from people on user forums.

But the third option is perhaps not as out of reach for the lone developer as it may seem. Where can you go to watch other developers at work on real projects and learn from them?

The answer is open source websites like CodePlex or SourceForge. The value of looking at real code (as opposed to sample applications) should not be underestimated.

As I have been slowly learning ASP.NET over the last year I have been frustrated with the numerous options for doing things - different project types, different data access approaches, different theming mechanisms etc etc. Before I could even start a project I was left with a thousand questions about whether I should use Web Site or Web Application, or whether to use DataGrid or GridView, or whether to use custom business objects or SqlDataSource.

So the great thing about downloading some open source projects is that it gives a great chance to see how other people have chosen to do things. The main three I have been looking at to help me with ASP.NET are BlogEngine.NET, SubText and DotNetKicks. Just spending a few hours browsing the code can teach you a lot about how to structure a project, as well as demonstrating various real-world examples of usage of the different approaches to data access.

The developers of each of these projects are all people who are not only experienced ASP.NET projects but clearly have a passion for best-practices in the way they design and structure their code. These are people who I would want to be pair programming with if I could, asking them questions about why they did things certain ways. But for now, I'll have to content myself with silently looking over their shoulders and working out what's going on for myself.

3 comments:

Anonymous said...

Any chance you can inform us of which of the choices you made after seeing the code?

I'm always particularly interested to hear how you thought the code bases looked depending on the Data / Business objects approach.

Unknown said...

hi jax,
I'm still keeping an eye on Subsonic, although I want to check out the new LINQ to entities stuff as well now. I've also been looking into the ASP.NET MVC framework, so there has been a lot to take in. I don't think the provider model is that important unless you are writing an application that will need to support multiple providers. An open source blog platform would but most business applications are pretty much tied down to one database format.

Anonymous said...

The provider can change things depending on the type of objects it returns.
A dataset for example is very different to a collection of business objects and changes the look and feel of the code across the board.

I'm interested in the LINQ to Entities too but i'm not planning on switching until at least version two as they'll have some bugs to fix, as it's their first proper ORM (and they failed with the last one).
Although I might just stick with NHibernate forever (much love to NHibernate!)