Wednesday, July 8, 2009

How much does quality cost?

This is natural to think that in order to get the perfection one needs to pay for it. This is really hard to argue. However, what comes to quality, things may look not like they seem at the first glance. Quality may cost you additional time spent on operation that you would not do still producing a good product. But we all are humans and are not perfect in sense of quality of our work. In other words, we do make mistakes. So, we need all these additional measurements within the production cycle that allow us to see if the product complies to standards and requirements.

But when we talk about time and efforts spent on following procedures which only purpose is not letting us making the errors we should not forget about savings that we get using them. We have introduced all those practices not just in case but in response to problems we had in the past, in response to defects introduced or missed in the previous production cycles. Having deprived of them is going to save our time and resources!

The formula of quality cost includes not only explicit expenses on following quality processes but also implicit savings we get from following them. If you do not have savings then why bothering to do unnecessary actions? Even if process changes are introduced "just in case", we still do it to decrease the risk of having some problems in the future (lost user data -> frustrated clients -> bad reputation -> drop in sales).

In any case, if we make changes to the process we believe that we are going to have some saving, be it lower number of defects found at system testing, or fewer calls to customer support. So, we can infer that quality does not cost us money. Instead, it saves us money!

If you are still not convinced that introducing quality practices does not cost you a coin, just look at two automobile vendors: Alfa Romeo and Toyota. Both cars can be in same prices niche, both provide similar functionality and cost almost the same, but the difference in quality is huge. It's remarkable that Toyota does not spend more money for producing its cars than Alfa Romeo because they have a good quality system installed. So, they spend more at the early stages of development to save time at the later stages.

In order to create such a system in your company just look at the history of previous projects. Analyze defects that escaped development and testing phases. Try to estimate cost of one fix at different phases, and introduce practices that will eliminate most popular mistakes. You can easily calculate savings you will get from introducing those practices. Then simply compare it to the additional cost related to following those practices. I am sure the benefit will totally overweight the overhead expenses. If it doesn't just write me back. I am interested in that sort of anomalies ;)

Tuesday, July 7, 2009

I can generate all tests! Wow!

Today I partook in Beta program for a test generation tool. This tool accepts the list of parameters with possible values for the input and generates combinations, which represented virtually complete coverage (all values of all parameters represented at least once).

Despite the idea is good, the actual use of such tool is in doubt. Of dozens systems that we tested I could name one or two where we could apply this idea. The idea of cutting testing cost by combining test input is not new. I have got acquainted with it while reading Marick's "The craft of software testing" in the end of 20th century. Author tried to minimize test count by carefully combining input values, taking into account dependencies between them. It was beautiful but it proved to be useless in the real practice. The time spent on optimizing tests can be easily spent running more tests (including those, removed with optimization).

Another problem with the idea is that combinations cannot be seen from mathematical point of view only. There are other factors that can affect selection of combinations to try. We may know that testing under a specific browser is more important because it is very likely that application can fail in it. Whereas testing under another browser can be minimal because we know that all development is performed using it. So, the context does matter and test generation tools shall take it into account or they will stay as useless.

Saturday, July 4, 2009

Who to blame for bad quality?

"What a silly question?" a CEO would say and call for a quality manager: -"Bring me that looser. I told him more than once that this is not acceptable - to produce the software with critical defects. It hurts our business and stay in way of expanding it beyond the limits of Solar System."

Many times I saw how managers point their fingers to a person who bears word "quality" on the working title. But I saw few of the latter who could really do something. What is it then? A person who to blame no matter if he or she could do anything? A sacrifice goat whose fate is all pre-defined?

And what is more important - what could we, quality professionals, do about it?

Once I've been at a meeting with a big boss who very convincingly explained to us that of all the corners of a famous triangle (quality-feature-time), quality is the most important. "We never compromise quality!" he told. I was in love with that idea and was full of esteem to that person by then. But... within several releases I realized that those were just words. He did not think so. Every new release features prevailed until application started to look like a monster, a biting monster, because users were not happy when it crashed in their hands way too often.

So, who that boss should blame for the quality?

Before claiming the answer to the question "who is guilty" let's focus on solving the problems that we have in development and management that led to defects be injected into the code and not found during testing. After that, have people directly responsible for letting those issues go analyze the way they work and provide you concrete improvement actions which will help avoiding similar omissions in the future. But, doing so, keep it impersonal. Let them know that it's ok to make mistakes until they learn from them.

As for the question, if you want to blame someone start from you. Just ask yourself what would you do about the problem? How could you affect the process, so the issue is not injected or removed within the production cycle? If you are not perfect, you will always find something to improve, to grow. Answers to above questions will provide you with some insights.

Another very important thing is not to start finger pointing until you know the root cause of a problem. Make sure you have argument to prove someone guilty. Otherwise you risk to severely under-mine the moral of a person in whose performance and contribution you are interested. There is nothing worse than thinking whatever you do - you'll get blamed. This is a killer to motivation.

So, the short answer to the question is to start from you. The more in-depth answer would be: find out the actual reason, have people involved analyze the problem and come up with action plans, make corrections to the process.

Friday, June 19, 2009

Motivation - are we all the same?

Motivation is one of most appealing management tools. Motivated employees can produce more of the product and with better quality. Many companies work on their employees’ motivation to get the best outcome. Introducing bonuses, providing cars, better working environment, and social benefits - all aimed at keeping workers, clerks, and managers motivated.

But what is the motivation itself? Is it the same for a person, who likes washing windows so much that he can't wait until tomorrow to go to work, and a person who wants to organize things so, as to sit back and see things moving round in a well-organized way? Are these two kinds of people thinking the same categories? No. They even have opposite motivational goals.

Today I have read an interesting work on motivation. Author was speaking of three kinds of motivation:

- Rational (I love my job and I have a natural desire to do more, to do better)
- Irrational (I don't like working, I better make things turn around themselves)
- Egocentric (I can stand anything if I get promoted)

People of rational type of motivation enjoy the work itself. They have a natural desire to work more, to work better than yesterday. They find motivation in what they do.

Second type is completely different. They do not like working. They are motivated by... laziness. No. This is not a joke. And such people are not losers. Most of innovations come from this type of motivation. The many of this sort have their own business, which they started having perspective goal to sit back and watch things move on their own.

Third type finds motivation in esteem of peers and management. They are clearly of extravert type. They do care what other say about them and how they see them from the outside. You can keep the salary of such person relatively low. Having a good career perspective, such a person will work the best.

Each of three groups of motivation requires different actions to keep it warm. Instead of looking inwards companies prefer to stick to one type of motivation that, in their opinion, can target all the types of individuals. So, we should not be surprised with the results.

Identifying the right motivation for your employees is vital for your business. It's hardly possible to keep "sheep safe and wolves full". There are different types of personalities working for you. Learn them and find the best way to manage their intentions and to use it for the success of your business.

Thanks to author of that original article for insiping me on writing this.

Thursday, June 18, 2009

The outsoucing thorns

When I first came to the outsourcing company I was perplexed and confused at the same time. The entire set of values I brought with me from a company that worked on domestic product was hardly applicable and required significant adjustment.

First thing that made me nervous was the absence of a defined development model. Each project was a small company per se with its own game rules. The set of rules depends on the qualities and experience of a leader (PM) and customer will. This is not arbitrary that I placed leader in the first place. PM is more influential figure in the project than it may seem to be. Few customers come to the outsourcing company having enough experience in software development, so they know how to organize the process. Most of clients are new to the domain and have vague idea about peculiarities and risks related to software development. A strong project leader can correct customer's vision of the problem to a decent extent.

Another difficulty was the dictate of the rules by customers. There were problems selling off testing services, especially in the difficult recession times. Testing is being seen as an additional cost. Testing does not create the direct value so it was perceived as a good candidate for cost cutting. Some customers even insisted that they will do testing on their own. I am not sure they realized what it would cost them. I am sure they would find a better use to their precious time. This looks even stranger if we think of a pitiful experience in testing they usually have.

The third problem is also related to the company being split into small reins with their own small kings. Introducing changes is a much more painful process. If it can be done only with enthusiasm in the "domestic" company, this is absolutely impossible in the outsourcing without a constant support from the top management. You simply find yourself bogged down in communication maze with all the parties interested, each of whom have their own vision of the problem, and each of whom used to adapt different kind of processes.

This is, in general, the core difference between testing and QAing in "domestic" and outsourcing companies. Having experience in both worlds I would suggest you to select the former if you want to learn building quality processes. I would suggest the later to those of you who value challenging environment, don't fear changes of rules during the game, and who is a good negotiator.

Wednesday, June 17, 2009

Should we care about certification?

Ceritification is one of things that cause a lot of flame. Some people say this is critical to have a proof that your knowledge and it helps to find the job. Others insist that managers learned to be suspicious about certification value because theoretic knowledge it provides is of little help to day-to-day work.

I myself is rather of the second type of managers. I ground my conclusion on the fact that the best testers I worked with were not certified. On another hand, I know average professionals having tens certificates.

Of course, when comparing two idetical candidates (which is a very rare case), I would pick one with a certificate. So, the certificate wins but with a very small (insignificant) lead. This means that you need to think twice before investing into certification.

Tuesday, June 16, 2009

Management style: directing vs. controlling

Today I am in the mood to talk on a high matter - management.

I was managing a team of software testers for about 10 years and learned management from both ends: as a manager and as a subordinate. My manager side has learned that we are not as perfect as we may seem to be, so there is always things to learn from our more successful colleagues. My subordinate part observed a lot of mismanagement errors on the side of my bosses. Both kinds of experience allow me becoming a better manager myself.

Analyzing my own mistakes helps me avoiding them in the future. Watching mistakes of higher managers is a little bit thougher experience as it requires to get detached from theunpleasant emotions they cause and to observe the picture as if from the outside.

Management is not a science. This is rather an art. There are styles. Which style to follow depends on the situation on the managed project as well as on personal qualities of a manager. Methods that work best for one manager may be totally unacceptable for another. For example, strong egocentric leaders tend to adopt commanding style, while technical managers mostly use supporting style of management. The worst of mistakes is jumping from one style to another or having no style at all. It will look as if you act inconsistently and your people will have no idea what to expect of you, so they will be cautious andself- protective.

Part 1: Lessons of a manager

Below are some lessons I learned while being a manager.

Lesson 1: Be in touch with your team

In order to lead a team of people you have to feel them. You need to keep in touch with each team mate, to stay aware of what happens to the motivation level and what problems may prevent your people from feeling all right.

Managerial attention flatters people. They start feeling important and recognized. So, do not hesitate to stop by and ask not only about the status of ongoing tasks, but also about how they feel, what they did on weekend. Let them know that you care. I hope you do. Otherwise, you are on a wrong career path.

Lesson 2: Be informed and proactive

There is no excuse for a manager who does not know what happens on his project. Collect information regularly, summarize, analyze it and make correction to faulty actions timely. It will help fixing issues until it's too late.

Be proative and predict different kinds of situations, risks and contingencies. Have a plan for the cases when things go not as you wanted them to.

Lesson 3: Don't kill the initiative

Your primary goal is to provide the best outcome your team can produce. Some managers tend to achieve it by doing 200% themselves. Some managers control every action of subordinates strictly. Both ways are killers to personal initiative and responsibility. The people that are working for you are smart enough to take on decisions on their own (If they aren't then think if you have right people on the team).

It's ok that they make mistakes until they learn from it. Micromanagement is the cycle that never ends. People start thinking that their own thoughts are not needed and will wait for your command to take on every simple actions. Allow some freedom in decision making. After several (probably painful) mistakes you will get the team that can solve complex problems on their own.

Lesson 4: Don't push too hard

Pushing too hard is even worse than not pushing at all. Remember Newton third law and think twice before applying extra-pushing on people. All you may achieve is getting proportional resistance. Instead, try talking them into being your ally. Share the goal with them, make the goal their own.

Lesson 5: Trust but verify

Sometimes people lie. Have the means to check what you are told is actually the truth. In a while you learn who can lie and who is out of suspicion. After being caught on lie the former soon transform to the latter.

Lesson 6: Never commit to what you cannot deliver

This is the hardest part of management to me. I am a very optimistic person and I believe that there is no limits to possibilities for a team of professional. Probably, if the entire team was of such people, who simply forget about the other entire world when they see an interesting challenging goal it can do.

The reality is a bit different. Every team has capacity, throughput that cannot be exceeded. Committing to the task that is out of possibilities of your team is damaging to your image and career. I know that sometimes you are pushed to commit to the goal you don't believe in. Well you always have a choice...

Lesson 7: Foster a good friendly climate in your team

Healthy atmosphere boosts productivity. There is unnecessary friction. Peers willingly help each other to be successful. Communication is open and honest. Problems are made visible early, so you have time to react. Everyone is interested in self-development. There is a healthy level of competition within the team.

Part 2: Lessons of a subordinate

Now let's talk about what I learned to be the worst mistakes of my managers.

Harsh lesson 1: Inconsistent management

If you change your mind to often without justifiable reason people stop believing what you are saying. When they do, you cannot effectivelly manage them anymore.

I was told many different things by my managers, which I learned to be a lie. I was so frustrated that I stopped listening to what they say and started finding self-motivation in what I do. Not evryone can do this. Other people may simply allow their motivation to sink below the productive level.

Harsh lesson 2: Emotional management

Emotions indicate that you have lost control of yourself. Losing control is not the best thing because you hardly know what you are doing in such conditions. You may easily abuse someone and switch them into resistant attitude. In any case it will only make your management task harder.

I had a manager whose behavior was very dependent on the mood. He could shout loud at a person in the presence of others. This was simply devastating to the team attitude. Mostly it happened on Monday what made me believe that he had troubles at home. Anyway, your personal troubles shall be left off the doors of an office.

Another one liked to make harsh faces and to talk seriously". This was ridiculous. He looked like an idiot. Always remember that people sitting against you are smart enough to "read you".

Harsh lesson 3: Whishfull thinking


Wise men say "In order to learn how to speak you have to learn how to listen". Do not simply discard what you see for the reaction on the goals you set. Even if you want that deadline more than anything in the world, do not let this feeling to react on how you treat people who are going to work on it. Probably, you simply do not get the complete difficulty related to the task. Do not push because sonner or later people may agree with you being personally not sure that it's possible.

If you cannot suggest the way around the problems you have been reported do not simply put the responsibility and blame on your subordinates. Do not let them feel guilty because they cannot invent something completely new to achieve the goals you set before them. Instead, try to motivate them, give them your support, and recognize their achievements. They simply cannot provide more than they can! If you think they do then you are that kind of managers they mention in the anecdotes.

Harsh lesson 4: I am boss - you are fool

Do not pretend you are smarter than people who work for you just because you’re a boss. Most probably they are even technically more experiences than you because they do that kind of things every day. So, do not let only your voice speak. A good manager makes people saying.

I had a manager who _loved_ to speak. He was so enthusiastic about it that could never imagine how boring it was. It was a complete waste of time for those who listened.

Harsh lesson 5: This is them!

If something goes wrong have a nerve to take the responsibility. Report that you under-managed the process so it failed and take the blame. The worst kind of managers are those who start looking for the reason of failure in subordinates and finger-point to their own people, whom they hired and for whose performance they were responsible. This is so shortsighted. Believe me; this is obvious to your managers that you are trying to get out of responsibility. And they will not tolerate a manager who cannot bear responsibility. Think about that.

Harsh lesson 6: Having no idea what it's going on, yet make on decision

This is another though experience of mine. One day a big boss came to me and asked why we did not achieve our goals in test automation. I told him the difficulties we face on the way and how we decided to deal about them as well as presented my projections on which goals I can admit as reasonable. He was not happy and asked me if a problem was in a lead person. I was simply stunned because that guy worked as hell. He was the heart and the nerve of the project. I was so amased that I could hardly find the right words. Then I simply said my strict "no".

I was amased by how detached my boss was from what's actually going on on the project. However, he feels so sure of himself that tried to take on such a critical decision having lack of information. I would not call it smart.

Harsh lesson 7: The truth is out there...

One of the top managers I knew one day came to me and said exactly this "Vladimir, you are a good guy, however I do not see so much energy in what you do any more, so we decided to let you go." In that very moment I figured out why I did not trust that person before, why I hesitated speaking frankly to him. He did not tell me the truth that time. I figured it out later and it was not easy. The story was completely different from how he explained it to me. Why did he so? Because he did not care! He simply went the easiest way. He had no nerve, no courage to say the thing as they are.

Be honest. Say the truth. No matter what it takes of you to say it. Even if it reveals your own managerial mistakes, have the courage to admit them and to learn from them. Even if you are a big-big boss you still have things to learn. If you don't think so, you will never climb higher than you are now.

"A single lie destroys a whole reputation for integrity." - Baltasar Gracian

This is enough for today. I have to get back to work. I will write more on management later, when I have time and inspiration :)