A Developer’s Guide to Effective Problem Solving
I don’t remember exactly what it was like to learn how to swim. However, I did work as a swim instructor in high school and from the looks on the kids’ faces, I knew that learning to swim could be a scary and unfamiliar experience. As developers, we are often thrown into uncharted waters as we work. And this work, like swimming for the first time, can sometimes feel overwhelming and intimidating.
In many cases, developers are able to navigate through unfamiliar waters. We can research and figure out the answers to many of these questions ourselves. Sometimes, however, the questions we have are more complex and we find ourselves in deep water. And so, despite the fact that you’ve Googled, read Stackoverflow to death, and looked up everything you could possibly think of about a topic, there’s no avoiding it — you’re going to have to call in the lifeguard to stop yourself from drowning. You’re going to have to ask your colleagues for help.
Don’t feel bad about asking for help. Even the most experienced and accomplished developers get stuck sometimes. It’s natural, normal, and human. I’ve found that if you take the time to prepare your thoughts, you can be more efficient in the way that you ask questions.
With that in mind, here’s some guidelines to help you ask more effective questions:
Set A Goal
Think about exactly what problem you are trying to solve. Once you know that goal, you will be less likely to veer off track when asking for help.
Before I started setting goals and documenting them, I found myself having to ask my colleagues a bunch of little questions as I was working through a problem, which wasted time and energy. Now, whenever I have a complex problem, I always write it down first so I can clarify exactly what I need to do. Setting a goal can help you assess your problem in a “big picture” way and allow you to clearly envision what you expect to achieve.
Be Clear About Your Problem
Make sure you’ve clearly stated the problem, the expected behavior, and the actual behavior you’re dealing with. If you’re not clear about the problem you’re experiencing, the person you ask is much less likely to be able to understand your problem and be able to effectively help you.
Remember: Being unclear is both frustrating and a time-waster. Show how much you value your colleague’s time and help by being prepared, clear, thoughtful about potential misconceptions, and ready to explain yourself if there is any miscommunication.
Bridge The Gap
If there is any information related to your problem that you can share to help get your colleague up to speed, include it! Providing relevant information will save time, prevent asking unnecessary questions, and help to avoid false assumptions and confusion.
Tip: Some things you can give to your colleague to help bridge the gap include: code samples, specific errors you’re getting, steps to help reproduce your issue, and any background information. Learning to find the balance between providing not enough or too much information is a skill that comes with experience and lots of practice!
I’ve set a clear goal, have great examples, and thought about what my colleague might want to know, I must be ready! Not quite. Now is the time to double-check your request to make sure it really does flow the way you think it does. You may end up making a few last tweaks.
Tip: Take a break before this final review. Fresh eyes will help you catch little errors or omissions that you might have overlooked in the heat of writing.
Say Thank You
Thank your colleague for the time and thought they put into helping you. Everyone likes to be appreciated.
Pay it Forward
Once you’ve got your answer and solution, the best thing you can do is document that information somewhere just in case you run into that issue again. Better yet, share that solution publicly or with other colleagues, because it’s likely someone else will have that same problem eventually. When someone runs into that issue and finds your well-documented solution, he or she will be appreciative that someone took the time to share the information.
This might seem like a lot of work to put into asking a question, but if you are mindful about how you ask questions, you will learn, work, and get help in an even more efficient and collaborative way. Furthermore, the colleague you are asking for help will appreciate how much you value their time. In fact, that person might even go out of his/her way to help you again.
So the next time you’re swimming through the deep waters of development, set a goal, clarify your issue, and revise your thinking when you need to. You’ll be swimming with the current again in no time.