How CAB and TDD helps doing better designs
August 11, 2006
The last months I’ve been working on an exciting project using VSTO, Excel and Team Foundation Server. We discussed with Matias how we should design this application. In this kind of projects, a great deal happens in the spreadsheet, and the business logic behind, is big as well. If you did VBA programming you know what I’m talking about.
We needed a clean and extensible design. So we decided to use the Composite UI Application Block and the Smart Client Software Factory, because:
- It provided us with a Dependency Injection container (ObjectBuilder)
- Leverage the MVP pattern which is very TDD-friendly
- Separate functionality in different modules
We realized that the key for being successful was the orchestration between the spreadsheet and the services. This is where TDD proved to be the correct path because allowed us to design this orchestration in a clean way.
The following illustration put it more clear.
- The View is the spreadsheet
- The Presenter performs the business logic and he knows about its view and services by their interfaces
- The Services communicate with Team Foundation Server to retrieve workitems.
The following picture describes our solution
In the retrospective after finishing this project, we realized two things:
- TDD was extremely useful to come up with a clean design that provided loosely coupling between the components
- In the final stages of the project, we met with a lot of technical details regarding VSTO and Excel and it was hard to keep the unit tests up to date. This is something that we are looking to improve in the following projects
[TestMethod]
public void CheckValidationAdded()
{
presenter.PopulateLists();
Assert.IsTrue(view.FeatureValidated);
Assert.IsTrue(view.OwnerValidated);
Assert.IsTrue(view.ItemOrGroupValidated);
}
In the example above we tested that when the PopulateList method is called the Presenter behaves properly that means to call AddFeatureValidation, AddOwnerValidation and AddItemOrGroupValidation methods. UPDATE: To take a deep dive in this check my recent post about How-To write MVP using TDD
Becoming a Certified Scrum Master
August 11, 2006
As Mariano posted we’re doing a Certified Scrum Master course. Let’s start this amazing experience from scratch.
Day 1
Tuesday 9:15. I found myself lost @ Chatolic University asking everybody where is the “Scrum Course”. Nobodies answered fine, neither close to where the Scrum Certification was taking place. Finally I found a sheet of paper with “Scrum aqui” message. Yeah I found it!
Tuesday 10:00. The course was like I thought : a guy, speaking in English, in front of the course, with a laptop and a nice power point slideshow. But that’s the common course structure, but something started to smells when I look at the walls. Every wall was cover with an Sprint Backlog Task Board or sheets of brown paper where the trainer started to write in.
Tuesday 12:00. After a twenty minutes coffee break course continued as started. Talking about principles, and what’s agile, why it’s better than waterfall. And lunch time begun.
Tuesday 15:00 to 18:00. Wow! Scrum in-a-box simulation. We started in each table to work as a team to develop Scrum in-a-box (An off-the-shelf scrum training kit). Stories were vague, nobody knew what to do, we were on the edge of Anarchy (mapping it to Stacey Matrix). Teams didn’t understand requirements but the started spiking. Some team felt like they’re failing. But when we start sprinting everything was clear.
Day 1: We’ve learnt that you always have to move, to do, to fail early, your risks won’t go until you move. Spiking is a good technique for start working. A great agile principle (refactoring) was demonstrated.
Wednesday 9:00 thru 18:00. Course started different on Wednesday, we started sprinting, our Product Owner started re-writing the stories, etc. Was great, 2 days and were a team, I neither knew some team-mates names but I knew what they were committed on. This day was richer than the first one. We learnt lot of things, like estimating like a team, working in a time-box way, and Agile Stuff like that. This day was a sprint, although we stopped to lunch, and some coffees, it felt like we were working and sprinting like scrums teams does every day.
Day 2: I resumed what we learnt on description above, but there was something that really got my attention. Tobias Mayer, our trainer he is a very agile guy, he does with love, passion and happiness. He started the course like a common trainer but it seemed that he didn’t like to talk using the notebook. He is a great guy and knows a lot about organizations and teams. He as the teacher has added lot of value to this course. Learn by doing is great!!!!
That’s all, now I can show my diploma and this cute logo with my name.
Thanks to my table team, other teams, Tobias and Alan Cyment (the logistics and organization guy). This is one of the richer experiences of my life.
UPDATE - 2:00 a.m GMT-3: We’re the first group of Latin America to achive the scrum master certification.
UPDATE - 2:20 a.m GMT-3: These are some pictures of this adventure! (Thanks Shaggy)
(Our off-the-shelf kit! Nice, but sincerly I didn’t do these kind of stuff since I got out from School. Note for those who know me: Yeah, i did the artwork, with my hands, was like a miracle, I don’t belive it yet, but it happend)
The TEAM (from right to left: Beto, Natalia Davidovich, Aureliano Calvo, Lito, Mati and finally me)
(Team in Action. We were like school kids, but we’re nice , aren’t we?)
Southworks Agile Experience Team (from right to left JP, Seba (above), Lito (below), Tobias (trainer - agilethinking.net) , Mati (below), me (above), Shaggy, Eze, Marian and Beto)
Release (Sprint Review Metting) (Mati showing the getting started guide while I was taking out the box contents)
Bonus Track - Certified Scrum Masters (a.k.a new sheepdogs)
UPDATED 02:17 p.m GMT-3 : You can see all the pictures @ http://www.flickr.com/photos/67651183@N00/ (that’s my flickr gallery)