If there is one thing I’ve learned from movies, it’s that hackers are really cool.  Swordfish, The Matrix, heck, even that little blonde girl in Jurassic Park have shown me how little I actually know about computers.  With just a few keystrokes, these cyberpunks are able tcomputerhackero sneak into a top-secret pentagon database, or reposition a satellite, or write a virus that will bring down the shields of an aggressive alien species bent on destroying the human race.  I must not have signed up for those classes in college, because I have absolutely no idea how to do any of that, and if I attempted to do it I am pretty sure it would take me more then three lines of code to accomplish it.

I’m sure that any of you who are searching for a software developer are looking for somebody who is a bit of a hacker.  After all, they are quick, clever, cool, and if movies can be believed, a lot of them are incredibly good looking.  I doesn’t matter if you want a simple website or a complicated application, the notion of a hacker working at his computer around the clock to deliver your code cheaply and quickly is a irresistible temptation.

But instead of talking about software development, let’s talk about construction for a moment.  Let’s say that you have decided to have a house built.  You have a pretty good idea of what you want your house to be, so you give this description to a general contractor, who says that he can build this house for you in less time and at a lower cost then any of the other generals that you’ve talked to.  That night at midnight he’s at the lot with a couple of 2x4s and a hammer, framing your new home.  He has no blueprints, no detailed design, no idea of the local building codes or zoning laws.  He has no idea what you want aside from your vague description of what you wanted the house to be.  He doesn’t even have a good idea of how he is going to get the job done.  He’s finished framing the house by the time he realizes that he forgot to pour a foundation.  He hangs the dry-wall before he remembers that he needed to wire for electricity.  Now your house is done, and it’s not really want you were looking for.  It doesn’t look at all like you envisioned, there are rooms that you can’t figure out how to get into, most of the corners are not square, when you turn on lights, other lights turn off.  You’ve had some people come in to address the problems, but there are no plans or documentation as to what your contractor did, and since he was flying by the seat of his pants, nothing is easy to fix.

It’s not a pleasant outcome, but you probably weren’t surprised that it turned out this way.  After all, before you start building a house you need a blueprint, materials, a schedule and a plan of how you’re going to get the job done.  Everybody knows this, and nobody would hire a contractor who didn’t do these things, because after all, they aren’t “professional.”

Software engineering is just as difficult as building a house, probably more so.  After all, when a programmer is writing software, they are often times doing something that has never been done before.  I mean, if it had been done before, wouldn’t you just purchase the software and not hire somebody to program it?  Not only that, but software projects can be extremely expensive.  I’ve seen software that has cost as much money to develop as a beachside house in Malibu, with a lot of the money being eaten up by mistakes, mismanagement and miscommunication.  Even something as simple as a static website needs a great deal of design.  It would be pretty frustrating to spend the money having somebody develop your website only to realize upon it’s completion that the developer didn’t understand exactly how you wanted it to look and function.