Don't ask that question

I’ve always been afraid of asking stupid questions. Silly, right? So I usually make sure I’ve done thorough research before asking a question when I get stuck. I also hate not understanding how things work. So I just try to figure them out. You should do the same!

Don’t ask how

When I get stuck, I’ll first turn to Google or StackOverflow to seek some guidance. Or try to find something similar in the project and see how it’s done there. Asking “how” is often just laziness. Whatever the problem, someone somewhere has likely also encountered it before and you can base your solution on their work most of the time. You don’t need anyone else to find that for you.

The solution may not work for your use case, so now it’s up to you to figure out why that is. Is something broken, was the implementation flawed or is something else interfering? Or maybe your use case is just very different? Dig into it, try out a couple of things, RTFM and figure out why it’s not working. You’ll grow a much more thorough insight in the problem domain.

20 minute rule

We had this rule of thumb at a previous company. Other people’s time is valuable and they’re working on solving their own problems, you don’t just want to interrupt their own thought process. If you do get stuck, by all means ask someone to help you out, but not before having looked into it for at least 20 minutes.

Rubber ducking

But you may get stuck on that nasty problem for awhile and still get nowhere. You don’t want to disturb your coworkers, but staring at the problem and coming up blank after exhausting every possibility is no good use of your time either.

Try explaining the problem to someone else in great detail, without actually doing so. I start to draft an email to a colleague to explain my problem. I usually outline the problem, and every possible solution I’ve considered and attempted to resolve it, and why it failed. Quite often, this exercise will result in never having to send that email at all. Going over everything again, I’ll discover a detail I overlooked or find some flawed assumption in one of my attempts.

Be specific

If you do ask for help, be as specific as possible. Don’t tell them your problem and expect them to come up with a solution: chances are they’ll spend a lot of time only to come up with a potential solution you’ve already discarded because it didn’t work.

Ask them why this particular thing you’ve tried doing isn’t working out. By now, you’ve at least narrowed down the problem. And it likely has something to do with some component you don’t know much about. Ask them to explain how it works. Show them you’ve done your research! And when they do come up with a solution, don’t just implement it, make sure you understand exactly why their solution works!

Don’t be afraid to ask questions (really, don’t!) but do your research first!

This post is on GitHub. If you spot any errors, please send me a pull request (& credit yourself!)