Thursday, 27 September 2012

Code Monkeys

Quite too often I see companies developing business software overusing external parties (business consultants, analysts call them what you will) to deal with all aspects of communications with end users.

When you are working in the corporate world, -- the thinking goes -- you must show the clients how great you are in their domain. You need the expertise, the knowledge! Developers are experts in dealing with code, right? Everyone should do what he's best at.

While there is nothing wrong with working with business consultants (it is inevitable), there is often a trend in such environments to delegate all the communications with the users to them. Developers then become just code monkeys (no offense intended, I consider myself being a code monkey) that are only occasionally contacted to explain or validate some difficult technical aspect of the picture.

At best.

After all, developers are supposed to do that coding thing, right? Hey, why they have to even be on this continent to do the job?

Right?
Wrong.

For thousands of reasons. Let's go through each one of them.

Just joking.
Everyone could have his or her own opinion on that, but for me one of the most important things for a developer, designing and coding business software is the direct contact with the users. For at least two reasons:
  1. You must see how your code is doing in real life. And by 'see' I don't mean digging through the logs or reading emails with user feedback. You must be there, with the person who will use the code you've written in his day-to-day work.When you see him struggling, when you see your work through his eyes, you gain a priceless perspective. Priceless. Let's face it: You are not going to spend your days (and sometimes nights) in front of the screens you just developed. But your users will. And how they feel in 5 p.m. every day is largely up to you. They can be happy or they can rush into the nearest pub for a few bourbons just to forget. You can make a person alcoholic. Just because you've messed up the tab order. Seriously.
  2. Your users must see you. They must understand your perspective. Chatting for a few minutes does  much better than a 60+ messages (hate-)mail thread. Even the most stubborn and unreasonable people tend to change or at least soften their opinion when you explain them why something won't work or another thing was done in that way. Because, we, developers have the unique ability to detect flaws and potential problems much quicker than the other people. Your perspective is unique. The users need it. Plus, hopefully, they will also see you are not some sort of a hairy bad-smelling monster eating chips over his laptop. Unless you are  (in which case just ignore this whole post and just keep doing what you're best at, whatever it is).
Business consultants are (as a rule) great experts and (well, sometimes) fine people. But they cannot replace the direct contact between the guy writing the code in Eclipse /or Emacs or VS  or Xcode or Vi -- no need to start IDE war here/ and the one spending his days working with whatever functionality that code produces.