One of my favourite old sayings, goes like this. Good Cheap Quick, pick any two you like.
I've used it often in software development, but it applies to everything in life, from having your house painted to organising a wedding.
You see its a simple concept, that people understand mostly, yet people still want all 3, well the all 3 doesn't really exist, if you think you have found the golden egg of technology that will deliver all 3, I'd love to know. Technologies are a strange and wonderful beast, they are combined to create a certain magic that enables the users to achieve things, automate things, create things. Whatever the application may be there generally is a technology that will facility the application.
I used to think that there would come a technology that would make everything good, cheap and quick. Yet the technology community loves to complicate things. Normally there is method to the madness of complicating things, but not always. Technology will not only set you free, but often lock you up. Its easy to get swept up in a technology trend, I once managed a software team, that was constantly we need, X, now we need Y, we should use this framework, now we should rewrite it using this framework and so it went on. Problem is nothing ever got done, so it was neither Good, Cheap or Quick. It was Bad, Expensive & Slow.
Lets take .NET as a technology example.
Good? Yes
Cheap? No
Quick? Yes
Well, you could debate that Good is No and Cheap is Yes (because its free right) and Quick could be a No also, especially if you don't know what your doing. But for the sake of the example, lets say.
Good: Clean typed language, great syntax and powerful framework
Cheap: Hell no, I need Visual Studio, MS SQL Server & MS Servers, its crazy expensive
Quick: Well it can be if you know what your doing.
But wait, that's the technology, that's really got nothing to do with the old Good Cheap Quick does it? Its the applications that you write using this technology that we want to evaluate? Well if your trying to sell a solution to a company, you can evaluate the tool, the development, the deployment, the maintenance in the good cheap quick.
Most just evaluate the application, but its not really fair to say .NET is free. Tool is free, if you use notepad. Database is free, if you use SQL Express. Deployment is free if you find a free .NET host, Maintenance is free if your .NET host is patching the servers for you and you don't change the app.
However in reality everything costs money. If you want a decent IDE you pay for it, if you want decent developers you pay for them, if you want good hosting / infrastructure you pay for it. And if you want your servers maintained you pay for that too.
So nothing is cheap then? Well in my opinion there is little real cost difference between most technologies. That means everything must be Good and Quick?
- Don't be sucked into the ColdFusion is bad, Java is good, pick the right technology for the job.
- Don't be sucked into the PHP is free, Oracle is expensive argument, pick the right technology for the job.
- Don't be sucked into the Rails is fast and C++ is slow argument, pick the right technology for the job.
If your already lost and don't really understand the point I'm making, then your probably going to think that the Good Cheap Quick phase doesn't work in software development. I'd argue that it does, but technology is a small factor. Because these technologies don't do anything without one of these.
I have a Good Cheap programmer.
I have a Cheap Quick programmer.
I have a Good Quick programmer.
Which one would you hire :)