On Being "Thorough"

I was contacted yesterday by someone who had received one of my proposals last fall. They loved it, but that project ended up falling through before it went anywhere with me. Regardless, I made a positive impression.

Fast forward four months and the gentleman drops me a message with a description of his latest project and asks if I'm interested. I drop him a quick analysis and within a few hours he calls me. Right off the bat, he says, “Well, I remember how thorough you were in that [name withheld] proposal, so I thought I'd give you a call first.”

In all honesty, I didn't believe it was all that thorough. I put together a simple user story describing the interaction with the system. I explicitly stated the known requirements along with a list of unresolved/unaddressed issues. I put together a simple project plan (using dotProject of course!) and included my time/price estimate. I believe that it is better to explicitly state things, be wrong, and have to adjust upfront than have to not find out until the system is being built. Silly me… something that I must have picked up from the PragProg's book The Pragmatic Programmer or from Steve McConnell's Rapid Development.

After hearing this, I started wondering what sort of proposals he has been seeing… I looked around at a few places (Rent-A-Coder, for one, yuck) and I got some of an answer.

Dozens and dozens and dozens of RFP (Request for Proposals) consist of “build me an ebay clone for $200. thanx”. First of all, huh? Do you want ALL of ebay cloned? Including the UI… and the feedback system… and the payment system… and the categorizations.. and the affiliates… etc etc. Next, the price is completely absurd. I can't even begin to guess how much effort/time it took to put ebay where it is. I know that I've been using it since 1999 and it's changed quite a bit since then, so I can only assume many man-months worth of effort. [Bad measure of effort, I know. -KC] Finally, the grammar seems to be that of a 13 year old who just got their hands on a keyboard.

The responses are even funnier. They consist of “We are a team of 10 programmers and we can do it by this Thursday. Look at these other 10 sites that we've built!” None of these sites are remotely like ebay, but this person ends up winning the bid. The project then continues on for months, the code is crap, and the buyer is completely disillusioned.

Ladies and Gentlemen, this is what we're competing against in a global marketplace. Don't get me wrong, there are great and terrible developers everywhere. There are great and terrible customers everywhere. What we – as developers – must do is educate our customers on what is required to develop a vision of the system, the requirements, a solid codebase, and a beneficial relationship for everyone.

With this new angle of competition, we can either complain and lose or we can differentiate ourselves from the competition and make the situation better for everony.