So how do you avoid building things that break? There are a few common pitfalls that projects can suffer. Some of these bad habits can surface during any software development project, but we'll analyze them from a webmaster's perspective.
If your project takes on too broad a scope, you will either end up spending too much time on the project or will have a difficult time clearly defining what your goals are at the start of the project. If you spend too much time on the project, you are likely to leave it half finished because you needed to address issues with your site or neglect your site for too long.
Even though you're developing a tool or program for yourself, it's still critical to clearly define exactly what you want it to do before you begin. Having clearly detailed goals will help you avoid a lot of design mistakes since you will have to think things through in detail. These goals will help you get a good feel for the size of the project you're about to undertake. If it's too big, you will then have the opportunity to break the project up into smaller components while it's still on paper.
You may find out that 75% of the project could form a nice, generic, reusable module. If this is the case, you can alter your approach to the project and end up with a solid, reliable building block that will make future projects easier to develop.
It's happened to all of us. We write a program or script, run it and it produces output we didn't expect. We try to reproduce the problem, but everything seems to run fine. We write the anomaly off as a strange occurrence and move on.
You have to remember that computers are extremely accurate when it comes to executing a program. If you get a result you're not expecting it's not because the computer made a mistake, it's because there's something in your code that's not working the way you think it is. These kinds of errors are critical to hunt down and fix since they will recur unless you're very lucky, and luck is not something you want to factor into your tools.
This is probably the single biggest problem people come up against when building tools. When you sit down to make a quick change to a program or script that you've written, without proper planning, you are exposing yourself to making any or all of the three previous problems we've discussed here. If you try to add features or make fixes in a rush, you likely won't clearly detail out the goals ahead of time which can generate scope problems. You are also less likely to properly test your work which will predispose your work to mysterious errors.