Hey guys! Sorry if this isn’t the best place for this but I couldn’t really find anywhere else.
I’ve been working for 6/7 years as a web developer full-time now, and I’m still plagued by one mega frustrating habit. When I’m working on something complex on one page, and it gets completed, I’ll fairly often get notified either by the client or my boss a day or two later while they’re testing the whole site that there’s something broken on another page.
Almost always, it’ll be down to the fix I’ve recently made.
Is there a way to avoid this kind of tunnel vision? I try to keep my code localised as much as possible, avoiding interacting with global scope and, if it’s really for one specific thing, tying it down to that page in particular, but short of testing the entire site every time I make any change… is there anything else I can do?
Thanks!
If you work with a team, I’m gonna say the fault here is just as much on team management as it is you, for not having review and quality testing processes in place. If this is the case, maybe it’s time for you to become the champion for this.
You should have SOME amount of documentation for what requirements different features are supposed to satisfy, even if it’s in the form of automated testing code that exercises these requirements. Automated testing is obviously preferrable, whenever feasible, because they’re the lowest-effort to perform, and the more effort it takes to test, the more likely you’ll be to skip it.
As a more direct answer to the question, use version control to step up your own self-review process. When you’re “done” with an implementation, review the diff of every change that you’ve made, and build yourself dependency trees for the modules you’ve changed. Use this tree to identify regression testing that you need to perform, I.E. tests to run or perform by hand to ensure that existing functionality hasn’t changed.
Doing things right means you’re probably gonna spend half of your time on testing or writing testing code, and you might even feel like a lot of your time spent is redundant or wasted. It’s not. Producing quality software doesn’t mean just being smart enough to write perfect code all the time, it means investing time into BEING redundant on purpose.