You’d never dig a drainage ditch with a pitchfork, or plug a drywall hole with chewing gum. Instead, you’d pick an appropriate tool and you’d use it to accomplish the job (a shovel, or some spackle, for example). So why do software engineers often spend so much time fixing problems with the wrong tools at hand?
I think there are a number of contributing factors, and I’ve listed three, as well as ways you can overcome these.
- Lack of knowledge regarding available tools. If you don’t know a tool exists, you’re not likely to employ it. Right? Makes sense. To solve this, developers should regularly read up on tools that are out there. Read the website for the language/application you develop with, and read blogs related to your area of expertise. This may seem like a simple step but surprisingly many developers still don’t do it.
- Inability to implement solutions due to lack of resources. A common theme I hear is that there is a lack of available resources (hardware, software, etc) to implement an optimal solution. Somtimes this cannot be overcome; other times it can. Developers need to learn how to argue for their positions in terms of how it will benefit their listener, and they’ll become successful at selling their solutions.
- Unwillingness to implement a solution. One common theme I hear among developers as well is that they don’t want to implement a particular solution. Why? Sometimes it’s language superiority (my language is better than that one so I don’t want to use it). Other times its an unwillingness to learn about another language. My perspective on this is that each language is a particular tool – that is, a shovel is good for some things but not others, and just as that is true so it is true that PHP is fantastic for some things and MySQL, for example, is better for others. C always runs faster than PHP; coding in C for some projects may make sense. Developers need to recognize that languages are simply tools, not one-size-fits-all solutions to all of life’s problems.
Picking the best tool for the job saves time, money and blisters in real life. The same is true in our virtual world, too.