Client centred development

Or why you need to keep it cool when deadlines arrive.

We've all been there when a project starts and everyone merrily go from meeting to meeting, sprint demo to sprint demo, features are coming at a steady pace... All nice, sun's high in the sky and unicorns roam free.

You never know who shot first, but after some time emails have no smilies and morning scrum meetings are just as not as happy as 2 weeks ago. WTF happened? A release approaching happened.

So, the release is coming and the client starts to think you might not make it, feature X starts looking unlikely to happen, vendor Y is late with their delivery so your development time shrinks but of course the deadline doesn't move... everyone's is simply not in the mood any more. Now you can feel the pressure coming from the other side of the Blackberry.

Usually nobody says this out loud, but could you not, oh developer, simply go faster? You sure you need that much time for that? I mean, are you sure?

When this happens is very easy for developers to subconsciously start cutting corners and turning quality down a notch. Initially nothing major, just some little corners here and there.

Well, that's when you have to keep it cool. Chill the fuck out.

You know when UX people talk about user centred design as opposed to user led design? Same here. One thing is what the client wants, another thing what the client needs. Especially long term.

If you start dropping quality you start accumulating technical debt and enter the risky territory of buildings with broken windows. Damn, you can easily arrive to a point where devs feel it's ok to copy and paste code all over the place.

Watch out, though, don't be a cocky bastard that thinks simply knows better than everyone else. You MUST listen and you NEVER take big decisions without telling anyone. Run it by your peers, project manager and of course the client. Making good calls regarding when to go by the book and when it's ok to bend the rules is to me what tells apart junior from senior. Fuck, it's the difference between Morpheus and Neo in Matrix 1:

Do you believe that my being stronger or faster has anything to do with my muscles in this place? You think that's air you are breathing now?


Priceless.

To sum up. When deadlines come:

* Don't give shorter estimates to make the client happy in the short term.
* It's ok to bend the rules sometimes, but if you break the rules you need to let peers and specially client know.
* If you bend or break the rules you have to document it. Depending on severity you can a) leave a FIXME or TODO note in the code b) send an email to your dev mailing list c) raise a bug d) add it to the documentation and e) all of the above.
* If you find yourself constantly having to ditch good development practices either a) you are not estimating well or b) your client is being unreasonable with timings and then that's a client you really don't want to hang out with for much longer.

Be water my friend.

Back to index