Saturday, February 07, 2009

Together in transformation – An agile Salvation Army

Today I did a presentation for the Salvation Army at a Hearing day that our Territoral Commander, Victor Poke has assembled. I was a bit confused at first but then I felt quite at easy with the whole thing since my topic suited me perfect. It was Together in Transformation.

Of course I couldn’t resist to preach the Agile gospel even for the Salvation Army. We are often quite rigid in our structures so that could be needed from time to time.

It was well recieved with a very rewarding discussion afterwards. It also felt very good for me to be able to put some quotes form the bible on a PowerPoint slide. Haven’t done that before.

Friday, February 06, 2009

Sprint Planner Helper – Session 4

OK – I have been doing some thinking and model crunching and found out that still is chewing of to much. There was no really good starting point for me. Finally it struck me: The product manages one or more product each with exactly one product backlog.

So the Product Owner need to be able to create a “Product” and see a list of all products that he manages. I added that requirement to my product backlog and started with that…

Also this introduces the need for roles in my application … but I think that the ASP.NET MVC RC1 has taken care of that for me. At least some of the test tells that story with the possibility to add users. I hope to use the membership and roles in ASP.NET. But that is a later story.

I found out one thing about TDD – make your test run fast and you’d run them more often. I am running all my test every fifth minute now.

Not very good today – I got stuck on not understanding controls. I’ll do some checking up on that I try to get further next hour.

Norwegian Brass Band Championships – live

Right now you can follow the Norwegian Championships in Brass Band live on nrk.no. Here is the link: http://www1.nrk.no/nett-tv/distrikt/hordaland/verdi/89482.

Here is the order of play.

My tip for the whole thing is:
1- Eikanger Bjorsvik (Go Patrik!) – Draw #3
2 – Stavanger – Draw #9
3 – Manger – Draw #1 (I missed that)

Dark horse - Oslo Brass Band

Tuesday, February 03, 2009

Sprint Planner Helper – Session 3

As I reviewed my work from yesterday I quickly realized that I bit off much to much. I only need to implement the model for the first product backlog item which is:

As Product Owner I can create a product backlog so that the team knows what is left before the product is done.  Each product backlog item requires at least an ID, description, priority.  Optional are story points (how big is this compared to other) and the possibility to upload a  document with additional business rules

So - true to the XP guidelines to not do more than is absolutely minimum to solve the task at hand, I backtracked and removed a lot of the code I wrote yesterday. I want to see where the TDD and Extreme OOP takes me.

I start each session by reviewing those rules in order to really get them to stick. Man - they are though ("Don’t use any classes with more than two instance variables", gulp).

OK - so what I managed today was simply to get my model for the first story up. Great! I am getting a hang of the TDD-ing. I have also fallen back in love with C#. What a nice language. And the support for TDD in Resharper is great (with the Create Field on other class helper for example).

Monday, February 02, 2009

Save some space - limit the number of old test results

Found an option that really saves some space for TDD:ers in Visual Studio. The test results folder can be limited to a certain number of test runs. That would really have helped me at my latest project where my Test Result folder was several Gb.

Go Tools->Options->Test tools->Test execution.

testresults

When you first exceed that number you'll be warned that folders will be deleted - thank you very much!

Sprint Planner Helper – Session 2

OK - if you want to do DDD then you better start out with the Domain Model. So today I created a Class Diagram for my domain. I also try to follow the Extreme OOP rules and TDD (whooa - my head will explode) and use them to guide me through the process.

OK - that was quite exciting. I am not done yet - but I got a first domain-model up and running and started to mass produce unit tests.

I had some trouble with converting back to C# after two year in the VB.NET swamp (Me/this for example) but that will soon be over. Also the support in the studio is sooo much better for C#. I love it - this is what Visual Studio was made for.

[UPDATED]
I moved the snippet for creating test methods to a post of it’s own. You’ll find it here.

First day of parental leave - I love it!

OK - my first parental leave day is well on the way. You should try this - it's great!

I thought that I would upload some photos of Albert as the time progress to see how he is developed. Here is one from a few days back.

Albert - he knows that he can't go there...

Right now he'll walk if I hold his hands, and he talks a lot with two words: Pappa and Albert.

Sunday, February 01, 2009

Sprint Planner Helper – Session 1

I started off very pure and true to the noble principles of TDD and Extreme OOP. Actually I did decided on a few naming conventions first, the name of the product is Sprint Planner Helper and it will reside in the namespace Marcusoft.SprintPlannerHelper. I also created four projects like this (idea stolen from ASP.NET MVC Storefront):

  • Marcusoft.SprintPlannerHelper.Models - my domain model
  • Marcusoft.SprintPlannerHelper.Service - any services need for the model, such as database access and so on.
  • Marcusoft.SprintPlannerHelper.Web - the ASP.NET MVC Web Application.
  • Marcusoft.SprintPlannerHelper.Test - the unit test of the application.

Then I removed all the Class1.cs from all the projects that default them to me. At this point I realized that I was missing Visual Studio 2008 Power Commands and Resharper at the computer I was using. Had to download them - you can live without them. The 1 h /day is burning up fast in the beginning.

Finally I could review my product backlog and create my first test: aNewlyCreatedProductOwnerHasEmptyName. This is my first time doing pure TDD and I must say it was quite exciting. It didn't compile of course. So I created a class in my Model-project called ProductOwner. At first I thought I would have a hard time getting the test to fail but it did (:D). The name property is initialized to null. I implemented a constructor that took care of that - and YEAH my first test.

I was quite surprised to find 27 other tests in my solution. Those were test for the controllers created for my by the ASP.NET MVC project template. I ran them all - they worked but I didn't check them out for now.

My hour is up - great progress today. We're off to a flying start with one TDD-iteration (RED-GREEN-REFACTOR) done...

Sprint Planner Helper - administration

OK - in order to be able to work with this at all I thought I first should do some administrative stuff for the project. So I have setup a CodePlex-project where I will keep my sources. You'll find it at: http://www.codeplex.com/sprintplannerhelper/. You can apply for getting part of the project there in order to get hold of the sources as I move along.

During the setup-process of that I learned that the Team Explorer Client that is used to connect to a TFS Server is actually free (!). You can download it from here.

I also decided to keep it quite freeware-ish. I will not use any products that cost money. In order for any other to "reproduce" the project on their computers.

OK - the project will soon be up - kind of. I have just created the solution and added my product backlog. Next thing on the agenda will be to create the projects.

PS
I also downloaded the release candidate for the ASP.NET MVC which contains some nice features such as better integration in Visual Studio.