Saturday, September 27, 2008

Roots of Scrum: Object Technology

Scrum was originally designed to support emerging object technology environments, which have now become the dominant paradigm in software development. One of the goals was to get the organization of the team to reflect the potential flexibility of the software since software rigidity always reflects the organization that built it. This is Conway's Law. Fred Brooks cited Mel Conway's 1968 Datamation paper in The Mythical Man-Month and the name stuck. "Any organization that designs a system (defined broadly) will produce a design whose structure is a copy of the organization's communication structure."

Object-oriented languages have a small set of interoperating principles. Break any one of them in creating a language and many of the benefits of object technology evaporate. A similar analogy could be made about Scrum. So here is a candidate set of principles.


It is easy to extend the Scrum pattern to fit the local environment without modifying the metaClass represented by the Scrum organizational pattern.

The same message sent to a different Sprint can produce a result dependent on the environment.

Encapsulation (information hiding)
Work is packaged in increments. Scrum teams can scale by making a Scrum of Scrums look like a Scrum tream to another Scrum of Scrums. Using an object-oriented network to scale allows potentially unlimited scaling.

Emergent Design
A small change can have a ripple effect that causes refactoring and a new design emerges.

OO is a messaging environment. Constant high bandwidth communication works best.

There is typically no "control" object. Behavior emerges from the interaction between objects in languages and between people in Scrums.

Objects can be aggregated into components. Components aggregate into an architecture. Scrums can be aggregated into Scrums of Scrums orchestrated by a metaScrum. A metaClass creates the framework for all classes. The Scrum framework could be viewed as a metaClass laying out the minimal attributes of a Scrum and the relationship between components.

Constant review and analysis at a meta-level leads to increased functionality and flexibility. This is an extremely powerful feature missing from some languages, which tends to cripple them. It leads to the Retrospective in Scrum.

All software implementations of objects use the metaClass of a specific language to create coherent structures. There were hundreds of people who created new objects languages and 99% of them failed in the market. These are like homegrown implementations of Agile. "We are doing Agile" has no meaning. It is like saying we are doing object technology. In the last decade we would look into the code of a C++ application and see nothing but old C procedures. There was often not a single object to be found. Today we see hierarchical organizations implementing hierarchical teams and calling it Agile. They can't help themselves. They have to change the organization first to get it right or Conway's Law assures that they will fail.

Certain languages are structured to work together like JRuby with Java. This is analogous to Scrum and XP. Others like Java and C++ inherit features from a common ancestor but do not interbreed well. Those that take pieces of Agile languages and cobble them together get what you would expect - a horse designed by a committee. It can't run but maybe it can store water.

Tuesday, September 16, 2008

Cool Tools on the Web - DropBox, Code Collaborator, and Poodwaddle

There is no end of cool tools popping up on the web. Do you want to have file folders that automatically sync on every Windows, Mac, and Linux box that you own instantaneously and transparently - you need DropBox. Or maybe you are having problems with code reviews and want to make them fun, easy, and totally automated - check out Code Collaborator. Or maybe you just want to know the worldwide numbers in real time on the environment and health - see below:


Sunday, September 14, 2008

iPhone, ATT, T-Mobile and how to avoid getting ripped off

My phones - ATT iPhone 3G, HTC T-Mobile Touch, Sony/Ericsson Walkman

I spent over half my time for the last few years outside of the U.S. doing Scrum training and experimenting with mobile phones. There are lots of options and some of them can cut your costs by 98% compared to U.S. vendors. That's right, you can make local calls for 2% of the cost of a U.S. roaming cellphone. ATT and T-Mobile cash registers make a loud k-ching sound when you travel abroad and you may not know it but they sometimes think Canada is as far away as Europe.

I couldn't resist getting the iPhone 3G to test out on my travels. The iPhone is a very cute and very expensive toy. I love it. Too bad I can't use it as I travel around the world. I spent a week in Canada last month and got charged $100 extra on top of my $100 monthly charge for using Gmail and Google maps. Pretty expensive map.

ATT claims an award for "the best wireless network in the world." They must be drinking their own Koolaid. At Logan aiport in Boston the signal on the iPhone is so weak my wife can't hear me so I have to pull out my HTC T-Mobile phone which works fine. Same thing happened to me in Toronto. Also, my HTC T-Mobile has all the services of the ATT iPhone for $25.27 a month added to my wife's Blackberry bill as a second line. This includes no extra charge for international roaming data services.

So for the price of spending a week in Canada with my iPhone, I could have eight T-Mobile phones added to my wife's account. I'm keeping my T-Mobile phone so I don't have to use my iPhone, particularly when traveling abroad which is about 2/3 of my time. Also, I have the TOM TOM GPS system on the HTC. I need a real GPS, not a fake GPS like the iPhone for many things although I really like Google maps on the iPhone.

Now let's look at call charges. I'm in Denmark right now where phone charges are cheaper than most countries. Here is what a local call costs me:

ATT iPhone - $1.29/minute
T-Mobile - $0.99/minute
Lebara Mobile - 9 ore = $0.017/minute

Always get a local SIM for your phone. Buy a European phone if you need to. Otherwise you will be spending 100 times more for local calls. I might hack my iPhone to swap SIMS but I can already swap them in my T-Mobile phone so it is probably not worth it.

A markup of 10000% is a little steep so maybe ATT could qualify as the biggest ripoff of cellular networks in the world, although other U.S. vendors are not far behind.

But maybe they should be compared to major European vendors like Telenor, Orange, or Vodaphone and for their SIMs (I have several of them) I will get charged 20-30 cents a minute so maybe the ATT markup is only 500-600%. The iPhone is so cute it might be worth it as long as you don't travel more than a week a year.