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.



Friday, July 24, 2009

5 things I wish for in the near and not so near future

In no particular order or priority.

I am currently on vacation, spending time with family and friends, and approaching things a little bit differently. By doing something else than going to work and not going about the normal routine (which I really enjoy, don´t get me wrong), you get new ideas on how to approach things, which is great. The small deviation in how to approach a problem can get you into new areas of unexplored ground. Here another day, inspired by Thinkertoys, I took another way to work. I drove passed a building I had never seen before with a name on it. I started thinking and it gave me an idea of a company name dealing with a business idea I have been puzzling with for a while. Small change may yield inspiring side-effects.

Speaking of business idea, I thought I would like to share the tings that I would like to have, of which some exists, but most don't. Some of the products or solutions are things I want and will probably get in the near future, some are products where the technology is and may never become available. Some of the things may address a small and not very important part of everday life, others may affect the way we live. Some of these things that I suggest may already exist, then excuse me for my incompetence and inadequate investigation of prior art. To avoid stepping on to many toes, I have chosen not to go into areas that may offend groups of people committing to a specific religion or political direction, maybe with the exception of public transportation :-)

Wireless everything

Everytime I want to install a new piece of equipment in my house, the thing that caused me the most headache is wiring. Coax for television, cat 5e for networking (no, Gigabit WiFi is not available outside laboratories, at least not to my knowledge), wiring for speakers, and of course, the infamous houshold power. And for crying out loud, when are we going to standardize on power transformers for DC devices, and I am not just talking of cellphones here (where they, believe it or not have agreed on a common standard). I think i have at least 50 different transformers in the house, where at least 15 of them are in use regularly, most of them ranging between 5 and 12 volts and 0.1 to 1.2 amps. None of them has a common physical interface. All these transformers make parts of my office space into a mess. By not being constrained by cabling, you can probably mount heating devices, lighting, stereo systems and everything else so that it will be more energy efficient, but also more pleasing from an aesthetic point of view. Giving what I save on my electrical bill I may no spend on buying more television sets, because I may now mount them on the wall without anything else, right? But then, what about the set-top box...well I don't think that there is enough storage space available in the world to actually store a persistent version of that topic, so that will have to wait for later.

Choose my own hardware when working at client site

Why is it that all businesses standardize on a workstation platform that is supposed to accommodate occasional needs for creating office documents and e-mail running on MS-Windows, often bundled with a 19"-inch monitor, insufficient amounts of RAM and a CPU that was at best mediocre two years ago. This is about as far as you can get from the specification of a decent development platform. In addition to that you usually have to go through the regular process of getting administrative rights, and to disable virus-control. You security people don't really get it, do you. Believe it or not, developers may need privileges to actually install applications on their workstation other than those approved and already installed by support. Why not trying to save some money, and let contractors and consultants use their own equipment instead, most possibly a laptop that they probably have already, but maybe also an external display as well. If networking is properly configured this should not be a problem neither from a maintenance nor a security perspective. And in order to avoid any potential envy or conflict, please provide your employees with the best possible equipment.

As for software, I am usually allowed to work with whatever tools that I want to as long as I don't expect my clients to provide them. My primary concern is hardware.

An Amazon Kindle or other e-book device

I am a regular Amazon customer, I buy mostly science and programming books, but recently I have also been buying my fair share of books on parenting, productivity, entrepreneurship and creative thinking. Books take up physical space and is heavy to carry around. More than once have I needed a book that I have bought without having it where and when I need it. I gudd this is partially caused by the ambulant nature of my work. With a decent e-book device I could possibly bring as many titled that I want in a package about the size of a regular book. Most titles would always be in stock and I would never-ever again be concerned again that the delivery service would deliver the package while I was away. I really need one of these things. The only little hitch about this device that made me quite worried may be found in this article. Words are not sufficient to describe the irony and hopelessness of such an act.

Seamless and effortless public transportation

If you do not live in Oslo or another provincial Nordic town, parts of this section may not apply to you. I have been using my car for work for years to go now. It is very convenient and has made it possible to cut down transportation-time to around 15 minutes each way. In addition to that, getting groceries or other things on the way home is the easiest of things. After getting my first child some time ago, me and my wife now share the car more and more, so I use the subway for work maybe twice a week. With good timing and no delays, I am able to get to work in around 45 minutes each way. This is from what I hear pretty decent, but still almost the triple of what I use today. I just don't have an extra hour a day to waste. I guess that without having to do a transfer, I could be down to around 20 minutes which is comparable to what I use in a car. Taking transfers out of the equation as long as both home and work is nearby a station for public transportation, or making transfers transparent will make this a competitive alternative for a much larger group of potential commuters.

The kind of system I had in mind consists of a network of autonomous small cubicles that may accommodate up to four passengers each. The backbone of the infrastructure is s grid of rails that may transfer a large set of these cubicles at high speeds and to their programmed destination. The grid may be powered by small electric motors or, preferably by magnetic leviation. A google search on "fremtidsrettet kollektivtransport" gave me 101 hits. When I get this few number of hits it is usually because I have mis-spelled something or that it doesn't exist. When it takes +7 years to get a non-working ticketing system for Ruter to go into production, i don't see this alternative being available anytime soon.

Being able to attribute the electrical consumption down to individual devices

In Norway, we are fortunate enough to cover most of our electrical needs from hydropower. From an emission perspective this is probably the cleanest, currently available source of energy that exists, but it cannot be exploited without significant consequences for the wildlife and environment that surrounds the power plant and any dams possibly built to provide for sufficient flow of water. The electrical consumption in Norwegian households have been increasing significantly and will continue to do so for the years to come. During periods with limited water supply, we are dependent upon supply from Denmark, that are more than willing to crank up their old coal-based power plants in Jutland to provide frozen Norwegians with stand-by power for their brand new LED tv's. Don't get me wrong, I am not a saint, I use my fair share of stand-by power. My point here is that most of our daily activities are assisted by some kind of device powered by electricity, and the electrical bill being a major part of the household budget, it is just fair that we should be able to have some more transparency utilization down to individual devices.

The power meter in my house has no means of even exposing the aggregated consumption of the household, it is one of those arcane, antiquated devices with a rotating disk. I guess that the likelihood of getting one of these equipped with some kind of interface that would enable me to offload some data is close to nothing. If I had one of the more recent meters I could do something like this but I don't and it will not provide me with all the information that I need.

If being able to attribute the power consumption down to individual devices, it would be much easier to convince people how to actually be more conscious on how they use their household devices and implicitly giving them the ability to understand how to reduce or improve their use. I think that getting this level of transparency is the key to get people to really understand how to spend the household-budget in a more environment friendly way. So are there any takers for developing this kind of infrastructure? I guess that the only thing it will take is for each device that consumes power to emit a signal containing an identifier of the device for every miliamp consumed.