Published: September 13, 2020
If you are a developer, you will have an "I Don't Know" moment. Which can be an overwhelming experience for any stage of your development career. But you are still required to get things done even if you do not know about it.
I believe that's why some are still stuck in tutorial hell because of it. So here's my experience with dealing my own I Don't Know moment when I am out of my depth in tackling something new or in an unfamiliar environment.
As a developer, we are encouraged to break a problem down. So do it to break it into a list of small parts which you can tackle individually. So you learn to eat an elephant one bite at a time.
For me to make it less overwhelming in writing an article, it becomes easier to break it into 6 parts for my writing process. So learning to break a problem or task down helps alot in different aspect of life. Which opens up ways for you to delegate work for you to focus on a higher value work as well.
Once you have broken the problem down into smaller parts. You would have a list of things you do not know. To knock it down one by one using Google or DuckDuckGo to solve it. This is where the need to use timeboxing comes in.
This was suggested by my ex-boss to timebox the problem. But I believe it's much easier to time box your research on the list of parts for the problem that you don't know to give you a good overview of it on how to tackle it.
I do tend to underestimate the amount of time I spend in figuring out a part. Which leads me to do alot of research and tinkering. Till I can knock it down. But it does gives me a good indicator of my confidence level on knocking that part of the problem down.
Doing that leads you with enough lax time & confidence to solve a problem that is out of your depth. This is the case for me when i tend to underestimate the amount of effort & time to solve a problem.
This a problem I had as a junior developer, it is not asking any questions but to keep it to myself. I will try to spend alot of time figuring out things and keep quiet until I am forced to confront it by my superiors or clients.
I realised the reason I was doing it is that. I kind of hate asking questions. As I do not want to look stupid or feel useless or dumb in not understanding it. Which others can grasp or understand a problem with ease without asking questions.
It's only through prompting by my co-workers, friends and my business partner. I have to learn to put my pride & ego aside, to ask questions to clarify on things I do not understand to help solve my problem that I don't know.
I remember watching a video about Google in answering questions by people who give him absurd or funny questions.
Which the reaction of Google's response was funny or over the top as well. But I believe besides being a developer's best friend. I found that YouTube helps to solve alot of my problem. When I am out of my depth and require additional research to get things done.
Anger and frustration come to you when you are out of your depth and unable to solve a problem. It might come from trying to maintain a legacy code base that requires tons of reverse engineering due to lack of documentation.
Which requires tons of effort and your time to probe the codebase. To gain a better understanding of the convention, design and style. On how the previous developers built the software. So it might be best to have someone to look over it to spot the gap that is not founded by you to help solve a problem.
I think I can't stress this enough that you should not beat yourself up that badly when you had hit a coding rut. Which make you feel you had an imposter syndrome, uselessness and not confident of yourself that you are not a good developer.
I believe that if you had not hit a rut at all. It just means you had been doing things within your comfort zone. Therefore you have to challenge yourself and be around with people who challenge you to raise your standards.
Don't be kicked by events that happen to you. Which leaves you to be unprepared to deal with it. It helps to understand that you have gaps in your understanding that it needs to be filled.
Having enough sleep can help you alot. I found that I had depressing thoughts going through me. When I was hitting a programming rut and become agitated with a lesser focus or procrastination on a task.
It became worst due to my lack of sleep. Which contributed to me having the thoughts of "Why am I here?" and questioning my decisions on pursuing the path I am taking now to fix this problem.
Be open to ask for help or talk to a friend. I found that putting my ego and pride down to ask for help are the best way for me. If you're a freelancer and you don't have friends who know a specific technology. I would suggest having a chat with mentors from CodeMentors. Which is expensive but worth the weight in gold. If you value your time, know your rates by the hour and a good mentor on code mentor.
It might sound counterproductive to do it. I found that by decompressing in just 15 mins break to walk, socialise, exercise or nap.
It helps alot to clear mind as you will continue to think subconsciously. Which you might have a eureka moment when you are doing something as simple as getting coffee/tea.
The first thing that you should always do is to break the problem down into a list. Proceed with sorting them into two categories. Namely into "The things you know" and "The things you do not know".
Once you had the list broken it down and sorted into the two categories. You ask questions related to the things you do not know by clarifying with the person who had delegated the task for you. After you had researched in a fixed amount of time to gain enough information and confidence to solve a problem.
If you encounter a rut while you are unable to get enough information or solve the problem. Do not beat yourself up that badly, instead, take a break or ask for help to get you a new fresh pair of eyes. Which can help to recommend or bounce ideas in how to tackle a problem after hitting a coding rut.
Lastly, are you looking to specialise yourself as a developer? If it's a Yes. I'm giving away my free ebook called "Picking Your Specialisation as a Developer" for anyone interested to command a higher salary or do the work that you like.
This post includes affiliate links, I may receive compensation if you purchase products or services from the different links provided in this article.