Making things too easy
Dick Wall's articles on "Integrating Sun Java Studio Creator Into Your Development Process" have got me thinking again on reasons why a lot of software turns out bad.
Perhaps we've made it too easy to write software.
Dick found that the quality of his team's work actually degraded when they switched from using multiple tools (Visual Basic for the UI and Java IDE for the back-end) to a single development tool (JDeveloper for everything).
"The main cost was in our design, we quickly found that in order to meet the tight deadlines, some of the functionality bled across architectural boundaries."
Dick's solution to this problem was to adopt Java Studio Creator for his UI team and JDeveloper for everyone else. In Dick's words:
"I saw that having separate tools for the UI and business logic layers was not a problem, but an advantage. Separate tools make it a lot easier to stay on the rules of good architecture even when facing tight deadlines."
I think that Dick is a genius... or at least a very insightful developer (Truth in advertising compels me to admit that I often think that people who I agree with are brilliant).
As developers we are always faced with tight schedules and impossible deadlines. To succeed (and we all love to succeed) we'll do whatever it takes... sometimes this leads to shortcuts that will really cost us and our business in the long run.
Unfortunately, cutting a corner in software is just way too easy. Consider the effort necessary to change a hundred lines of code in an operating system versus the effort necessary to change a hundred circuits in a CPU. Add to that the disparity in how easy it is to distribute a patch for the OS versus distributing a patched CPU.
I don't want to make it hard to write software, but it should be harder to cut corners. We'd all benefit from that.