July 8, 2004
Software: Roller Coasters and Tire-Swings
Posted by Larry Karnowski at July 8, 2004 10:13 AMDisclaimer: Okay, the music stuff is pretty slim these days (me being unemployed and all), but the geek stuff is in full effect. For you non-geeks out there... sorry. You can read up on my personal/family stuff over on the Hot Tub, but old Hickory Wind will be a tad bit more technical here on out -- mostly music and computer geekery.
Anyway, I've been thinking a lot about software design and development lately. A lot! I've been trying to figure out why it's so difficult, why most software ends up sucking, and what I can do to change it. Also, since I'm still unemployed, I've been in some interviews where I'm trying to explain to employers what I can do to fix all this.
Basically it boils down to this -- communication. Getting the requirements, understanding the requirements, being able to semi-accurately predict how much resources it will cost -- time, money, technologies, number of developers, support cost, the whole shindig -- this is what I do. And to be honest... I'm much better than most, but I'm still learning. Our industry is still so new... I mean it's only been around for about fifty years. It's an infant industry!
Anyway, I'm sure to elaborate more in the future. I just wanted to set the stage for future geek rants/ponderances, so be ready.
What tipped this off today? Well, Ben sent me this picture again today. I saw it a while ago, but it's still so relevant.
So, Mr. or Ms. Employer, let me assure you what my talent is.... I hear the customer describe a three-rung swing, realize they want a tire-swing, convince them they want a tire-swing, design a tire-swing, work with the programmers to build a tire-swing, ensure the tire-swing is safe and fun, and then help you, Mr. or Ms. Employer, convice the customer to pay for the roller coaster. That's correct. I recommend you hire me at your earliest convenience.
That is a great picture and so true. But one thing they leave out is that even if you are able to see that the user wants a tire swing (even if he doesn't know), convince him that that is what he wants, and get everyone on the team to build it, the tree is usually dead by the time you get it done!
I think that to truely make the industry more mature and make good reliable software, we have to reset customer/user expectations on how quickly things can be done. I just don't see that happening, because as you know time is money!
Posted by: eviljason at July 8, 2004 8:49 PMJason, I think you've hit the nail on the head there. Indeed, we need better ideas of what it takes time and money-wise to implement changes in software, and then those techniques must be taught to all manner of technical and business people. That should be the change you're looking for.
What will this take -- just time? Will we bang our collective head against the wall so long that somehow it will just fill with knowledge of how to write software? That's how it feels now. I'm not keen on waiting. To quote Inigo Montoya -- "I hate wait." And I'm definitely not keen on banging my head against the wall... at least more than a couple of times.
Posted by: larry at July 8, 2004 9:21 PMHoly crap. You just blew my mind man...
Coldn't agree more.
Posted by: Matt at July 12, 2004 9:03 PM