Dimi Tech

Leveling up: Advice for Beginners

20 Jul 2019

The purpose of this article is to help beginner programmers level up their programming skill and, hopefully, other areas of life. I’ll also answer some of the common questions that beginners tend to ask.

If you’re just starting out, read this section very carefully.

Realize YOUR potential!

If you’re reading this you’re most likely a member of the human race. We humans are very limited and flawed creatures by design. Our mental abilities are not that great, and our animalistic instincts and emotions often lead us astray, when left unmanaged.

This is the first realization we must make on our path to knowledge. Learning is difficult for us humans! We have to work really hard in order to understand anything at all!

On the other hand, considering our physical and mental limitations, some people have done amazing things in their life! In terms of knowledge and skill - all of us can achieve a lot more than we think is possible! Myself and YOU included!

And yet, despite our physical and mental limitations, some people have achieved incredible things in their life! In terms of knowledge and skill - all of us can achieve a lot more than we think is possible! Myself and YOU included!

Fight against the animal instinct of complacency!

In order to reach astonishing results - we must open our minds to learning and push our human vessels beyond the limits!

What about talent?

The other day, one person left a comment on one of my YouTube videos, saying how he envies my talent. While I truly appreciate the compliment, I think HE, and MANY OTHERS, might be missing out on important facts.

The truth is: in order to become an expert programmer you don’t need much talent. For example, I would rate my mental abilities as AVERAGE. Some concepts I grasp very quickly and very well, others - not so quickly and not very well. That’s just how my brain works. Everyone has strengths and weaknesses.

The thing that actually matters is motivation and discipline. My motivation stems from my curiosity about computers. I would rate my curiosity as EXTREME. On top of that, I’m tend to be highly disciplined. That’s what allowed me to get really good, really fast.

Keep in mind: this article is about becoming an expert in programming. I can’t really teach you how to reach the heights of Von Neumann, Turing, Knuth, Dijkstra and others - I’m nowhere near that level in knowledge or skill yet. I’m sorry! :)

Gather knowledge!

In terms of knowledge availability - we live in the best time in history so far. Thousands of books, courses, videos are available FOR FREE! You can take online college classes FOR FREE! LLMs are also getting pretty good (as of 2025) and they can significantly boost learning. This is the first time in history that such learning opportunities are accessible anywhere in the world! Take advantage of it!

There are also countless high-quality resources available for purchase. Keep in mind that buying learning materials and consuming them is one of the best investments of time and money that you can make.

Also, consider finding a mentor. A good mentor can give you directions so that you don’t go wandering around. Ideally, find someone who can mentor you face to face. If that is not possible, resort back to online resources.

Ingest huge amounts of learning materials every day. You need to GULP KNOWLEDGE, not sip it through a straw. A 1000+ page book is nothing! Go through dozens of them! GULP KNOWLEDGE!

Don’t restrain from reading books two, three or even more times. I would even recommend it, especially to beginners.

Power through the fundamentals!

Learning something new can feel very painful and aimless at first. Beginner programmers often struggle because they simply don’t understand that it takes time and effort to learn how to program a computer.

The other day, I delved into WebGL (3D graphics programming for the browser) and, once again, I felt like a beginner. While WebGL isn’t overly difficult, there are still a lot of fundamentals to go through and understand before you can build anything meaningful. While I was very comfortable with general programming and math I knew almost nothing about 3D computer graphics.

This is exactly what its like when learning programming initially.

You start by learning a lot of fundamentals and most of the time you’re not even sure why you’re learning them. You can’t see the big picture yet - what can be built with these small building blocks? You have to embrace that discomfort and just POWER THROUGH. Know that the painstaking process of learning the fundamentals is going to pay off dividends very soon.

Keep in mind: the first 100 hours of learning something new are the most uncomfortable. After you’ve spent 100 hours or more learning something, only then you can make a judgement if that vocation is for you or not.

Pay attention to every single detail

When learning, you have to be extremely precise and pedantic in understanding concepts. Make sure you 100% understand everything that you’re learning. This is very hard, but practicing a engineering-like rigor is the thing that will make you an exceptional programmer. Like engineering, computer programming is very strict. The smallest detail matters.

Pay extremely close attention to every character, symbol, naming convention, terminology, command, abbreviation, acronym - EVERYTHING! Be precise when using terminology in your speech and writing.

Beyond being great for learning, this level of precision prepares you to do your best work when it really counts.

TIP: When going through learning materials, type out every example program and run it yourself on your computer! This will greatly reinforce learning.

Be comfortable with not knowing everything

This directly contradicts the previous point, but that’s life - absolute truths are extremely rare.

A crucial emotional muscle that you need to build as a computer programmer is being comfortable with abstractions. We all stand on the shoulders of giants when it comes to almost anything in life, and this is especially true in the world of computers and programming.

You actually can’t know everything when first starting out and that’s fine. Understand as much as you can and just move on.

Apply knowledge

“Knowing is not enough, we must apply. Willing is not enough, we must do.” - Bruce Lee

Apply your newfound knowledge as soon as possible. Even if you know very little, try to build a program with what you’ve learned. If we don’t reinforce learning by applying it, information fades quickly. Struggling to apply concepts helps the brain solidify and remember them more permanently.

Now, a lot of beginners don’t know what projects to build. I would say: pick something you’re interested in besides programming: sports, the stock market, fashion, video games, art, music, history, whatever…

Building a project might feel intimidating and hard from a beginner perspective, so try making small toy programs at first, make lots of them. You might attempt a project and realize it’s too hard at the moment. That is fine as well. Failure is not important, you’re just practicing.

When I was first learning to program, I tried building a graphing calculator in Java - to visualize different mathematical functions (similar to how MatLab does it). Here is how that turned out:

Function Graphs

Needless to say, I failed to create a complete program. But I made SOMETHING and applied what I had previously learned. That is the only thing that matters when learning.

So go ahead and write a program!

Even though these practice projects seem small and insignificant, treat them as VERY IMPORTANT. Try to do your best on each one! This will prepare you to do serious work in the future. When the time comes to create something meaningful, you will be well-prepared to create quality work, because you’ve been doing it all along!

Learn how to find answers on the internet

Today (in 2019) the internet is full of answers to both general and super-specific questions when it comes to programming. As a beginner, you can find everything that you need online. So learn how to use your search engine(s) well!

With the advent of LLMs (as of 2025), there are no excuses left.

Learn how to ask proper questions!

Large programs are not scary.

As a beginner, you will probably be intimidated by large codebases. I remember when I was first starting out- I couldn’t imagine holding even 500 lines of code in my head. That seemed like an awful lot of code! But it’s really not. As you learn and write more and more code, your capacity will grow and you will be able to grasp more and more.

Reading other people’s code felt really intimidating to me as well. Various open-source projects seemed opaque, and I thought they were impossible to understand.

Just know that, with time, you’re going to be able to easily read code that you didn’t write and make sense of it relatively quickly.

Attend meetups

Another great way to push yourself is to attend local meetups and user groups. You can find them on the internet, just search for ‘[your_city] programming or technology meetups’. If you don’t live in a bigger city with an active IT culture, consider traveling to the nearest one.

As a beginner, many talks and presentations might fly over your head. The speakers and attendees will likely be far ahead of you in knowledge and skill. It might feel very uncomfortable - but that’s a great thing!

Being around people who are more experienced helps you grow through osmosis. Most programmers are happy to offer advice, so listen carefully!

Another crucial thing is to be proactive!

Have you ever been to a public meetup where everyone was silent except the speakers? Don’t be like that, participate.

Applaud the speaker, engage in discussions, and stay afterward to talk to the speaker and attendees. Wake up and contribute!

What programming language to choose?

It doesn’t matter that much. Don’t overthink it - you’ll eventually learn multiple languages anyway. Just pick one and learn it extremely well before moving on.

Here are some important factors to consider when choosing a programming language:

A big, active user community matters. It means there are plenty of learning resources, forums, messaging channels, events, and tutorials. It also usually indicates fewer bugs in the language itself, with issues and vulnerabilities being discovered and fixed quickly.

Is there market demand for the language?

If you’re considering programming for money, this is obviously important. Track the highest-paying languages and ecosystems, and keep an eye on emerging trends.

What kind of programs do you want to make?

You might have a project in mind that you want to build at some point. Do some research online (and in person) to find out which language or ecosystem fits your use case best.

How long it takes to become a proficient programmer?

It takes around 2 years of learning, practicing and working on projects to become comfortable with programming. That usually means 2 years of at least 40 hours of active work per week.

If that sounds like a lot, it really isn’t. For comparison, becoming a proficient musician requires way more time and effort.

If you’re passionate about programming, you’ll likely spend far more than 40 hours per week on it anyway - which allows you to grow even faster.

It took me around 2 years to get proficient, but working with mentors can accelerate the process. Great mentorship gives the largest possible boost in understanding a topic such as programming. I don’t really offer mentorship these days, but if you’re crazy passionate and driven, shoot me an email and I will consider it.

Do I have to know math?

Many beginners ask this question. Here’s the answer:

This also depends on the type of programming you do, but guidelines apply to most programmers.

Basic math isn’t really that hard, just go ahead and learn it if you feel the need to.

Moving on…

Applying the principles and practices from this blog post can turn anyone into a proficient programmer.

In Part 2, I write about what it takes to become an expert!