Troubleshooting Basics

This post is for the very beginning coder just starting to learn how to troubleshoot. To many of you, a lot of these are going to come at no surprise and are even so basic you take it for granted. However, I am writing this post because I needed someone to tell me these seemingly obvious things. So if you were ahead of me in this, ignore this post. But I am going to spell out even the basics here.

First off, I want to talk a little about how important troubleshooting is. I have come to realize that for a career in software development, troubleshooting is one of the best skills you can develop. It is so important to know how to figure out what is going wrong or where the disconnect is in your code and then to be able to fix it effectively. Fixing code is just as much, if not more, problem solving than actually writing code in the first place. And you are going to want to get good at it.

“Everyone knows that debugging is twice as hard as writing a program in the first place. So if you’re as clever as you can be when you write it, how will you ever debug it?”
― Brian W. Kernighan

The first resource I am going to mention to you as you start your troubleshooting is Google. Yes, Google. Of course we have all used Google before. Probably daily. BUT, I didn’t realize I could search ActiveModel::MissingAttributeError (can't write unknown attribute "level") and find applicable sites that would help me solve my problem.

Your Google search results will often take you to the next resource I am going to mention: Stack Overflow. Stack Overflow is going to be a life-saver for you. You will come to appreciate that community and the thousands of coders before you that have had the same error messages that you are now getting. Use that resource. And when you can, give back to that resource.

The third resource that I am going to mention is GitHub. You can do a search on GitHub and find not only repositories that are applicable to what you are coding, but you can find CODE that you can use to model your own code. It’s great. And a little side note, Google does not index any of GitHub, so GitHub resources will not come up in your Google searches.

Finally, one of the most important resources you can have is some sort of mentor. A real person resource. Whether that is a teacher, coworker, co-coder, or built-in mentor for your program, take advantage of that resource. If you don’t feel like you have someone that can fulfill that role for you, find someone. Go to meet-ups or join coding groups. Participate in online forums.

Sometimes it can seem hard to communicate your problems, especially over the internet, but it is part of those valuable skills you need for a successful career in software development. It is important to learn how to identify your issues and then to be able to summarize and communicate to someone else what the problems are in an effective way.

Maybe you already knew all of this, but even if it is just a reminder that though we just want all of our code to work perfectly forever, it isn’t going to. And developing the skills of troubleshooting, where you are able to communicate issues in order to find solutions, is a valuable endeavor.