Back in 2012, when I wrote my first C program. I still remember how happy and excited I made a very basic program, which was something like this:
#include <stdio.h>
int main()
{
printf(“Welcome to Borrowed Code”);
}
The professor who was teaching us had been in this field for more than 40 years and I still remember he was reading us pages from the famous book The C Programming Language by Brian Kernighan and Dennis Ritchie.
We learned the most important topics, for example arrays, pointers, flow controls, strings, and all that good stuff. Learning theory was not the point but I learned practically with real world examples so I could remember topics and explain then well in exams. The real problem came when we got projects and I had to code.
Those projects were too much simple when i think about them now, I often laugh about it as well. Yet, at that moment I didn’t got the experience that I have now. I also have failed one class because I couldn’t write one single function that make sense.
This experiment made by heart bitter for programming so I tried to bunk every programming related classes whenever I got the chance. Surprisingly, I was more interested in networking and thought to myself that I might don’t need to do or learn programming anymore.
Today, the reason to write this article for young developer who are feeling hopeless because they do not believe they make can make it. I am here to tell you it gets better.
Getting started
The only way to learn new things is to get out of your comfort zone. Whether you want to remove the training wheels on your bike or be a lead engineer at Google, you must take action to get out of your sweet spot.
In your code editor, what’s the worst thing that could happen? An error in the terminal? An exception is raised? The world won’t stop spinning if you make an error.
Network-related courses were easy for me and I felt comfortable in them. Programming projects were not. I feared them and did not even take the time to understand what was happening. My palms got sweaty and I was afraid to ask questions and look dumb.
In my second year, I began realising something: What were the best and worst possible outcomes? The best is that I finally understand the C language, and the worst is that I annoy my teacher and friends with questions. I took my pride, put it deep in my backpack, and embraced the challenge.
Experience is the name everyone gives to their mistakes.
Oscar Wilde
Do not fear to fail
One thing I would tell my younger self is that learning comes from mistakes. Every programmer has made mistakes. It’s the circle of life. You make mistakes, learn from them, and get back stronger.
Back then, I had a different mentality. I could not take judgment on my failures and instead just stopped trying. I did not take the time to dive headfirst into Stack Overflow forums, read code, and try to understand.
I just did nothing.It was a form of procrastination. I told myself, “If I don’t try, I won’t fail and I’ll stay happy.” However, I can assure you there is no better satisfaction than finding a solution to a bug you had for hours.
Learning from failures is common in our world. Just look at some of the stories of billionaires. You rarely get things on the first try. The key is to get out of your idea that failing is a bad thing and just write some code.
You’ll get better with practice, and by taking notes of the system that made you succeed, reapplying it to other elements will make it easier to find other solutions.
Make your basics rock solid
Almost 300 programming languages exist in the world. Some of them were created for the banking world, others for UI and organising pages, and some for messing around (like Whitespace). As of today, I can say that I’m fluent in almost five languages and a few frameworks.
When I started college, I learned about Java. The concept of OOP was a mystery to me. Once I started programming, I realised I lacked basic programming knowledge. It took some time and a lot of practice, but I soon recognised that all programming languages focus on these concepts:
- Data types and data abstraction.
- Control structure.
- Syntax.
- Looping and iteration.
- Functions.
Once you get these notions, tackling a new language should be a piece of cake!
Conclusion
My fear of programming was keeping me from accomplishing great things. By getting out of my comfort zone, embracing failure, and focusing on the basics, I can now evolve in the tech sphere — and you will too!