Friday, January 27, 2006

Excellent Resolution (Quote of the day)

"You are what you do habitually. Therefore excellence must become a habit."

John Bevere

Friday, January 20, 2006

The Mystique of Software Craftsmanship, Part 1

Usually, the first years in the professional field of information technology are all about geeky concerns and simple delights like learning languages and exploring frameworks. Then come the big questions about what and why and how are we doing what we are doing. Technological questions give way to human interrogations.

It not a benign fact that information technologists are dealing now with such questions: the industry have matured to such a point that everyone knows that any new technology, as complex as it could appear, can be tamed and that the true challenge lies in the intricacies of human behavior.

Being aware of the challenge that sits in the very heart of each of us is the only way to be able to work on it. Common concepts like rigor and willingness can surely help us improve ; I would like to propose to everyone of us some disciplines whose practice should contribute to improve our craftsmanship.

First Discipline : Taming the Unagile Old Man

Why do we sometimes catch ourselves wondering if we really should code to interfaces instead of concrete classes? Why are we from time to time erring in thinking that we can skip writing this unit test? Why are we tempted to forget about refactoring code that works but we know would be hard to maintain? Why is our first reaction to a change request a negative one?

All these questions lead us to wonder if there is there such a thing as an unagile old man? Similarly to the old man of the Christian faith, who represents the natural tendencies of the non-spiritual human being, the unagile old man would manifest from time to time, when tiredness level or deadline pressure is getting too high, and he would try to carry us in the infamous water of compromising with quality.

What, as software craftsmans, can we do to tame the old man? We have to learn his tactics and apply counter measures:
  • if he plays on your fatigue, get some rest or go out for a walk and come back to the problem,

  • if he tries to scare you, increase the test coverage of your application and take revenge by refactoring aggressively,

  • if he invites you to cut corners, repeat Robert Martin's mantra: “the only way to go fast is to go well” until he gets deaf.

Tuesday, January 10, 2006

Alfresco is fresh but cool!

Today, I had the opportunity to attend to a presentation given by the top guys of Alfresco and, yes, it is pretty cool. It is still a little fresco, dub it too early for prime time for complex ECM needs, but in a six months time, it is bound to become a great piece of software. These guys know what they are doing, most probably because they have done it for more than a decade, but also because they sure are smart.

The same way JBoss has commoditized J2EE application servers, Alfresco will do the same to ECM business and, in a couple of years, Documentum will have to try to reinvent itself or simply rely on their maintenance fees to survive.

But Alfresco will not simply focus on ECM and will soon attack the WCM market, which makes sense. Here they will probably hit a little more competition from affordable and/or open source solutions (like Jahia). But hybrid solutions will emerge, with Alfresco providing content management (through web services or JSR-170 connectivity) and other systems providing the web interface.

All this is pretty well known and expected but there is this one feature they have demonstrated today that, I think, has the potential to disrupt another market, the market of ad-hoc document related applications.

This feature is called "space templates" and allows to instantiate some kind of a workspace with storage areas, discussions forums, rules and workflow definitions inherited from a template. Now, if you bear in mind that they will add a solid workflow engine to the system (most probably jBPM), they would only need to add a full fledged rule engine to support the creation of powerful templates that would solve what expensive ad-hoc applications do.

Here I am thinking of fields like legal and contract management. Take the case of intellectual property management: you could define a space template for, say, Patents, Designs or Trademarks, have all the relevant storage created (related correspondence, official forms, pictures), have the workflow related information in meta-data (country, classes, application & renewal dates) and you would get a user-oriented solution, where her daily work (which is mainly document related work) would drive the whole process.

These guys are clearly not only creating business for themselves but they are opening brand new fields. Who will dare exploring them?