A few weeks ago I had a pretty rough time with something I was working on, so I thought I’d take the chance to share some lessons with you that I learned along the way. I’m taking these specifically from my experience as a developer of web-based systems, but I feel like at least some of them apply to a lot of other situations in life as well. YMMV.
- Understand something before trying to change it: If you’re intending on making some changes in your life, whether it be in a web application, or the neighborhood you live in, it’s a good idea to truly understand what it is that you’re changing before you go about changing it. Perhaps in fully understanding it you’ll find that you will no longer want to change it. Perhaps it doesn’t actually need changing. Even if you end up changing it, knowing its current state more fully will help make sure that your changes don’t have unintended consequences or put you in a worse position than you started.
- You can’t solve a problem that you can’t define: If you’re trying to “fix” something, your first step should be accurately defining what it is that you’re trying to fix and how it is currently “broken”. This includes creating a consistent way of reproducing the problem you’re experiencing so that once you think you’ve fixed it, you can confirm it by no longer being able to reproduce the problem. You might also want to look at the flip side of this and define what you should be seeing but are not, and then confirming that your solution results in seeing that.
- “Revert”. Now.: If you are lucky enough to recognize when you’ve made a mistake before it’s caused too much damage, you might have the ability to at the very least stop it from getting worse. Do that. Now. Version control systems allow you to “revert” (or reverse merge). Life isn’t quite as clean, but perhaps a simple apology, right now, would “stop the hemorrhaging” so that you can really fix the problem.
- Ask for help early and often: I think most people generally try to avoid asking for help unless they really need it. I know I do. That’s actually a bad habit to get too deep into. Trying to “go it alone” can get you tangled up in something that a fresh set of eyes/opinion could easily see straight through. Give it a shot on your own, but as soon as you start feeling that spiral of getting lost in a problem, seek out help or other opinions/ideas.
- Relax. Walk away for a while: It’s easy to get caught up thinking that what you’re working on is the end of the world. Maybe if you work on the control circuits for nuclear missiles it is. If you don’t then it’s quite likely not, although it might feel like it. Make sure your current situation isn’t causing completely irreversible damage then walk away; take a nap; go for a walk around the block; take a shower; do something to take your mind off the problem at hand. Not only does this give you a chance to not melt your brain, but it gives your subconscious a chance to roll the problem around and maybe come up with a solution.
I’d prefer to have had the chance to learn these (or had them reinforced) some other way, but I guess things are more memorable when they’re surrounded by drama, right? Back to the saddle.