I prefer to generate my own organic content on the web, but I found a few blog posts that really got me thinking.
There seem to be two schools of thought when it comes to solving a problem. First, you solve the problem with something quick and dirty that works and move onto the next problem. Second, you spend time building a versatile solution that may even be useful in the future with different problems. For the sake of discussion we will call them micro and macro
I tend to be the kind of guy who will analyze a problem to death. I will try to think about a problem, and then think some more. Once I code the solution I will try to think about how future circumstances will impact the solution whether that be server load or changing requirements. There are certainly some positive things to be said for finding a versatile and well thought out solution to a problem, but unfortunately elegant tends to be a synonym to “not shipped”.
Then there are those who see a problem and will pick up the nearest tool and throw it at the problem and then move on. I admit that I have on occasion done this when the situation warranted it, which when you are a sysadmin is more often than you would like to admit.
Which is the “right way”? When I first started writing this post a few months ago, I did not have the set of experience that I do now and I probably would have drawn some immature conclusions. I have seen fragments of elegant solutions that were either never implemented, or they were hacked on by someone who had no idea of the work of art they were destroying. I have also seen “Duct Tape” solutions that have been in place for years which operate with few to no problems.
The answer is solve the problem the best way you know how. Don’t try to solve future problems. The best way to fix future problems is to keep your solution simple enough so that it can be easily extended or modified if needed.