6 tips for beginner programmers

A programmer is a craftsman like job.

First you are a pupil who acquires the knowledge from the master. In today’s world it might be someone who’s created an online course, a workshop instructor or your supervisor during the internship.

Later, when you have all the know-how required to work, you become a craftsman. Based on your experience you are able to develop best practices and deep understanding of the technology you are using.

The last step, which not everyone decides to take, is to become a master. It translates into being able to organize the information in a way that it can be passed it to someone who is just starting.

What makes programming stand out from other fields is the fact that you are unable to comprehend all the IT technologies - it’s such a dynamic and quickly developing area that grasping a half of it is bordering on the impossible.

That’s the reason why the learning process of a programmer is divided into learning technologies and… learning how to learn :)

The sooner we understand how to study new technologies and solutions, the more time we will have to pick up new ones and deepen our existing knowledge.

I have taught many people, including highschoolers, students and graduates. What turned out to be a common denominator were mistakes and wrong assumptions, which were slowing down the progress of my disciples.

In today’s blog post I would like to show you a few simple things you can change or add into your learning process to make it more effective.

1. Do not focus on ‘how to do’. Focus on ‘what to do’

Lots of people start their learning journey with a book or an online course, which shows them the basics of any given programming language. After that they move onto something more advanced and so on, spending the whole time on studying just this one subject. Some people initially check which positions pay best on the job market and then try to learn the corresponding language and technology.

Regardless of the reason for choosing a particular technology, the learning process is actually very similar - going through all the functionalities step by step, re-writing an example, completing an exercise and it’s done - you can move on. Unfortunately, after getting a job or an internship, very quickly it turns out that our knowledge is not that useful. There are no more easy cases to solve, there is no isolated environment and the technologies might be different from the ones we were trying to learn. This means that the time we’ve spent on those technologies is time wasted.

In order to avoid it one should answer one simple question - “What problem will be solved when I master this technology?”

If the answer is NONE, or you’re unable to give a simple one, it is likely that you should just give it up.

The problem we’re trying to solve should be defining the technologies we have to use. New technologies allow us to solve more problems but they also generate new ones which in turn are fixed by other technologies.

To put it metaphorically - do not buy a hammer if you do not know whether you have to nail anything.

2. Approach the learning process as a project

Let’s imagine a situation - a colleague approaches who does not know anything about programming and you are in the middle of coding. He asks - “What are you doing?”

If your answer is limited to implementation details, i.e. “I’m setting up a rest API which shares two websockets” - surely it won’t help him understand anything. Instead, tell him about the problem you’re trying to solve, like “I’m building an application for messaging”. What if you are not solving any problem? Then it’s about time to start :)

Find an issue you would like to solve. Spend some time to analyze it. Try to understand what elements a particular application consists of, draw it. Seek ways to anticipate what difficulties you might come across and look for technologies which address those difficulties.

Maybe there is an article or a guide how to solve a particular problem? Try using it, tackle the issue, and later on check how else you could write the app. Maybe change some components? Or change the language? The knowledge you will acquire this way will give you experience in one of universal skills - problem analysis. And this is the one skill that, in my opinion, most beginner programmers lack.

3. Not everything you do has to be unique

Each one of us was told in school that cheating is wrong. Not in many schools (I’m speaking from my experience) children are taught to tell apart plagiarism from inspiration and mimicry.

The system also works in a way, that the factual result of our learning are grades, not the knowledge itself.

The only experience a beginner programmer has, is the school one. So it is hard to be surprised that he or she will take the same approach in terms of learning how to code.

Of course, the process works, but its effectiveness could be much better. There is one significant latin sentence I would like you to remember. „Quidquid discis, tibi discis”. It means “Whatever you learn, you learn it for yourself”

It allows to understand that it does not matter if the application you have been working on is a success or a failure, whether it’s a simple calculator or a complex system like facebook, the most valuable thing is the knowledge. Your knowledge about creating applications and problem solving.

As it is commonly known, the hardest thing is just to start doing anything. Most likely you are also looking for ideas. Let me share a few tips, how to find those.

First of all, look at all the surrounding hardware and the internet. Lots of people use Facebook, the system clock or weather widgets. Lots of people are also playing games. All of the above are ideas for applications.

Create a communicator, something like Messenger or Whatsapp. Develop an application which will display the current weather, or an application which will show the current time. Maybe combine all those ideas into one - display current weather and time and be able to share it via the messenger. Find popular text games and try to implement one of them. Maybe a simplified version of Bomberman or Iron Slug? You enjoy music? Create your own WinAmp. Play a movie in you own application. Create a website similar to youTube, where you could upload and play movies. And after that, integrate it with the app which displays weather and time.

Take one thing into account - all the ideas above are not new. They all exist, have their users and are hard to compete with. But do we really want to compete? No. The knowledge matters. Quidquid discis, tibi discis.

This topic will be continued in the next blogpost, be on the lookout!

Continue reading on: teonite.com/blog/6-tips-for-beginner-programmers-part-2/