Monday, September 28, 2009

Context, context, context

Joel Spolsky's latest diatrabe, and the outcry the blogosphere predictably issued, got me thinking about, well, about an old joelonsoftware article: Five Worlds. This one is a favorite of mine, maybe second only to the classic The Law of Leaky Abstractions. The point, in a nutshell, is that we too often forget the importance of context when discussing our trade.

I personally believe the Agile movement induced solid progress in software development teams worldwide, but we shouldn't forget where it came from: corporate software projects. Extreme Programming was born in a Chrysler project, it doesn't get much more corporate than this. Most of the signatures under the Agile Manifesto come from consultants, and again, is there anything more corporate that consultants?

This isn't meant to be a put-down of enterpresey work. I am myself a consultant and won't apologise for it. But it pays to look at the differences between the internal corporate projects world and the software product development world:
  • Corporate projects tend to be wide: lots of forms gathering data, lots of reports spitting data out, huge ugly menus. Products are usually more focused, with fewer interaction points that are backed with more sophisticated logic.
  • A consequence is that, while a developer for an internal corporate system might see any given screen a handful of times throughout the project, a software product developer can live inside the system almost as much as the end users (and so, catch more bugs).
  • Corporate systems are expected to reproduce complicated real-life behavior. Tax codes and compliance requirements come to mind. Sounds boring, but at least there are clear expectations for what the correct functioning of the software should be. Another way to put it is that in these systems, it's feasible to anticipate putative bugs. In a product, on the other hand, there could be many undesirable characteristics that are impossible to precisely specify (say we're working on a game, and level 3 should be just a notch more difficult than level 2 but still much easier that level 4 - how would you precisely specify that?).
  • First impressions are crucial for a product. A 1.0 dud can kill a startup - just think of Cuil. Not only it must work, it must be polished, discoverable and pretty. The incentive framework for internal products is very different; as long as the team delivers anything at all, even if almost useless, it's often possible to change course and steer the project towards the actual needs.
Reading these points, it seems that I'm justifying a lower standard of code quality in product development. I'm not. TDD really does allow you to go faster, I can't even fathom what would be like to code without refactoring every few seconds, and all the old sayings about how we spend much more time reading that writing code are true, regardless of how crucial is that we reach that 1.0 milestone.

I was desperatly trying to avoid this cliché, but I just couldn't resist. In the end, we should really try to learn from each other. Agile teams should spend more time thinking about the people who will live in their systems day-in-day-out, and product devs might have a thing or two to learn from the fast pace of a pair TDD-ing away.

1 comment:

Zhou Haoyang said...

Waterproof watch is how to distinguish between the Watch waterproof function is swiss replica watches generally divided into 30 meters, 50 meters, 100 meters, the main environment, the back cover, the table to the anti The water to reach the corresponding standard waterproof apron. 30 meters water table, which can be used for rolex replica daily grooming or rain, splashing on the surface water is only And there is no water pressure on the table. 50 meters waterproof table is suitable for swimming and housework, 100 meters waterproof table can be used for newwatchesoutlet swimming and diving under water.General waterproof Tables are not in the hot water bath, sauna, environment or the great changes in temperature. Because the waterproof apron will be affected by temperature and thermal expansion and contraction gap thus accelerated aging Influence waterproof function. And the water vapor around the molecule is relatively small, it is easy to penetrate the body, damage to the internal machinery.List to be kept in normal position, thread gauge The screw, do not adjust the table in the water.Even if the table is a professional waterproof waterproof apron also should be replaced after a year, otherwise its waterproof performance can not be guaranteed.The quartz watch is best to replace the waterproof component at the time of rolex replica uk changing the battery, so as to ensure the waterproof performance is good. Diamond watches the diamond is really