Monday 21 May 2012

Customers are carpenters

This is a follow-up on my previous post Developers are not carpenters. Where I wrote about that building a house is not the same as creating (or building) software.

But if I where to build a house, and hired a carpenter (among many other craftsmen) I would know approximately how long it would take and how much it would cost me. And even though I hired someone to build me the house I would be very interested in the progress and what’s going on and problems etc.

Even if I was to buy a pet (my alternative metaphor) I know how much different pets costs and what they require.

But, most customers don’t really know how much software costs and how long it takes to build it. And, in particular, they are not really interested in the progress when building it.

Why is that? After reading a post by Scott Hanselman, Please Learn to Think about Abstractions, it got me thinking…

The reason I would be so interested in the process of building my house (and I approximately know how much it costs and how long it takes) is because I know quite a bit about building houses! I also know some about pets. But most customers know nothing about building software. The same would probably be true for me if I knew nothing at all about building a house. I would probably accept any price the builder said and probably accept anything he/she says about the time it would take.

I think all customers (that are responsible for the applications in the company) should take a beginners course in software development. If they knew more about programming I believe that better software will be built for them. Just as I will get a more suitable, better, house built for me because I know some about building houses.

And I think most customers is like me – they know how to build a house. But they don’t know how to build software. And that’s why they are sometimes frustrated at us when we ask them a lot of “stupid” questions about building their software.

But do we developers want our customers to know about programming? I hope we do. A couple a months ago we rebuilt our bathroom. We hired some craftsmen to do the job. I was very interested in the progress and followed it in detail and almost every day gave my input and had a discussion with the craftsmen. And when it was finished they talked to me and really emphasized how much they appreciated my participation. They thought everything went very smoothly and was to the better. Both for them and for me.

Wednesday 9 May 2012

Developers are not carpenters

At least not figurally speaking :-)

I spoke to a colleague the other day. He had just had a meeting with a (potentially new) customer. This customer had had some bad experiences from previous suppliers. The customer then said: “If I want to build a house. Don’t you know how much it will cost me and how long it will take to build it?” And my colleague tried to answer: “But what kind of house?” “You know, a standard house”. My colleague tried his best “But that still depends, where do you want to place e.g. the kitchen and how do you want it to look like and design it etc. etc.” But the reply still was kind of “As a carpenter, you should know”.

But the metaphor is far from complete. Creating software is not building a house! Software has a soul, a heart, a life. It needs to live, grow up, mature, be fed, be nursed. And who will do that? Both the customer and the developers! And I think that it has been their main problem all the time; as a customer, the more involved in the development you are the better development it will be.

So next time. Reply with “How much is a pet? And how long will it take to breed it?” And also, you just don’t buy a pet and think it will take care of it self and don’t need any attention (the whole point of having a pet at all). The metaphor is just as good (or bad).

 

…”What kind of pet?” “A standard pet?”