About   Forum   Wiki   Home  

       
    Managed Chaos      
   
Naresh Jain’s Weblog on Object thinking, Patterns, Open Source, Agile and Adventure Sports

 
`
 
Tags
Recent Comments
Quick Search
Recent Entries
Categories
Archives
December 2007
M T W T F S S
« Nov   Jan »
 12
3456789
10111213141516
17181920212223
24252627282930
31  
Add to Technorati Favorites

Syndicate This Blog
Entries (RSS)
Comments (RSS)

Archive for December, 2007

Avatars of TDD

Friday, December 14th, 2007

Background

Over the last one year, I have spent time pairing with various TDD practitioners trying to find their avatar (style or form) of TDD. I was curious to know, given a problem or story how do developers go about Designing (Object modeling in particular)? How do they come up with classes and their responsibility? Do people spend some time at the white board coming up with some high-level design or do they jump straight into writing tests. My understanding is that TDD itself does not force someone to jump straight into code (tests). Basically it takes the Test-First practice one step further saying write the test before you write production code and let the tests drive the development. A lot of people prefer to refer TDD as Test Driven Design. Essentially, let the tests drive the design. They believe that this will help them come up with the simplest possible design if used with Refactoring. It will also ensure that we do not end up over engineering or under engineering the solution. We do just enough based on today’s needs.

After having spent over 1 year pairing on the same problem with close to 22 TDD Practitioners (and hoping to pair with more), I have come to conclusion that there are various Avatars (forms or styles) of TDD. Also something else that I found interesting was: It is very clear to most of the people that testing results in better design. But it might not be so obvious that your approach to testing or the way you think about tests can result in quite different tests and hence its impact on the design.

I found the depending on your avatar of TDD, the end object design was quite different. The purpose of this experiment is not to prove which avatar is better. Like anything each avatar has its trade-offs. My interest is clearly to capture different avatars and try to categorize them. Also try to find the rationale behind the approach.

Broad Categorization of TDD Avatars:

Broadly we can classify the avatars of TDD into 2 categories:

  • Outside-in
  • Inside-out

Brian Marick Test Categorization

In the outside-in category developers starts with a high-level functional test at a story or use case level and drills into the low-level unit tests as development continues. The objective of development is to make the high-level functional tests work. In other words developers start with Story tests1 or Business-facing team supporting tests and move towards Unit tests or Technology-facing programmer supporting tests. It turns out that these tests are heavily state-based tests.

In the inside-out category the developers take a story or use case, do some really high-level analysis & design. Possibly, also some level of object modeling in their heads or on a white board. This activity should take less than 15-30 mins. Once they internalize the story or use case, they start writing technology-facing programmer supporting tests to drive the design. Very quickly they start building the story bottom-up. The objective of development is to make all these low-level unit tests working all the time. These tests are heavily interaction-based tests. I have not really seen these tests evolve into high-level acceptance tests and hence the inside-out arrow in diagram 1.

It is important to note that these avatars are not mutually exclusive. TDD practitioners tend to jump back and forth. But on a given project, the system design is heavily influenced by one of the avatars and not so much by the combination.

Read the whole draft paper here: Avatars of TDD. Please note that this is work in progress. I would really appreciate your feedback.

Release Me!

Thursday, December 13th, 2007

If you or someone you know suffers from the problem of software failures, please read on, this is dedicated to you.

Release Me![1]
Ooh…ooh…oh…oh…
I see the world, feel they don’t get it
Which way to go, there’s no silver bullet
I see the world, built on house of cards
Where do I go, life seems to be at odds
Ohh…ohh…ohh…ohh…

Oh, dear customer, can you see me now
I am myself, being wasted somehow
I’ll grow iteratively
I’ll add value incrementally
Release me…
Ohh…ohh…ohh…ohh…

Oh, dear developer, can you see me now
I am myself, rusting somehow
I’ll lie on your disk till you check me in
I’ll join in…can you build me…
Release me (2x)
Ohh…ohh…ohh…ohh…

Oh, dear tester, can you see me now
I am myself, neglected somehow
I’ll wait up in your queue for you to integrate me
I’ll open up…can you test me…
Release me (3x)
Ohh…ohh…ohh…ohh…

I have seen enough projects that suffer from not releasing software frequently. The Open Source Software movement has time and again showed us the value of frequent and short releases. But somehow most projects don’t seem to get it.

What are the real advantages of short release?

  • Concrete and real feedback
  • Create an opportunity for the business to start realizing Return On Investment [ROI] early on. ROI need not been increase in revenue, it could mean improved efficiency, happy end users and so forth
  • Fail Fast : It is easy to go off for a few months and start building something that no one asked for or even if someone asked for few months again, does not need it any more.
  • Better customer involvement. A lot of projects suffer from lack of customer involvement. Software teams blame the customer for this. Remember its a two way street. The customer is not going to show interest if there is nothing the software team can show or demonstrate to the customer. Trust me, design documents and clean, elegant code does not mean a thing to the customer. Working software is really what catches their attention.
  • Great de-risking activity : Because of some of the points mentioned earlier, you can see why frequent short release can be a great way to minimize risk on a project. Another way to look at it is, frequent short releases help you take more risk safely.

Jeff Patton, in his Incremental Release presentation talks about things that can go wrong during:

  • Design and Development Time:
    • process risks
      • delays & cut scope
      • scope additions
      • scope subtractions
      • design not built as described
    • risks from outside the process
      • political
      • financial
      • loss of key talent
  • Release Time
    • design off target – doesn’t meet user or business goals
    • product made unusable by poor performing technical architecture
    • ROI estimates were big fat lies

On a positive note:
For millions of years mankind lived just like the animals. Suddenly something happened and they unleashed the power of frequent releases and they learnt to be Agile.[2]

[1] - Lyrics inspired by Perl Jam’s Release song
[2] - Lyrics inspired by Pink Floyd’s Keep Talking song

YACTY

Sunday, December 9th, 2007

YACTY - Yet Another Conference This Year.

I just reached home, India after attending the Agile Development Practices Conference organized by SQE. I really enjoyed the conference. The conference was very well attended. There were close to 500 delegates. SQE managed to get a great list of speakers [except me].

I presented the following at the conference:

[SDTConf] Oops! We did it again!

Tuesday, December 4th, 2007

Yes, last weekend, we successfully hosted the second Simple Design and Testing Conference. I don’t know about others, but I really enjoyed it!

If you were not able the attend it, and interested to know what happened, visit Conference Schedule Page on our wiki.

You can also checkout who was present at the conference on Conference Participant’s page.

Lot more details on the conference wiki….

Refactoring Fest at SDTConf 2007

Sunday, December 2nd, 2007

Yesterday I facilitated a Refactoring Fest at the SDTConf. It was great fun. You can read more about it on the SDTConf Wiki.

Emerging Technologies for Enterprise Conference on March 26 and 27 2008 in Philly

Sunday, December 2nd, 2007

Emerging Technologies for the Enterprise, March 26-27, 2008, Philadelphia, Pennsylvania

Next March I’ll mostly be speaking at the ETE3 conference. Ahsen Jaffer has helped put together an Agile Track at this conference. I know Ahsen at the Agile Philly user group.

ETE 3 is a content-rich conference aimed at the Mid-Atlantic region and developed to help teach and inform our tech and IT management community about the latest technologies available to them. With dwindling budgets and time constraints, it is difficult for many in our region to get to the larger conferences out West. Our goal then, is to provide deep technical dives given by experts in Java and open source technologies. The conference also provides a place for CIOs and high-level managers to learn about the technologies behind the buzz words that are impacting their organizations. The key to this conference is that it is not commercial; our attendees know it is a “safe” place, where they won’t be assaulted by vendor speak.

This year’s conference will focus on Agile practices, SOA/Integration, Mashups, Web 2.0, and Lightweight Development (Spring, Ruby, Java). A separate management track will be available as well. That said, the conference organizer would like to believe that it be a great fit on many levels.

They are expecting 400 attendees this year from the Boston to DC corridor. The conference location at Drexel University makes it easy for people to travel by train and the conference fee of $175 makes it affordable for companies to send multiple people. The keynotes this year will be given Floyd Marinescu, Chief Editor InfoQ,, and Lucinda Duncalfe Holt, CEO, Commerce 360. Initial lineup of confirmed speakers includes Bruce Snyder, Dan Diephouse, Brian McCallister, Chris Richardson, and David Chelmisky, to name a few.

ANN: Agile Coach Camp

Saturday, December 1st, 2007

Deborah Hartmann and myself are trying to organize an open space conference for Agile Coaches. If you have attended SDTConf, it’s going to be very similar. We are considering Spring 2008 as our time frame for the first conference [or should I say unconference].

Agile Coach Camp

We are seeking helping in a lot of areas:

  • Help finding a venue : University with a lot of classrooms and conference rooms will be ideal. Having on campus accommodation would be wonderful. Any part of US is fine, as far as it has an international airport real close
  • Volunteers: Help us build and run this conference
  • Sponsors: We plan to keep the conference free [or charge a min amount say 50-100 USD]. But we need companies to sponsor website, food, t-shirts, evening outings, stationaries, etc
  • Participants: Keep success factor to any conference is not the number of participants but the quality of participants. We are really looking forward to expert practitioners who coach agile teams on a daily basis
  • Marketing : We need to spread the word out. We believe in peer-to-peer word of mouth marketing model. Please help us spread the word around
  • I’m sure we need a lot more help

We are planning to start off in US, but we really want this to be an international conference run in the BarCamp style, where any one can run this. I promise no Royalties, no non-sense. If you are passionate about this topic and there is not one happening in your area, take the initiative and we’ll  be there to help you.

More details: http://agilecoachcamp.org

Day 1: Simple Design and Testing Conference 2007

Saturday, December 1st, 2007

Yesterday evening we kicked off the second SDTConf. This year the conference is hosted by Penn State University, York, PA. Find more details on the conference website.

The response this year has been mixed. We got a great list of sponsors and everything is taken care of from the conference point of view. We have food, T-Shirts, evening drinks, pretty much everything I need covered. Thanks to our sponsors.

In terms of the participants, we had about 35 people who showed up yesterday. I know 8-10 more people who are going to come in today. So I think we’ll have a good 50 people at the conference. 50 is not bad, but I was hoping to have more people than what we had at last year’s conference [which was 68 people]. Having said that, I’m not really a numbers person. I perfectly fine with less people. [In fact sometimes I think the less the better].

We have the privilege of some really well known people in the industry. I’m sure we’ll all benefit from their experience. Just to name a few folks, we have Brian Marick, Ron Jefferies, Chet Hendrickson, Jeff Patton, Paul Julius, William Wake, George Dinwiddie and many more. Certainly we have a really really passionate set of folks at the conference. Some great topics were suggested yesterday in the opening of the open spaces. More interesting topics to come up today. Watch out the conference schedule page for topics.

Watch out the conference wiki to see what come out.

Also if you want to be in the loop about future conference, you can join our mailing list on Google Group.

    Licensed under
Creative Commons License
Design by vikivix