The worst phase in learning to code is something I like to call the "The Not Knowing What You Do Not Know" phase. This is not peculiar to just coding, I think it is in a lot of fields when you are starting out but you run into it a lot as a developer because there are many new things you have to learn in technology so you hit this barrier frequently. There is a time as a developer when you know you do not know much. For example, you know you are unaware of how to fix an Internet Explorer bug or you do not know how to design a database schema. This is not what I am talking about, I am talking about when you do not even know that Internet Explorer even has bugs different from other browsers and your Google search on "How to create a database" is not yielding results you understand.
I remember my first Java assignment in college, we were supposed to create a Graphical User Interface that prompts "What is your name?" and whatever you typed in it was echoed back to you. If I remember correctly this was maybe about 20 lines of code after it was done but I was so confused initially, before then everything I had done was in HTML and CSS. Why do I have to compile code? What are the meanings of these errors? Everything we have been taught so far was on a command line, how do you make a box appear on the screen in Java? I literally had sleepless nights, I felt stranded in the middle of the desert with no hope in sight and no one to even vent to without looking stupid. I did not even know how to ask for help because I did not know what terms like "Prompt", "Graphical User Interface" and "echo" even meant in terms of programming and even if the Professor mentioned them I did not even know their significance at the time. Luckily, a day or two before the deadline I was able to solve this assignment because I ran into an example in our textbook that was VERY similar and I remember the rush of excitement. I understood just a little more.
A friend going through the same issues recommended "Java for Dummies" which came just in time because things got more exciting that Christmas holiday when we were tasked to create a Word Search puzzle solver over the break. I had to setup my Sony Vaio at the time running Windows XP, this was the time I learned that Microsoft-Dos did not have the same capabilities as the Linux command line I have been using in the school labs, I learned about Putty and installing the Java Development Kit. Java for Dummies really lived up to its name because it was really designed and written for Dummies such as myself at the time, it basically takes you through setting up your machine to understanding how to read the Java Documentations to explaining the different attributes of the language. This book was a lifesaver because it explained to me what I did not even know was a thing to how to use that thing. Every page felt like a Jeffery Archer Thriller, every paragraph was dense with information that allowed me understand the eco-system I was in. It later became a tradition for me that every language I picked up I bought a "X for Dummies" book to get me off the ground and gently guide me into the lingo of that eco-system so I know how to ask more intelligent questions after knowing the basics.
Most people will never know everything about a language, a framework or the eco-system they do their business in but the worst phase is that very point where you don't know what direction to go, what to even Google, that deep feeling of truely being lost and not knowing what you are unaware of. That thin line of you wondering if you don't get it because you are stupid or just uneducated on that topic. You are even afraid to ask questions for how stupid you know you will sound. This is the part motivational speakers will tell you there are no stupid questions :). Which reminds me of one of my favorite Scott Adams (The creator of Dilbert Cartoons) Quotes :
“If there are no stupid questions, then what kind of questions do stupid people ask? Do they get smart just in time to ask questions?” - Scott Adams
Yes your questions will be very stupid but what I realized is that it is ok to be stupid sometimes. If you never feel stupid, then that means you are never learning anything new, which means you are not growing. This phase is the point most people drop out. They say coding is not for me. The aim of this post is that realizing this is just a phase and not a defining state will help anyone overcome anything they want to learn. Like the post Uzo wrote a couple weeks ago about nothing being magical… Nothing is. There is a clear logical explanation for everything especially with code and with this realization and patience in learning the basics, the perception of the barrier in coding or learning new systems if you are already a developer becomes much more trivial.