Lessons learned from building a house.
Submitted by Ainars Galvans on Wed, 17/09/2008 - 14:37.
context-driven testing | metaphors
Few years ago we decided to build a family house. It all ended up not quite as we planned, but we are happy with what we have. There are a lot of lessons that I am able to map with my software project experience, especially with agile ones. Lesson number one is: not only customer is unable to define what they want; the single right „what a customer wants in terms of functionality” does not exist as it changes even as they try to define it. But let me tell you all the lessons rather than philosophy. Mapping with software testing experience is coming soon....
Lesson Nr 1: I don’t know what I want. I hope they do
Let me tell you whole story. Let’s start at the moment when we do have a land near the lake in a beautiful forest and we dream of a house there. First of all we spent few years (and quite a bit of our money) getting all the paper work done. This gives us enough time for well planned architecture. An architect asks as great questions and give hints we would never think of ourselves such as: where do you want the morning sun to shine, imagine arriving home from a supermarket and think if you don’t need to go though all the house to reach the refrigerator, etc. He showed himself as an expert. He helped us to better understand what we want and what we don’t. We would fail without such a support.
It only later turned out that we missed to ask us one more question: how are you going to get you children to and from the school? No bus comes to the forest where you plan to live.
Lesson Nr 2: context may change, changing what we want. Even if we want
Well, you know, world economic situation is not the best one during last few years. I live in Latvia - building costs have significantly increased in our region because labor salary is equating with Europe. Energy costs climb and we’ve got quite cold withers in Latvia. So when we had architecture almost ready we decided to reduce the size of a house significantly.
Situation got even worse as housing crisis begun. It’s time also for our oldest sun to go to the kindergarten soon. That’s when we figured out we can’t get him to and from the school if we both work me and my wife. So we decided to cancel the project and buy a house in a town. Given the housing crisis the demand is low and offering should be splendid, shouldn’t it?
Lesson Nr 3: Not on everything but we are ready to compromise even vision
It appears quite a task to find a house that more or less accord to our well established vision (remember, we worked for several years to establish it). We soon figured out that we will need to invest in changing a house anyway. However all the offered houses appeared to be either too small, too ugly, poorly planned, unfinished, having not enough land around, too expensive heating, etc.
At the end we found something that we were able to compromise to. We saw what we will need to change immediately and what could be improved later. The list was impressive, but at least we saw how to convert this house into something that could be happy about. If I compare it to our own project there are a few things in common, but the gap is huge. And still we believe we could be happy about it.
Lesson Nr 4: you can’t prioritize or value base features
The first thing we did – enlarged the washroom converting it into bathroom. You may say this added value as our guests and my mother-in-low don’t need to go to second floor to get a shower. And as my mother-in-low looks after our children it adds value indeed. Actually, it was our prerequisite to have bathroom on both floors. We declined one of the houses because it was impossible to do so. So first floor bathroom doesn’t actually change a value, it is a prerequisite. There was a huge list of prerequisites and only few nice to have (would improve value), such as fireplace.
Lesson Nr 5: adding features doesn’t necessarily add value, but satisfaction
So fireplace adds value, right? Well – it is not a value actually it is satisfaction that it adds. We are now investing more money to improve interior and plan to put automated gates and much more next year. I don’t have problems to open and close gate manually. Automation will not add any value to my life, but it will improve my satisfaction. And this will aid me to achieve goal of being happy about my house.
On the other hand – if being happy is my goal then adding satisfaction is equal to adding a value. So we are back to context once again.
Lesson Nr 6: you learn about quality as you start to use it for real
I discovered issues with sound isolation soon enough, but it was a few months since I lived in the house when I discover few minor issues with drainage and electricity (insufficient power in few places). I still wait for winter cold and spring floods to discover few more minor issues. As the house is inhabited for more than 20 years I don’t expect major issues however.
We’ve broken more things and systems because instructions are lost and we don’t use them properly. This is just one more thing where we waste our time and money – which we would be able to invest in adding value otherwise. Which brings me to the last lesson – despite all the theory and practice in risk management and planning that I successfully apply in planning everyday business, I’m still:
Lesson Nr 7: risk mitigation and issue solving costs quite a lot, but don’t add value directly
Endnote. To be continued ....
As I wrote in the beginning, this is only a context, a back-up for the testing stories I’m going to tell you soon. What those lesson how to do with testing? As a tester I want to make sure each new feature added to software is well tested and works as expected. Manual testing requirements or unit tests in TDD project covering each user story or anything. But that’s only a part of tester’s responsibility in a project. Well recognized responsibility is to test for unexpected: test unusual user actions, the corner cases (ask what-if questions and test for them). But there is one more responsibility that seems to be forgotten with agile replacing waterfall: to think about the big picture (how all the features together address the business needs). Remember that software is supposed to solve an issue or address a business goal, let’s say to fire 20% of workers as others will become 20% as effective thanks to our software. To achieve the goal it is not enough to make sure each feature works as expected by requirements or by user story. It is not enough to make sure drainage system does not leak and does not make house stinking. The question that I have is – will it make me happy? Probably simple carpet on a cool floor behind shower is more valuable to me than fixing
Lesson Nr 1: I don’t know what I want. I hope they do
Let me tell you whole story. Let’s start at the moment when we do have a land near the lake in a beautiful forest and we dream of a house there. First of all we spent few years (and quite a bit of our money) getting all the paper work done. This gives us enough time for well planned architecture. An architect asks as great questions and give hints we would never think of ourselves such as: where do you want the morning sun to shine, imagine arriving home from a supermarket and think if you don’t need to go though all the house to reach the refrigerator, etc. He showed himself as an expert. He helped us to better understand what we want and what we don’t. We would fail without such a support.
It only later turned out that we missed to ask us one more question: how are you going to get you children to and from the school? No bus comes to the forest where you plan to live.
Lesson Nr 2: context may change, changing what we want. Even if we want
Well, you know, world economic situation is not the best one during last few years. I live in Latvia - building costs have significantly increased in our region because labor salary is equating with Europe. Energy costs climb and we’ve got quite cold withers in Latvia. So when we had architecture almost ready we decided to reduce the size of a house significantly.
Situation got even worse as housing crisis begun. It’s time also for our oldest sun to go to the kindergarten soon. That’s when we figured out we can’t get him to and from the school if we both work me and my wife. So we decided to cancel the project and buy a house in a town. Given the housing crisis the demand is low and offering should be splendid, shouldn’t it?
Lesson Nr 3: Not on everything but we are ready to compromise even vision
It appears quite a task to find a house that more or less accord to our well established vision (remember, we worked for several years to establish it). We soon figured out that we will need to invest in changing a house anyway. However all the offered houses appeared to be either too small, too ugly, poorly planned, unfinished, having not enough land around, too expensive heating, etc.
At the end we found something that we were able to compromise to. We saw what we will need to change immediately and what could be improved later. The list was impressive, but at least we saw how to convert this house into something that could be happy about. If I compare it to our own project there are a few things in common, but the gap is huge. And still we believe we could be happy about it.
Lesson Nr 4: you can’t prioritize or value base features
The first thing we did – enlarged the washroom converting it into bathroom. You may say this added value as our guests and my mother-in-low don’t need to go to second floor to get a shower. And as my mother-in-low looks after our children it adds value indeed. Actually, it was our prerequisite to have bathroom on both floors. We declined one of the houses because it was impossible to do so. So first floor bathroom doesn’t actually change a value, it is a prerequisite. There was a huge list of prerequisites and only few nice to have (would improve value), such as fireplace.
Lesson Nr 5: adding features doesn’t necessarily add value, but satisfaction
So fireplace adds value, right? Well – it is not a value actually it is satisfaction that it adds. We are now investing more money to improve interior and plan to put automated gates and much more next year. I don’t have problems to open and close gate manually. Automation will not add any value to my life, but it will improve my satisfaction. And this will aid me to achieve goal of being happy about my house.
On the other hand – if being happy is my goal then adding satisfaction is equal to adding a value. So we are back to context once again.
Lesson Nr 6: you learn about quality as you start to use it for real
I discovered issues with sound isolation soon enough, but it was a few months since I lived in the house when I discover few minor issues with drainage and electricity (insufficient power in few places). I still wait for winter cold and spring floods to discover few more minor issues. As the house is inhabited for more than 20 years I don’t expect major issues however.
We’ve broken more things and systems because instructions are lost and we don’t use them properly. This is just one more thing where we waste our time and money – which we would be able to invest in adding value otherwise. Which brings me to the last lesson – despite all the theory and practice in risk management and planning that I successfully apply in planning everyday business, I’m still:
Lesson Nr 7: risk mitigation and issue solving costs quite a lot, but don’t add value directly
Endnote. To be continued ....
As I wrote in the beginning, this is only a context, a back-up for the testing stories I’m going to tell you soon. What those lesson how to do with testing? As a tester I want to make sure each new feature added to software is well tested and works as expected. Manual testing requirements or unit tests in TDD project covering each user story or anything. But that’s only a part of tester’s responsibility in a project. Well recognized responsibility is to test for unexpected: test unusual user actions, the corner cases (ask what-if questions and test for them). But there is one more responsibility that seems to be forgotten with agile replacing waterfall: to think about the big picture (how all the features together address the business needs). Remember that software is supposed to solve an issue or address a business goal, let’s say to fire 20% of workers as others will become 20% as effective thanks to our software. To achieve the goal it is not enough to make sure each feature works as expected by requirements or by user story. It is not enough to make sure drainage system does not leak and does not make house stinking. The question that I have is – will it make me happy? Probably simple carpet on a cool floor behind shower is more valuable to me than fixing
