Tuesday, August 04, 2009

Rigid definition of done considered harmful

Most people that has been doing iterative development in general and scrum in particular are probably familiar with the concept of discussing a definition of done. I have more than once been on projects where the concept of done has been defined in one form or another, and where project members have been trying to deliver running parts of a system that is compliant with such a definition. Even more I have witnessed scrum-masters proudly announcing that their definition of done is really done, done, done. The concept of done, done, done will of course be different from appliance to appliance, but it usually ends containing some of these:

  • Code checked into SCM
  • Code passed QA
  • Tests running green in the Continuous build system
  • Running part of the code in a test system ready to be accessed by functional experts and product-owners
  • Possible discussed and assessed by product-owner before staged to the demonstration environment
  • Possibly accompanied by customer driven tests like fitnesse
  • Ready to be put into production

My claim goes as follows; forcing your team members to adhere to a definition of done that is to rigid, and using that same definition as a criteria before moving it to the done category on the scrum board (complete in the current iteration), will cause your team to deliver less functionality than they could, and with properties that will make that functionality more difficult to change or even remove. I will try pinpoint why following such a rigid definition along with some indicators on going in the wrong direction.
Just to clarify one thing; for me, writing code with accompanying tests that are checked in and runs green in the CI system is all about the same thing. Make no mistake, I do it and I encourage my team-members, and everybody else for that matter, to do the same.

Team-members are reluctant to pushing functionality out

All those parts that need to be completed to get the "done, done, done" badge might not be necessary or even productive work to deliver the functionality ready for test. Maybe the criteria that says that all functional tests should be supported by a FIT test or some test specified in some BDD-flavor just isn't the way to go if the functionality doesn't lend itself to such a definition easily. Maybe only programmers are going write tests and specifications for that part of the system, in which case JUnit will probably be the best choice for a Java-based system. Not easily being able to comply with the done-criteria will probably cause some developers to go that extra mile to comply even if it is probably not worth the effort for that particular piece of functionality.

Consistency is will of course matter here. Using the same techniques for every bit and piece of the system will make it more consistent. But the strive for consistency will also manifest in supporting test-code or a greater number of test artifacts. These bi-products will have to be maintained and refactored together with everything else, and may actually make it more difficult to change the system later on. It takes experience to know when to put emphasis on consistency over throughput.

Somebody is questioning why we need to work further on something that we have moved off the board

Does this question sound familiar: "I thought you said that this task was done, done, done. We really doesn't have time to take this task back in again". I have heard it quite a few times and although it tends to be accepted, it still surprises me that this is not perceived as the rule, not the exception. If you get all the functionality right most of the time, my claim is that your lead-time to production is probably much longer than it should have been. If you develop build and deploy fast, like in hourly or daily increments, the likelihood of getting it right the first time is probably lower, but the basis for distilling the functional requirement is the running system itself, not some temporary artifact used just for aiding the specification process. Do as much of the specification work as possible in the production code. 

The irony of all this is that it is the people evangelizing on how to eliminate waste that are most prone to push forward a framework to assist in the specification-process where that framework is not part of the code running in the production system. The observant reader may have understood that I am being intentionally vague here, and I have chosen not to prove my point with an example.

It tends to propagate into rigid definitions of other areas of development

The work to be put down to comply to a rigid definition of done to sign off on a user story or a task has the tendency to propagate into all areas in development. I think this is partially caused by the fact that you tend to move the some finalization-criteria out of the common-sense and ad-hoc part of decision making and into an (often) static set of rules. We need some statement on what the rules are, if not for anything else, at least to get some transparency related to the development process so that it may be explained to architects, management and other stakeholders and decision makers.
I believe that the urge to push rigid definitions of compliance rules forward is partially caused by the strive for consistency. The expectation is as follows; if you have rules that govern the development process, in the case the definition of done to move something off the scrum-board, then you will end up having delivering functionality in a consistent and predictable manner. That may be, but what if the functionality delivered is delivered slower than it could be and, and much more hardened in the source-code in terms of difficult to refactor tests and Fit tables.

The same goes for code-qa (pair programming is not always how code comes to light). Way too often this boils down to developers commenting on each-other code that may have been developed another way. Some times it identifies and prevents serious design-flaws, which is great. Developers produce at different levels of quality, use this input in the QA-process as well, it is nothing wrong with checking A's code with a great level of scrutiny while you may browse through B's commit-log in a split second. That's life, learn and educate instead, don't force the same compliance requirements on everyone.

What to do and where to go?

"There is no sense being exact about something if you don´t even know what you´re talking about." (John von Neumann).

It is very important that you observe and take notes of undesired effects of certain rules that your team is using to guide their day-to-day operation. This goes for code and architecture-centric rules as well as for rules that are meant to support the day to day process of harvesting requirements. When undesired effects show up, maybe it is time to remove or adjust the rule accordingly. Maybe this particular web-module wont need the Selenium-harness?, or maybe it does.

All in all it is about delivering functionality in the running system, supported by tests so that you may change code when new knowledge and requirement tells you to. A rumor says that Thomas Edison did not hire employees if the person on the interview salted his/her soup without tasting it. Use your ruleset the same way, don't always strive for consistency when applying your rules, it may lead to code manifesting in a way that makes it harder to implement your functionality fast and with less effort.

Friday, July 31, 2009

Laptop retrospective

Inspired by ma latest post on different cell-phones I have had, I thought I would give it a second go, but now replace cellphones with laptops . I have been using laptops on a regular basis since the 80's because my father had a genuine interests for computers in combination with spreadsheets. I have decided to include these as well since it reflects my overall exposure to these kind of devices, even though they not reflect laptops I have owned, but merely laptops that I have used.

IBM Portable 5155

To call the first laptop a laptop would be to classify the infamous but very effective German Tiger tank of the WW2 light artillery. The IBM Portable 5155 was an awesome computer at the time and the model my father had was equipped with 256Kb of memory. I was at the time barely able to lift the computer; in its heavy-duty plastic case it weighed in at almost 15Kgs!! I had access to this computer from 1985-1987, it was my first experience with a computer apart from using the Commodore 64 at some friends, because I newer actually had one myself.

Power Book 150

The next time I got to use a portable computer on a regular basis after those that my father brought home from work in the late 80's wasn't before 1997 when I had a part time job for SINTEF. The (at the time outdated) laptop was given to me so that I could do some work while doing my military service as a conscript in the Royal Norwegian Airforce. I used the computer to write user manuals and documentation for a system I was working on at the time. I has no connectivity and was offline while doing the work. This was my first experience using a Mac, but I found it quite easy to master.

IBM Thinkpad 380

I got this laptop while I was stationed as a conscript at Kjeller airfield just outside Oslo. I was lucky enough to part of a project programme that was part of a cooperation between Det Norske Veritas, Aerospatiale Missile and Royal Norwegian Airforce. I used it to program a reporting application in Visual Basic for Applications and MS Access. This was the first really nice laptop that I got to work with and the quality and robustness of the Thinkpad series has appealed to me ever since, even though I never got to own one myself. I also used it for a fair amount of gaming, especially Command and Conquer (one of the earlier versions I believe), excellent game BTW. I think that the keyboard on the Thinkpad models have been in a league of their own.

Compaq (unknown)

This was the first laptop that was handed to me for my personal use after I started my first full-time job as a consultant in Sybase, Copenhagen Denmark. The laptop was not new at the time that I got it, but had been used by a consultant that had stopped working there. It had an SVGA screen and a 150MHz CPU. Before started working there I had really been looking forward to the unpacking of my work-laptop, and all I got was this second hand Compaq. To all you guys hiring staff working as consultants. Please give them new equipment when they start working there. This way you will retain loyal staff for a much longer time. I guess however that unpacking a brand new laptop is not much of a big deal now as it was in the 90's.

I haven't been able to retrieve an image of this laptop, and I dond't have have a picture of myself using it so, sorry...

Compaq Armada 7400

Fortunately I got my hand on a much better laptop after complaining about my first laptop for almost a year. This time it was equipped with a 300Mhz cpu and a neater casing. I cannot completely recall but I think it was equipped with 128MB RAM. Decent laptop as far as I remeber, but nothing to be remember as special after I turned it in when I left the company that I was working for at the time, that must have been in 1999.

Dell Latitude (unknown model)

I got my first Dell as my home-office computer while working for Nokia. I did not really need one because I worked so many late hours there that I could not possibly have squeezed in some more office time after I got home from work. It was nothing special with this laptop. I actually didn't use it much as a laptop, it kind of had its home in the docking station at work. It was however good enough to persuade me to get a Dell as my next laptop. I don't remember the exact spec, but I seem to recall that my stationary computer at the time was a 600Mhz, 512Mb something, so I it was along those lines. I really cannot remember how it looked, it was stuck in the docking most of the time. For the same reason I was not able to find a picture.

Dell Inspiron 8100

Equipped with a 1,1GhZ processor, 30GB harddisk, 512MB memory, DVD, WIFI and a 15" 1600X1200 screen this laptop is the most expensive piece of equipment that I have ever bought. Bought in 2001, it was a true kick-ass laptop at the time, and I still have it although I don't use it. Staying at the top of the throne is costly, and you don't stay there for very long. I actually kept this laptop for a record-long period of 3,5 years, so it paid itself in the end. The lesson learned was however to use another long-time strategy; buy cheaper equipment and upgrade more often. This was the first laptop I bought after founding Zenior, also the place where I still work. I could choose whatever laptop I wanted, I guess that is one of the reasons it ended up to be a bit too expensive.

Dell Inspiron 8600

I had been quite happy with my previous Dells so I wouldn't change a winning team. I actually believe that Dell being the only vendor having a decent site allowing for massive customization of the equipment was one of their reasons behind their success. The laptop had a Intel mobile 1,6GHz CPU, 1GB RAM and a 60GB Hdd running at 5400. The display 1600x1200 screen which was good. Apart from the CPU and double up of memory, 2Gb, , it's specifications wasn't that much different from the previous Dell, but the price was about one third. This was to be my last PC, possibly ever.

MacBook Pro

After using PC-based laptops (apart from the brief encounter with a PowerBook in 1997) for more than a decade, I finally decided to give in and get myself a MacBook Pro. I must say, apart for some annoying issues when running Mac-OSX I am very happy with the Mac. My Macbook has a 2,33 GHz CPU, 2Gb RAM and a 15" monitor. I have never regretted to not getting the 17" screen, it is simply too big. I believe that even my graphics-card is the same as in the 17" model so why bother. I got this laptop in 2007, and given my adopted two-year replacement strategy, I am now opting for a new MacBook Pro. I am planning on using that computer as a desktop replacement for my workstation as well. The MacBook is one of the more pleasing products I have ever bought, regardless of category. I am not an Apple-addict, I just find joy working with pleasant technology in an appealing wrapping; the MacBokk fits these attributes nicely.

Monday, July 27, 2009

Cellphone retrospective

A couple of days ago when I used my iPhone to post a Twitter kind-of status, I was contemplating on how many different cellphones I've had, some excellent, good, some mediocre and some just very bad. I must say after buying an iPhone and being on a couple of trips this summer, for the first time i didn't regret bringing my laptop. The maps application in combination with Safari on the iPhone did the job just fine. Cellphones has come a long way since I bought my first Ericsson phone back in 1995. Some of the phones have been lost on the way, others has been borrowed (and probably never returned) and given away. The first phone I bought I actually managed to sell for 50Dkr in 1999. I have attempted to rate the phones according to a relative rating-scheme; what did I think of the phone when I had it back in whenever. I actually still have quite a few of these phones in my possession still, but they are scattered in different boxes in the attic or maybe in different storage bins in my home office,....sigh.

Ericsson GA 318

This is the cellphone I bought back in 1995 when i still went to university. The phone was nice, and leaner than most other models that was on the market at the time. The display a very simple black and white (no color lcds at the time i'm afraid) LCD that barely had enough real-estate for an international phone number. Netcom did not charge for SMS at the time, and they also provided a gateway that enabled you to send sms-messages directly to the cellphone using mail on the form: MSISDN@gw.netcom.no. I actually forwarded alarms from a production system to the phone using this gateway.

Verdict: 4.

Nokia 6150

I bought this phone when I worked as a consultant in Denmark back in 1998. My needs were really simple. I basically used this phone as a replacement for the fixed line that I terminated back then, and being a consultant, I had to be available. This is one of the most durable phones I have ever had, and I actually got this as a work-phone when I started working for Nokia Networks back in 1999. Later I have used that particular instance as a replacement phone for other phones that have ceased to work. However this was the first time I encountered the "it just shut itself of" syndrome that seems to have been haunting Nokia phones ever since.

Verdict: 4

Nokia 7110

This was a truly amazing phone at the time. It was, I believe, the
first Nokia model to support WAP and T9. It also had this neat little
keyboard-cover that you could release by pressing a small button on the
side of the phone. It made this "wsssh-click" that was very easy
to recognize. This phone was actually engineered and developed at the
research-facility in Copenhagen where I worked at the time. The early
prototypes had some flaws and one of them that I remember particularly
well was the problem with the ejecting spring for the cover being too
strong so that the cover would actually separate from the phone and be
ejected several meters. I more than once had to pick such a cover out
from my lunch (not my cover) being ejected from one of my coworkers
trying to enjoy their lunch while receiving a call, and sitting at my right side.


Nokia 3310

I got this phone as a prototype back in 1999, 4 months before it went into full production. At the Nokia facilities at Fredrikskaj they handed out this model to all employees. It was nothing special with this model, and it was ugly. It had, however, a sms-chat function that was pretty neat that I haven't seen on any phone models since this one. This phone was one of the first ones with widely available snap-on covers, i had only one cover, grey.....


Nokia 6210

I got this phone as a replacement after my 7110 was lost on a business-trip to Finland. The phone had many of the same features as in the 7110 but had a much better mechanical design and no antennas pointing out. The screen was nice and it had a small lean design so that it would easily fit in to any pocket. It also turned out to be one of the more robust models I have had.


Nokia 9110i

Wow, I felt like a kid the first time a got my hands on one of these. I first got it in 2000 and given the functionality it had at the time still amazes me. It is one of the reasons I loved (and still do) Nokia as a company, being truly innovative. When the first Communicator was launched, virtually nobody knew, before the lightning came out of the sky. This was one of the predecessors, only with even more features. I had work-mail using a VPN connection, and I more than once used the built-in telnet terminal to log into test and development-servers to launch new builds, check build-status and so on. The excellent QWERTY  keyboard was one of the reasons I really had a hard time to switch back to more regular type phone models.
The only problem with this phone was its limited durability. I had to send it away on repair twice before it finally gave in in  2002. The backbone was an AMD 486, I had a Cyrix 486 as a refrigerator magnet several years erlier :-)

Despite it's mechanical weaknesses I have to give this phone a verdict:6

In the period after the decease of the legendary 9110i but before the 2003 i used my old 6150 and 6210 before finally giving in ans buying my first Sony Ericsson phone with MMS.

Sony Ericsson T610

I just wanted one of these phones to try something else than Nokia. It also was to my knowledge one of the first Sony Ericsson mobiles to come around apart from the legendary T68i and of course the P800. The phone was my first MMS-phone. A lot of service providers campaigned this as part of their MMS launch. The phone was OK, nothing more.  Its dimensions in combination with a lousy keyboard made it very difficult to write sms-messages using only  one hand, the bottom part of the keyboard was simply to close to the edge.

In fall of 2004, a scratching disturbing background noise made it difficult for the people I was talking to too hear what I was saying. That made an end to a not very exiting relationship.


Nokia 9210i

My brief encounter with what we referred to as "those other guys" when I worked for Nokia up to February  2001, the Ericsson part of Sony Ericsson, made me want to go back to Nokia. During the last couple of years I hadn't been able to get the Communicator out of my head. I will admit to possibly being a bit nostalgic, but it was no other way, I had to get back to the life I had with the Communicator. So I went down up to Telekiosken at Storo and got myself a 9210i. The form factor of this phone was better than the previous Communicator models, and the foldable antenna was all gone which was about time. The mechanical flaws from the previous models had vanished and it now had a color TFT which today I still remember as one of the best cellphone-displays ever. Even in broad daylight the screen was completely unaffected, as pristine as a piece of paper. Some of the magic feeling I had from the first model was gone, that together with a battery with limited quality made the re-encounter shorter than I hoped for. After the phone shutting down when I was about to agree on a rendezvous point with my off-piste friends in Hemsedal, for doing some serious downhill just before I was able to communicate my location, aided me lin shutting it down. I decided to get a more robust and less amp-hungry friend.


Sony Ericsson W950i

A good friend of mine (and co-worker) that was much more knowledgeable about cellphones than I was, became all worked up about this new model. It had a decent size, heaps of functionality and a touch screen that was usable together with the pen that accompanied the phone. No fuzz, I got one immediately. This became my first mp3 player as well I am embarrassed to say. The phone was decent and even had a radio which I have missed on most of the other models I have had (and still miss). But it did not take long before I re-discovered the flaw that I had seen on other Sony Ericsson phones as well, a keypad that relly sucks. The keyboard is one of those plastic ones where a thick film of plastic covers a keypad with mechanical devices sensing keypresses underneath. The problem with this model was that they had messed up the placement of those sensors completely so that you actually had to press slightly above the marked digit to get the desired result. I wonder what kind of substance the engineers designing such a piece of ***** had been consuming before they hardened the design....


Nokia 6500 Classic

After been doing my fair share of smartphone-hype, carrying around power hungry and feature-bulky phone for almost a decade, I wanted to go for a small, feature stripped phone with an appealing and urban design (!!?).  I went for this simple and not very expensive model from Nokia. It had Java as well so together with the small but very nice screen it made a good company for the J2ME version of GMail. All in all I was quite happy with this phone that I got in the summer of 2007.


iPhone 3G

I finally gave in in in 28'th of march 2009, my wife convinced me to finally get myself an iPhone. I gave in because I was very pleased with my acquisition of an iPod touch a couple of weeks earlier. After the 3.0 upgrade which arrived fashionably late in my opinion i think this is probably the best device with a cellphone I have ever had. Even though it does not matter it kind of pisses me of that it does not run Java.