Our job as developers is to break and fix stuff every day. Sometimes, some of us even do it on production servers. But during emergencies, they just tend to apply a quick fix which may not actually fix anything at all— in fact, it could even make things worse.
On some days, it works! But it's still very dangerous:
These things happen. But when they do, how can we address these issues with confidence and in the best way possible?
In this this article I will show you 7 general steps to fix your website, application, or code when it's broken.
1. Don't panic. Relax.
We are all humans. We make mistakes. When something gets broken, don't contribute to the mess by panicking. Try to settle down first before you do anything with it. Try drinking a glass of water and relax while trying to figure what's going on. Remember, think first before you code!
2. Reproduce the problem. Then reproduce it locally.
Let's suppose the website you're having a problem with is on production and users start complaining about a specific functionality.
Doesn't work is not enough. Ask your users to define what doesn't work means. Is there an error? What are the issue reproduction steps? Is it happening always?
Can you reproduce the bug on the production website? If yes, then try to reproduce it locally (or in your development environment). If you do this, however, you should be prepared to debug it. If you can't reproduce it locally, check out the machine-specific settings/resources. Here are few:
- Database content: Maybe the bug appears only at a specific document that exists on production, but you don't have it locally.
- Environment configuration: Maybe there are some environment variable or setting you need to change.
- Make sure you're in sync with the production server code (including dependencies' versions).
But it's working on my machine!
Well, if you can't reproduce it on production, there is a high chance that it's a browser-specific issue. For example, maybe you used a function that doesn't exist on some old version of Internet Explorer, or maybe you shipped your ES2015 code directly, without transpiling it to ES5. In that case, if it's still unclear what's going on, ask for more information: Where does the issue appear? What operating system and what browser (including their versions) are they using?
If you're using the same OS and browser versions, ask them to clear the browser cache then retry. Also, you should also clear your own browser cache and retry.
Oh, yeah! Typos!
Before starting to reproduce the issue and debugging the actual code, make sure your input data is correct. You can't expect correct output if your input is incorrect (duh?).
Sometimes just by staring a bit at the code/urls/input content, you can easily fix things. As developers, we often waste lot of time debugging stuff which looks correct but turns out to be a typos in the end. And then we are like:
So, pay attention to typos. They are funny to fix, but developers often forget to think that well, maybe it's just a typo.