donderdag 23 juni 2011

Communication - or lack of it

Dilbert.com

Communication can fail in many ways. The Dilbert above is an example of how too much communication can result in the opposite of what is intended.
But often the first failure in communication is to communicate at all.

In the literature you can find abundant examples of how communication can go wrong. IT is a subject area where Communication is crucial, yet somehow especially hard.

Let's try to give some obvious cases:
The most obvious one is NO communication. This one comes in many disguises.
1. No communication by lack of preparation. An employee is fired on the spot, and leaves. Now this aint much of a problem in a warehouse, but an employee working on a datawarehouse system probably has lots of knowledge in his head which was never documented in designs, or fragmented. Now the manager firing the employee will probably realize that a newly appointed employee taking over has some problems, as the situation is pretty obvious.
These kinds of situations are sometimes unavoidable, but one precaution organizations can take is making sure that documentation is up-to-date and that userids / passwords can be recovered by a central department, or institute policies that managers always have useris/passwords of all servers and systems.

2. KT is easy, isnt?
An employee takes over the maintenance of a system as an employee leaves for another company. The manager plans a series of KT (Knowledge Transfer) sessions between the two employees. The manager may feel that after 5 sessions the new employee should be able to take over the job seemlessly. He may be in for a disappointment. The new employee, depending on training and experience, may be able to perform many of the regular tasks if his predecessor, but may run into a few problems when a major overhaul is in place. It is very likely that some essentials have been missed during KT.
Now job transfer is something unavoidable, but one should realize that a series of job transfer sessions is always incomplete.

3. Listening is hard
During design, a designer may think that he understands that requirements documented. While reading or listening, our minds make up images based on the words of the author / speaker, AND based on our own experiences.

For example
Speaker: I bought a new car.
Listener: pictures a standard person car.
Speaker: It's a very big one.
Listener: pictures a small van.
Speaker: It's a beautiful red one
Listener: pictures a red van.
Speaker: and all its wheels are well balanced
Listener: expands the image from a van to an 18-wheeler.

One thing that you can do to make your communication clear is to communicate as much as possible, to repeat information and to check with the listener what he understood.

4. People who are quarreling. One of my first employers, a management consultant, was hired because a certain administrative proces took weeks for every oprder to complete. He quickly discovered that two people, sitting in different rooms, but who were at consecutive posotions in the process, were at odds with each other.
Now a normal request in the process did not cause much trouble. A took the form, approved it, and sent it on to B. B. could do his task. But if something was not OK, he scribbled something on the form and sent it on to B. B simply returned it with something like 'not clear'. That could continue for weeks.
My employer redesigned the process in such a way that A and B were no longer consecutive in the process, and things moved a lot smoother.

Though this example sounds exaggerated, little or no communication due to quarrels or irritation appears more often than one may think. While writing this post I was asked to solve a functional design discrepancy. One designer, let's call him J, had written a functional design. He had received a new document code C12012 for a certain document from another designer, W.. He sent his document around to several people for review, and got some comments back. W, who was responsible for the system that received the documents, reviewed that the code should be C12012, not C12012 Attachment A.
Somehow this review was not received by J. Hence he did not update the functional design, and the system was configured wrongly.

Now IF J. and W. had been friends, J. would have asked: hey, why didn't I receive any review from you? But as a little bit of irritation between the two designers had built up over several years, J. didn't take the trouble to walk to W.'s room. He just went ahead with the review comments he had received from others, assuming that was all. And so an error crept into the configuration, which was somehow not discovered during integration test, went into production, was withdrawn, and a patch had to be made. The total correction effort, due to complexity of environments, was several weeks. All this could have been prevented with some extra communication: "hey, i got the reviews of others, but not yours yet? You had no comments?"

5. Assumptions are the mother of all ....
If some crucial bit of information is missing, the reader/listener will either ask (if he realizes he misses something) or assume. The latter can be very dangerous.
One trick to kill assumptions is to ask the listener to rewords what he understood, but that wont work for readers. A pitfall to avoid is using half-worded sentences, like : DVB message as existing stream of FUS.
Actually this sentence combines to things. First, it uses 2 abbreviations which are not explained. Second, the message of the sentence is not clear. Is it a requirement that all DVB messages are like existing FUS? Or is it a general property that holds for most DVB message? Or are the messages totally different, but are their flows similar? The sentence has several short comings. The most obvious one is that a verb is missing, and you should always beware of 'sentences' without a verb.

6. Lack of context.
I recently read a design that started with:
The ATM will be changed to direct the MQ in such a way that XHT will no longer obstruct THX.
Gr8, guys and gals. With some guessing i can deduce that ATM does not stand for Automated Teller Machine. But it would have been a lot easier to understand with something like:
This design concerns the way messages from the systems XHT, THX and ATM are routed over the enterprise service bus (ESB). For the functions and details of the XHT, THX and ATM systems please consult the documents [2], [5] and [13] mentioned in Appendix B.
This sentence describes context. It does not give the aim (why are we doing this?) but it does give a setting.
Frankly, I never find the reason: "Oh, but every one knows what ATM stands for" a valid excuse. ALWAYS give a setting, there are bound to be times when the stuff is going to be read by people who don't know the setting.

maandag 4 april 2011

Prioritiy

"Everything has priority number 1"
"These features are all 'must haves', I have limited myself to the bare minimum"

Who does not recognize these reactions from his or her users?

Why do we put priorities? The general reason is inside the old rule about supply and demand: There is always more demand for features than time to realize them. This applies in all stages of an IT-system, and broader, in all stages of projects and products. In IT, it not only applies to features, but also to other requirements, to change requests, and to the solution of bugs.

The IREB foundation mentions several ways to determine the priority of requirements, and, surprisingly, not the most well know method of prioritization of all, the MoSCoW scale.

The first method is assigning a high/medium/low scale. Many development tools use such as system.

A second way, not mentioned by IREB, is the MoSCoW method. Basically, MoSCoW is an acronym of the the four levels of priority:
* Must - A Must have, without this feature the system/product has no valid reason tot exist.
* Should - should have this if at all possible in this timebox, the difference with "Must" is a matter of time. For example, not all reports are needed at the start of the operations.
* Could - These are often viewed as 'nice to have', and often a few minor things which cost few resources are taken up.
* Would - things which we would like to have if we had sufficient time - which we usually have not.

A third way is Carl Wiegers prioritization matrix. Basically he lists all features, and assigns each of them 4 values, ranked on a scale of 1-10:
- relative benefit
- relative penalty for not having
- relative cost
- relative risk
These four numbers are processed for each feature, and the result gives an indication of a features value.

The Kano model mentioned in a previous post roughly classifies features in three groups:
* Base factors: the factors without which a product will not be bought. For example, a laptop without screen, or a car without wheels. A customer wont mention them, he will take them for granted.
* Performance factors: those factors for which more is better. For example the number of colors in which a customer can buy a car, or the number of years of guaranteed problem free service of a coffee machine.
* Excitement factors: Those attributes which make a customer say: "wow!". These factors tend to degenerate into performance factors over time. For example an autopilot in a car would be a wow factor now, but may be common place in 10 years. An IT-system which gives AI powered hints might be a wow now, but the users will get used to it in a few years - if it takes them that long to get used to it.

Another way is to use a matrix with two different dimensions on the two axis. Two dimensions which spring to mind are impact or profitability, and effort.



In the example matrix to the left features A-F have been plotted in effort vs impact. A and E ave moderate high impact and moderate high effort. Features D and F, in the upper left quadrant, have low effort but high impact. It will be clear that these features should be considered as high priority.

Another good combination of dimensions to pair of, are impact and urgency. This one already has a name, it is called the Eisenhower matrix. For example, an incident with great impact may still have low urgency. It is essential to have clear, unambiguous definitions of both. For incidents in the operation of an IT-system, impact may be defined in terms of the number of users being affected. Urgency is easier to explain in medical terms: bleeding, suffocating and starvation may all cause death, but suffocation is the most urgent, followed by bleeding, with starvation coming last.
Let's have a look at some examples for IT systems and features. Let's define impact as related to the number of users affected, and let's define urgency as:
- essential to primary process, no workaround
- essential to primary process, workaround available
- not essential to primary process
Feature A specifies that every user will be able to print reports with the first sheet on special company paper. Obviously it scores high on impact, but urgency will be low - the first sheet on special paper is not something that is essential to a companies primary process.
Feature B specifies that the customers can purchase items through the website, and that this is the only sales channel. It will be clear that this scores high on both impact and urgency.


Sources:
* http://en.wikipedia.org/wiki/MoSCoW_Method - MoSCoW method
* http://www.processimpact.com/articles/prioritizing.html - Carl Wiegers priority matrix.
* http://it-maintenance.blogspot.com/2010/11/kano-model-explained.html - Kano model
* http://ireb.de/ - ireb.
* http://beanoriginal.net/deadlines-and-the-urgency-side-of-the-eisenhower-matrix/ - eisenhower matrix

vrijdag 1 april 2011

7 requirements myths

James Robertsen gave a presentation on March 31, 2011 for the Dutch chapter of IIBA, the International Institute of Business Analysis. James is always good for a nice presentation, and this presentation was no exception. His subject was: “Requirements myths”.

Myth 1: Requirements are about requirements.
Truth: Requirements are about a business problem. Don’t look where the light shines (which is usually a software problem), look beyond the software for the business problem behind the software.

Myth 2: Listen to your customers.
Truth: Your customers don’t come up with innovations. Ford: “If I had asked what people wanted, they would probably have said: ’faster horses’”. The same applies to Steve Jobs: he never held a customer survey in which people came told him they wanted an iphone.

Myth 3: Testers test software.
Truth: Testers should do end to end testing. They should also test the project plan, the vision document, the requirements, and so on.

Myth 4: Always write a complete set of requirements.
Truth: The 80/20 rule also applies to requirements.

Myth 5: Allow time for debugging.
Truth: Debugging is at the end. Instead, spend more time to get your requirements right.

Myth 6: Start with use Cases.
Truth: Start with understanding the problem.

Myth 7: With agile you don’t need requirements
Truth: You need requirements engineers for your vision document, your initial requirements set, your conversations, and your testing.

On a personal note, I am not enthusiastic about all of them. Some of them can hardly be characterized as a myth. For example, take number 5, allow time for debugging. No doubt I have been on the wrong projects for the last 20 years, but I have never seen projects where software was perfect and faultless when delivered by the programmers.

Something similar applies to myth number 3: Testers test software. Imho testers do test software. It is good to have a fellow worker review your products, and this has become standard practice in most big organizations. Lost of defects can thus be prevented. But he does have point when he says that testers can also have a look at the early documents. Personally I prefer to send early documents also to testers - if they are already known.

Other things are what we in the Netherlands call "Open doors", things which are obvious. Myth number 7 is such an example.

But I think he does have a point with some of the others, such as the complete set of requirements (myth 4) and stressing the business problem (myths 1 and 6).

donderdag 18 november 2010

TRIZ

TRIZ (pronounced /ˈtriːz/) Russian: Теория решения изобретательских задач (Teoriya Resheniya Izobretatelskikh Zadatch), often translated as "Theory of creative problem solving", is a method developed by Soviet engineer and researcher Genrich Altshuller and his colleagues, beginning in 1946.

Genrich researched numerous patents and found that many or all inventions followed 40 principles to overcome contradictions.

For contradictions, he recognized Technical Contradictions and Physical Contradictions.

He formulated a Matrix of Contradictions and 40 inventive principles.

The Laws of technical system evolution describe how technical systems evolve over time.

Substance-field analysis is a technique used by inventors to overcome Contradictions, replace one field or substance by another.

ARIZ (Russian acronym of Алгоритм решения изобретательских задач - АРИЗ) - Algorithm of Inventive Problems Solving - is a list of about 85 step-by-step procedures to solve complicated invention problems.
The latter have been the base of several more comprehensive methods.

Useful links:
* http://www.youtube.com/watch?v=wxDDFnT5qTQ&feature=related - 12 short videos about triz.
* http://www.triz-journal.com/archives/year/ - triz journal.
* http://www.triz-journal.com/archives/1997/07/b/index.html - 40 inventive principles
* http://www.triz-journal.com/archives/2005/11/09.pdf - Explanation of Ariz.

donderdag 11 november 2010

Kano Model - explained

Let's have a look at the Kanomodel mentioned in the previous post. One thing we must have straight from the beginning is that the kanomodel is about quality, not about innovation.

Professor Kano defined the model in the 1960's in Japan. He dimensioned quality vs customer satisfaction by setting customer satisfaction vertically and quality horizontally.



He found that basically there are three types of product features. The same goes for services, by the way.

The first kind of feature is what customers take for granted. They wont mention it in a survey, but they will certainly complain or even be upset of it ain't there. For a car, you would be upset and even enraged if it had no brakes. If they are there, no one will mention it to their friend.

Another excellent example, as mentioned by dr Karandikar, is that a customer expects a car to be scratch free. If you find scratches on your new car, you are dissatisfied and not accept it. Quality improvement will help here, but only to a certain extent. If they are not visible to the naked eye, the customer is satisfied. Any further quality improvement, such as scratch free under a looking glass or a microscope, will not add further to customer satisfaction.

For custom made software, it might be one of the Must (From MoSCoW) requirements.

In the diagram above, the line would look something like:



The shape is usually drawn more smoothly, as a kind of hyperbole, but i think this shape reflects the truth more accurate for many product features, especially whehj it's a "have or have-not", such as tires on the wheels of a car.

A second group of requirements is formed by those where more is better. These are the attributes everybody is competing on.
For example, for cars this might be fuel consumption. You will be dissatisfied in Europe with a car that runs 10 km on 1 liter. You may be average satisfied with a car that runs nearly 20 km on 1 liter. You would probably be delighted with a car that runs 30 km on 1 liter.

In software, this might be the number of bugs per function point. Your customer might be very dissatisfied when he found 10 bugs per function point. He might be very satisfied when he found only 1 bug per 100 function points. And there are various levels in between.

In the diagram we would display it as :



And then there are the features which make your customer really satisfied. These are the things he would not have missed when they had not been there, but which delight him if they are present.

For cars, in the past these were for example auto-speed, seats which can be set to personal preferences, and so on. For the future, these might be a special warning system if the driver is falling asleep while driving, and you can probably come up with your own ideas.

For software, it might be some parametrization which makes things much more flexible for the customer, or the unexpected support of the new product he's designing for his customers.

In the diagram it would look something like:



Now there is a trend with features. What is a competition feature today, eventually degrades to a must have tomorrow. A coffee cup holder was an innovation a few decades ago, became a competition issue and might be taken for granted. Halogen spotlights were one of the things that made some sports cars special, are becoming competition features and may very well be taken for granted in a few years.

To be more complete, we must mention to other groups of features.
It is possible to overload features. A customer wanting to take some quick and easy snaps at a party, will not want all the features available in professional cameras. Those features get in his way. At best he ignores them. In software it might an host of features, which so fill up the menus that the user has to look for things like inserting a page break, foot note or table of contents.

A fifth group are those features which the designer thought great, but which the user does not care about. In software an example might be an entire new way of making menu options available. And though opinions may differ on it, i think the way automatic chapter numbering in ms office is a nice example of it. MS Office straight out of the box supports automatic chapter numbering, but it is pretty hard to have 2 level chapter numbers, like 1, 1.1, 1.2, 2, 2.1, 2.2, 2.3, and so on, which is pretty standard in Europe, but takes an amount of figuring out to get it right in ms office.

Links:
* Wikipedia article
* Excellent video by dr Karandikar

donderdag 14 oktober 2010

Kano model

The KANO model is, according to the english language wikipedia, a theory of product development and customer satisfaction developed by Professor Noriaki Kano in the 1980's.

According to www.kanomodel.com, it is a process for systematic innovation.

To start with the latter, the process has 8 steps:

  1. identify customer needs


    1. explore VoC

    2. beyond VoC


  2. translate key problems into standard problems

  3. select appropriate si tool for each problem (function modeling, root cause analysis, common sense, etc)

  4. generate ideas and concepts with appropriate si tools (si tool selection matrix)

  5. evaluate, synthesize, and select final concept

  6. detailed product / process / service design

  7. Communicate value to the customer

  8. Deliver product to customer


The name process is a better name than model: A model takes aspects of the real world and depicts them in a simplified setting, and describes the mutual relations between these aspects.
The kanomdel website does depict the steps graphically, but imho this is not enough to call it a model.

Another criticism on the kano model is that in step 4 the user has to use one of a series of tools. Now that sounds OK, but the strange thing is that one of these tools is TRIZ, which is in itself a process or method.

The description on wikipedia highlights the following categroies of product (or service) satisfaction:

  • Attractive Quality These attributes provide satisfaction when achieved fully, but do not cause dissatisfaction when not fulfilled. These are attributes that are not normally expected, For example, a thermometer on a package of milk showing the temperature of the milk. Since these types of attributes of quality unexpectedly delight customers, they are often unspoken.

  • One-dimensional Quality These attributes result in satisfaction when fulfilled and dissatisfaction when not fulfilled. These are attributes that are spoken of and ones which companies compete for. An example of this would be a milk package that is said to have ten percent more milk for the same price will result in customer satisfaction, but if it only contains six percent then the customer will feel misled and it will lead to dissatisfaction.


  • Must-be Quality These attributes are taken for granted when fulfilled but result in dissatisfaction when not fulfilled. An example of this would be package of milk that leaks. Customers are dissatisfied when the package leaks, but when it does not leak the result is not increased customer satisfaction. Since customers expect these attributes and view them as basic, then it is unlikely that they are going to tell the company about them when asked about quality attributes.


  • Indifferent Quality These attributes refer to aspects that are neither good nor bad, and they do not result in either customer satisfaction or customer dissatisfaction.


  • Reverse Quality These attributes refer to a high degree of achievement resulting in dissatisfaction and to the fact that not all customers are alike. For example, some customers prefer high-tech products, while others prefer the basic model of a product and will be dissatisfied if a product has too many extra features



Graphically their effect is:
Kano model by Berndh from Japan

These aspects also play an import role in the afore mentioned TRIZ. More on this later.

woensdag 6 oktober 2010

Nesma newsletter

This morning the nesma newsletter artived.

Exin has planned 1 more FPA examination, on nov. 23. When i looked earlier this week, they had not yet updated their calender, but nesma seems to know the exin dates better than exin itself.

There are also a couple of new downloads,
* Begroten (Estimate)
* Exploitatielasten (exploitation costs)
* Softwaremetrieken (software metrics)
* FPA in het Voortraject (FPA in the early stages of a project)
* Measure! Knowledge! Action!
* FPA in Early Phases
* Productiviteitsattributen (productivity attributes)
* Functional Sizing Reference Model
Where the pdfs are in dutch, i have added the english translation between brackets. Interesting reading stuff.