Jul 14, 2009

Our Job As Software Developers…

I’m lucky enough to get to do some public speaking about agile from time to time and a large part of my job involves helping teams improve their agility and one of the things I’ll talk about when introducing people to agile concepts is the role of the software developer.  If you’ve heard me blather on about such things in the past then this might just be a refresher for you. If you’re just following along on the blog then this might be something for you to think about, especially in what it means for how you approach each day.

So, here’s my view on what the job for a software developer is all about…

As software developers our job is not to write software, our job is to provide great customer service.

Customer Service?! What the…?!

“Surely not.  Our job is to write software!” you cry.  No, actually, it’s not.  Or, maybe I should say, that’s only a part of what our job is.

A number of years ago now, I read a great book on sales and marketing (its name eludes for now) and in it the author took the position that every single business in this world is a service business.  For some industries, that’s obvious, but what about manufacturing for example?  Well, the author stated that the reason these companies are able to sell their products at all is because the product is the result of a service they are providing.

What service? The satisfaction of their customers needs and desires through a physical item.  I stopped and though about this for a while and realised that this actually makes sense. It explains why me-too businesses can start in competitive industries and thrive and why other business that have good product ideas fail (they’re not meeting a need).  It also changed the way I viewed a lot of what we do as developers.  Software development is in essence the provision of the service to creating software that meets our customers needs.  If a customer doesn’t have a need or desire that they want satisfied through software then there is nothing for us to write.  No software –> no sale –> no money –> no job.  Similarly if someone else can meet the same need but do it with better customer service then they’ll get the sales and we won’t.  Once again: No sales –> no money –> no job.

Now sometimes this customer service mentality can be a little grating.  What if the customer asks for and insists on something we think is stupid and short sighted.  Do we go against them because we know better? I don’t think so. Why? Because we are in no position to tell the customer what they’re needs and wants are. We don’t have their perspective, we don’t have their context, we aren’t them.  In fact, if you put yourself in their position you might come up with the same demands.

The trick for us is in helping our customers decide if they are asking for is really what they want or need.  This is where the 5-whys approach to questioning or proposing alternate ideas comes into play.  However, whilst we can propose your counter-arguments and reasoning as to why “stupid idea A” is a stupid idea, if our customer still disagrees and want that stupid thing provided, then that’s their prerogative.  After all, it’s their dime they’re spending, and they can choose to spend it as they wish.

Customer service will also say that if it’s all going to fall apart then be ready to support your customer in their time of need because it’s very likely that they will be both embarrassed that they ignored our advice and dug themselves a deep hole and at the same time they will be desperate to remedy the situation.  “I told you so” will only serve to impair your relationship, instead of solving the problem.  It might make you feel better, but it won’t make any real difference to what is going on. 

Awkward truth: The customer is always right (even when they’re wrong)

If you don’t like this, well that’s a shame, but you can’t do much about it.  You could consider self-funded retirement or life in a monastery as an option since that’s probably the only chance you have of a life without customers.  Failing that, your stuck with dealing with customers.

Yes, customer service can be a difficult thing at times and at times you may want to chew your arm off in frustration but on the flip side it can also be very rewarding.  There’s a special feeling you get when you see your customers improve because of a service you’ve provided, smiling because of something you’ve done for them or, even better, telling others about you because you’ve given them such great service.

So, stop and think.  If your job is a service job, then what does that change about the way you approach your work?

As a side note, you’ll note I used the word customer throughout this and not “client”. To me “client” infers that the development team are the dominant party in the relationship, whereas “customer” infers the idea that we serve them instead, and I think this can help us keep our attitude right.

1 comment:

  1. Ahh a gem of a post. I have to agree as much as the primevil software engineer in me is straining to break out and start jumping up and down. It is very true to the reality of what our jobs are.

    ReplyDelete