Why Pay Someone to Develop Software?

As a software consultant I get asked by non-software developers why do people  have me write custom software when there are easy-to-use tools out there, like Microsoft Access, FileMaker, Visual Basic, and REALbasic?  It’s a tricky question to answer because they aren’t software developers nor or they power users.  They use their computers to write documents, email and surf the web – not exactly the rocket science apps of the world.  So I came up with an analogy that people understand.

This comes from the world of ‘Do It Yourself Home Repair’.  In my younger days (you can read that as not having a lot of money) I would always take a stab at doing all those little projects that come with owning a house.  Faucet needs replacing?  No problem!  I’d go size it up as best as I could, go to the hardware store and pick up what I thought were the parts and tools I needed.

Some of you know where this is going.  On the second trip to the hardware store I’d get the parts I REALLY needed to do the job and on the third trip to the hardware store I’d pick up the things I had no clue I needed to begin with (or possibly to fix what I broke in the process of fixing the original problem).  The final trip to the hardware store is to return all the unused parts.  And all that is assuming I don’t find a leak in the next day or two (or two weeks later).

Did I get the job done?  Sure but it took three trips to the hardware store and an entire day to do it.  I called a plumber to do the same thing recently and they were in and out in 30 minutes and if I’m not happy or something doesn’t work right they come back out (typically for free because I’ve already paid).  My job isn’t too much different than the plumber.

When people come to me for a project I can guess how much work is going to go into it a project before I’m done reading their requirements document (if they have one).  I’ve worked on three accounting applications and the ones that don’t like their current accounting app get excited about that.  I tell them that unless they’re willing to spend a boatload of money and wait a year it won’t happen.  Applications of that complexity are huge, hairy monsters that take time to develop and even then there are yearly (and sometimes monthly) updates (especially if you want payroll taxes calculated automatically).

Sometimes it’s a shame that there are easy-to-use products like FileMaker, MS Access and to a lesser extent Visual Basic and REALbasic.  FileMaker and Access are  powerful tools that let mere mortals do some complex things with a database.  Just like me having a set of minimal tools doesn’t make me a plumber these tools give the user the false impression that they’re a full-fledged database developer when in reality they know how to use some tools.  That’s not to put these folks down because they’ve done some really cool and complex work.

The plumber has a truck full of fittings and miscellaneous parts.  He or she also has a set of specialized tools to aid them in their work and have years of training.  Likewise, software developers have  specialized tools to help us as well and we have years worth of miscellaneous code, controls, libraries that we’ve learned to use.  And perhaps most of all, the software developer knows how to use the tools and parts together.

So sure, you could do your software project yourself and you’ll learn how to do preferences, file I/O, database operations, error handling, licensing and registration, automatic updates, custom controls, and a million other little things.  Software developers already know how to do that.  In the long run, how much is your time (and frustration) worth?

Thoughts?  Did I use the best analogy?  What other benefits are there to having a pro write your software for you?  Do you have any drawbacks?


More info on Cocotron can be found at http://www.cocotron.org/.  Their stated goal is:

The purpose of the project is to provide an easy to use cross-platform solution for Objective-C development.

There’s a blog post at Mac Daddy World at http://macdaddyworld.com/2008/10/27/adventures-in-cocotron/

Now I can say with some certainty that xCode and Objective C isn’t as easy to learn and use as REALbasic but a programming language is a programming language and we can all learn “one more” language and IDE.  Certainly one of the truths about REALbasic is that all of it’s controls are a compromise and not as feature rich as their .NET and Cocoa brethren.  Cocoatron has the potential of changing some minds of people who might be looking at REALbasic and go with Cocoa if controls on both platforms are nearly identical.

It seems that Cocotron isn’t an officially supported Apple product but that might not matter in the long run if enough developers start using it.  Stranger things have happened in other platforms where something becomes a de-facto standard.  It wouldn’t surprise me either that Apple has a skunkworks project that does this as well so it’s possible that at any point Apple could go, “Because of demand, here’s the official Cocoa for Windows frameworks.”

One major issue I see with Cocotron is that you can only do code development on the Mac.  That is certainly one of RB’s strengths where you can run on Windows, Linux or Macintosh OS X and compile and debug for the other platforms (Pro editions only).

One thing that is similar to RB is that it looks like you can debug your Windows app while running in the xCode IDE.  I wonder how fast or slow that is?  I might just fire up xCode this weekend.

Your thoughts?