A friend of mine messaged me the other day. Even though they’ve been in the technology industry for awhile, they just recently landed their first engineering job. So, with this first job, they’re feeling pressure to look like they know what they’re doing and they’re worried that, by asking questions, their coworkers will find them out and they’ll be told they should just leave the tech industry.
Have you ever had this fear? I know I have. The times I’ve had this fear of being kicked out, of being ostracized, haven’t usually been about writing code but about things that around it: job interviews, giving talks, or teaching topics I’m not intimately familiar with. I’m going to be found out; someone will realize I’m just a self-taught faker and refuse to work with me. I’ve also experienced it in places that are outside of technology, as I’m sure you all have too. Oh no, what if my friend finds out I’m not as sushi savvy as they are?! Will they still want to be my friend?
Not knowing something doesn’t make you a bad programmer. It doesn’t mean you shouldn’t be in technology or writing code. And it absolutely doesn’t make you an impostor. But what can you do when you run into a wall, need help, but you’re still scared to ask questions? Here are some of my favorite ways to find solutions on my own.
Not knowing something doesn’t make you a bad programmer. It doesn’t mean you shouldn’t be in technology or writing code. And it absolutely doesn’t make you an impostor.
The CHALTS Checklist
I first saw this acronym in a tweet and it’s presented as a checklist for when you’re feeling emotional. But, honestly, don’t you feel pretty emotional when you just can’t get past that one problem? I know I do. So, before you start telling yourself that you’re stupid, check these six conditions to make sure you’re in a good problem-solving mindset.
- Cold – It’s hard to think when you’re physically uncomfortable. If you’re cold, put on a sweater or socks. If you’re hot, get a fan or go somewhere cooler. I’d say this applies to where you’re working and how you’re sitting or standing, too. Make sure you’re stressing yourself with pain or discomfort as little as possible.
- Hungry – Your brain needs calories to work. Get something to eat or drink, even something small, to give yourself a little boost of energy. I know I’ve had so many problems that I just couldn’t solve until I had a few nuts or some gummy bears (a guilty pleasure), and then the pieces slid together so much easier. Along with this, drink some water. Keeping yourself hydrated will help with reducing physical discomfort and help you keep your mind on the task at hand.
- Angry – Repeatedly running into brick walls will make even the most peaceful of us start to see red eventually. I know, personally, I start to see a problem I can’t solve as an enemy. I get, literally, mad at the function that won’t return the correct output or the sentence that I just can’t seem to get right. If your emotions have started to run away with you, you won’t be able to think your problem through. Take a break, do something fun, and get yourself centered.
- Lonely – This one might be a bit of stretch if you’re not wanting to ask questions of your coworkers and friends, but a bit of camaraderie goes a long way in getting our minds into a better state. I enjoy playing board games and I’ve found that, with a problem I can’t quite get through, that a half hour of Hanabi or Codenames helps to get me back to a place where I feel confident in myself again. Snuggles from pets, children, loved ones, or even stuffed animals can really help, too.
- Tired – Sometimes we’re just too tired to work our way through a problem right now. That’s fine! We’re all human, after all! Take a break, take a nap, or even go to bed for the night. You might even find that your brain worked out a new solution to the problem for you while you dozed or marathoned a Netflix show. With the proper rest, many big problems become minor annoyances.
- Substances – And, sometimes, you’re just not in the right mindset to solve problems. There’s a common saying from the writing world: “Write drunk, edit sober”. Programmers have created their own version: “Code drunk, debug sober”. Honestly, though, you’re better off not writing or coding, especially anything tricky, while under the influence. I also think this goes a bit further, too: even if you’re sober, check to make sure you’re not being influenced by other chemical imbalances. Have you had enough sunlight lately? Do you need a drink of water (again)? Is your blood sugar too low or too high? Check in on your physical and mental states.
Talk about something else
Part of CHALTS is “loneliness” and I suggested you talk to other people, get some social interaction. It really does do a lot for you, even if it’s not in-person. Texting a friend, posting in a forum, or hanging out on social media can all help to boost your self-esteem (well, maybe not social media) and bring you back to feeling like a part of society again.
The urge, though, is usually to talk about the problem you’re having. I think it’s better to talk about something completely different. Instead of asking Jim or Alisha about why your regular expression is only finding every other letter, ask Alisha to tell you about her last rollerderby game. Or find out your grandma’s best brownie recipe. Go ask the CEO about the last book she read. These all get your mind off of your problem and get you focusing on something else. And while you’re focused on a book recommendation, your brain is chipping away at the problem in the background.
Get out of there!
Sometimes you just don’t have the emotional capital required to talk to someone else. In these cases, I do whatever I can to change my surroundings. I go take a walk. I play a video game for a half hour or watch an episode of a favorite TV show or YouTube series. Or, and this goes back to the “angry” part of CHALTS, put on some favorite music and dance; the physical activity, combined with letting your mind rest for a bit, really helps to reset and repair mental batteries.
Changing your environment itself can help a lot, too. Clean up your work area, open or close a window, restart your computer and organize the windows better. Small distractions, like not being able to quickly reach over and jot down a note, can cause big setbacks and frustrations. Yes, you’re “wasting time” cleaning up your desk, but you’re setting your mind up for better focus just five minutes from now.
Once you’re focused and you’ve stamped down as many distractions as possible, give your problem another shot and see if it turns out to be a little more organized, too.
The 15-minute rule
And, lastly, you might have to just give up and ask your question. Before you do, though, try to follow the 15 (I actually prefer 30 but start small) minute rule. Here’s how it breaks down:
- You have a problem. Spend 15 minutes trying to solve it on your own with a few different approaches. If that doesn’t work…
- Spend 15 minutes researching the problem. Check Google, Stack Overflow, a favorite programming community, the documentation, etc. Again, use different approaches to the research, different search terms and search engines.
- Now go back to #1. Hopefully, you’ve found something that helps you move to a new problem or just solves the whole thing outright. If so, awesome! But, if not, there’s one final step.
- Go ask someone for help. Swallow your pride and beat down that fear as best you can and go ask a friendly coworker, fellow student, mentor, etc for help with the problem. Explain what the problem is and where all you’ve looked for help. Talk about the solutions you tried, what you expected from them, and what you got.
This approach works really well for a couple of reasons. If you do finally end up asking for help, you’re showing your mentor that you’re coming to them after exhausting your other avenues of help. They won’t feel like you’re wasting their time (and you shouldn’t either!) and they won’t have you working in circles back over things you’ve already tried.
Secondly, you’ll often find that you find the solutions on your own. Somewhere in the multiple approaches and multiple bits of research, you hit on something that either solves your problem or at least gives you a new problem. Celebrate these victories!
[Tweet “”Flipping on a light bulb for someone is one of the best feelings.” – Kenneth Love”]
You can do it if you want it
In the end, though, whether you find the answers on your own or you ask a friend, you’re still a programmer. It’s not cheating to look at documentation or places like Stack Overflow. I don’t know a single programmer that has much memorized beyond the basics of a language or two and maybe one framework.
When someone tells you they’re there for your questions, believe them. As one of those people, I love getting questions and helping people fill in the gaps in their knowledge. Flipping on a light bulb for someone is one of the best feelings. And, I guarantee you, there’s something you can teach me, too!
Occasionally, when I’m really stuck and not even the docs or existing StackOverflow discussions have helped, I will go to StackOverflow and begin writing a new question. However, 9 times out of 10 I actually solve the problem while I’m writing my question.
This is broadly true, not just for programming. Often, simply going through the process of formulating a question — ie working out how you would describe the problem to your would-be helper in a thorough yet concise manner — jiggles loose whatever it is that you’ve been missing and the solution falls right into your lap.
For me, I think it usually happens when I try to generalize my question, and the process of decomposing my specific real-world problem into a simplified general problem suitable for a StackOverflow question is where I find the errors in my ways. I think this is because generalizing a problem involves asking yourself higher-level questions like “what am I actually trying to do?”, “what is the optimal outcome, and how is my current outcome different from that?”, “what assumptions am I making, and do they actually hold true?”, etc.
So my advice is, when you’ve finally broken down and are about to ask for help, take your time — at least 15 minutes 🙂 — and formulate your question carefully, because you’re likely to find the solution yourself while doing so.
An idea is to print posters with this post an sell on amazon! Thank you!
Hi Kenneth. Great article thanks for posting it 🙂
Imposter syndrome is something I battle with every single day. This is mainly due to personal reasons due to limits of my own brain that are beyond my control. Everybody suffers from imposter syndrome at some point but it is even more prevalent with me.
I have Dyspraxia which is a development coordination disorder. It effects many things including organisation of movement and thought. My short term memory is poor. I can follow a treehouse course and learn new things but I ask you, where is that knowledge tomorrow? Or next week? Or if I’m trying to use it in a project?
Well it’s in there somewhere but I have to think really hard to retrieve or recall that information. I can build a project that Treehouse expertly teaches me or that I teachmyself but I am nowhere near as fast as the average person. I have a learning disability.
If you want to know more about Dyspraxia I wrote something about it on my website.
But that’s why I wanted to write about this today. The biggest takeout from this is to take a break when problems seem too much because I personally am losing count of the amount of times I’ve come back to an “impossible” problem that I that had a simple solution with a fresh perspective and a clear mind. Well, as clear as one can get for a Dyspraxia.
With the right setup, and the right support… imposter syndrome need be nothing more than a trick of the mind,.
Awesome help – really need this in my work environment. Thank You Kenneth!