Back to the blog

RSS
40 subscribers

Recent Posts

Most Popular Posts

  1. Why you should be using a framework
  2. Five easy things that make you a better web developer
  3. Internet Expletive
  4. Where's the Android hype?

About the Blog

Self portrait

I'm a web designer and web application developer in Melbourne, Australia. If you find anything useful, leave me a comment, and if you need web design, development, or accessibility and usability consulting, contact me! Cheers.

Twitter: joshsharp

a bird

Managers vs developers: coding long term solutions

Thursday 13 Mar, 2008 07:51 PM

Sometimes it might seem like what your manager wants you to do, and what you wish you could do, are two different things. You, as the shining pinnacle of developerness that you are, would like to satisfy your client's requirements by developing a generic solution that fits, but can also scale up, down, and sideways depending on the scenario. But this isn't what your manager wants to hear.

By the way, this isn't aimed at my manager, or anyone I know — just an attempt to explain a programmer's thought processes.

Let's take an example. Say your web application needs to allow admins to create a tree stucture of users, assigning them to groups and sub-groups. Each user will be two levels deep, in a subgroup.

So you propose the solution of creating a generic system (data structure, interface, the works) allowing n levels of groups — admins can add as many as they like. This is a nice generic solution which appeals to your programming principles and doesn't need any hard-coding of limits and the like.

But to your manager, this is overkill. Why add in this extra functionality? It will take twice as long, and the extra half isn't even relevant functionality. Just code in the ability to add two levels of groups, and you can move on to the next task. Why would you want to spend time and money doing otherwise?

The answer, dear manager, is that I am planning for all situations. Even though they definitely only need two levels at this stage, you can reuse this code for another project, or give your client the ability to expand and adapt their usage as they grow over time. I am creating a solution which provides a minimum of fuss for the client and myself in the long run. Why isn't this a good thing? Shouldn't we be praised for looking after the customer and minimising long term stress?

Say your client buys out another company and all of a sudden they need a higher-level group, so they can differentiate between companies. Given this situation, they could come back to you and ask, can you give us the ability to add another group? And you sigh, and shake your head, because this means rewriting code to do what it wasn't supposed to do — hacking it apart. To your manager, sure, reasonable request, plus this is something else they can make a profit on. But your developers are stressing about having to modify and recode the existing application from something elegant into something clumsy and ugly. And an unhappy developer is not an efficient developer, especially if this scenario is always repeating.

Add to this the undeniable fact that you are basically charging the client extra for your short-sightedness. As the supplier of solutions, it is your job to help the client understand and formalise their requirements. It is not their fault that your client cannot see all possible usage scenarios they might have for your software. That's your job.

It's like selling a client a static website in this day and age — no CMS, so the client has to come back to you when they need changes made. Sure, the client thought their site would never need to change, but now they're moving suburb and they can't change the address on their contact page. People would consider this underhanded when CMS software is so ubiquitous, so why write these sort of limits into any other solution you provide?

Obviously, I realise there are limits to what you can anticipate, but when you consciously prey on the client's short-sightedness you are doing yourself and your client a disservice.

Comments

Frank Kanu said on 18 Mar 2008:
Interesting posting :)

I had a similar one - a few days ago:
<a href="http://geniusone.com/blog/from-programmer-to-manager/trackback/">From Programmer To Manager</a>

I wonder: Would you like to become a manager and what would you do different?
Daniel P said on 18 Mar 2008:
Hey Josh, hadn't looked at your site for a while, very nice.
Similar conflicts between management and the people doing the job occur in every industry. I reckon even as a freelancer you'll likely develop a split personality and argue with yourself :P
David Gillespie said on 10 Apr 2008:
Josh, totally hear what you're saying. The thing is though, at some point you need to draw a line in the sand, and functionality needs to balance profitability. I've been in the above situation as a manager before and always couched it in black & white terms for the client (ie. You will need us for this, this and this, but not this. OR, we can build THAT for an extra $$). Invariably a lot of people go for the smaller spend, because they look better in the short term and the people that have their job after they leave have to deal with their legacy.

And a wonderful time was had by all =]

Add a comment! Only your message is required (and proving you're human, sorry). No HTML.

 Captcha image - sorry!