| Robbie Allen > Essays > #2 |
|
The Ongoing Search for Silver Bullets by Robbie Allen, October 19, 2005 The software industry is both innovative and at the same time short-sighted. There have been significant advances over the last twenty years in terms of making programming languages easier to use. On one end of the spectrum you have the invention of several interpreted languages, such as Perl and Python that allow system administrators to easily script tasks. On the other end you have advances in high-level languages, such as Java and C# that make the job of programming traditional software less error-prone. While we have come a long way with the semantics of languages, developing complex software systems is still a difficult proposition and often characterized by project delays, bugs, failures in the software, and ultimately, disappointed customers. The industry has a propensity to jump on the bandwagon of the latest perceived silver bullet in hopes it will solve the essential difficulties of developing code. The software field is similar to physics in that people believe a unifying theory must exist that will make it clear how best to write code and structure data. The main difference between the two fields is that the software industry thinks it has found its unifying theory every few years whereas physicists have yet to declare one even after working on the problem for over a hundred years. Fred Brooks' paper, "No Silver Bullet: Essence and Accidents of Software Engineering," is one of the classics in software engineering. In it he suggests that there have not been, are not currently, and will never be a "silver bullet" for software that will yield even an order of magnitude improvement in developer productivity. Brooks then goes on to describe what it is about software that makes silver bullets impractical. Brooks' says that many of the major advances in software development have really addressed the accidents of software, not the essence. High level languages, timesharing, and IDEs are all examples of significant improvements in software development, but ones that only attack some of the more implementation-related issues about software. They don't necessarily make software systems any easier to build. Brooks' then goes on to describe many of the silver bullets of his day and suggests that they really aren't silver bullets at all. He successfully predicted that Ada would not change the way software was developed and that object-oriented programming wouldn't result in the productivity increases everyone thought. As a lead software architect at a major IT company, I'm responsible for dozens of applications and I'm constantly introduced to new silver bullets. Our tools are primarily written in Java on a J2EE framework. One of the challenges with working in an object-oriented environment is that you have to deal with relational databases. A recent purported silver bullet that spread quickly in the Java community was object-relational mapping technology. Tools such as Hibernate and Toplink from Oracle were hot topics. They were supposed to ease the pains of dealing with relational databases by providing a layer at the Java-level that would map tables and columns to objects and properties. Two years into our implementation, things didn't work out as everyone initially hoped. Hibernate was flush with problems since the product was so new and immature. There were bugs, scalability issues, and design issues with the underlying technology. It solved some problems, but caused new ones we previously didn't have. A couple of months ago, some developers approached me about a new framework that was going to revolutionize the way programmers used databases. Supposedly, it was going to provide a much better way to structure and access data than the pure object-relational methods. This was classic silver bullet thinking. The hot new technology of just two years ago was going to solve all our problems, but ultimately didn't. So now the developers were ready to move on to the next hot new technology that is suppose to solve all the problems that the last one didn't. I'm still amazed at how fickle the software development community is when it comes to new technologies. Brooks' paper dates back to 1986, so the silver bullet issue is not a new one. In fact, I've seen it throughout my career. On one-hand, I understand that software is still a relatively new field and is evolving quickly. Some of the silver bullets are just evolutions in technology. I don't think these new technologies are necessarily bad. They are going to be the most dysfunctional when they first come out and are still developing. Over time they'll get better and become another tool in the toolbox. The software industry just needs to recognize these advances for what they are and not over-hype them as has been done so often in the past. |