It is hard being a beginner in coding

Miha Cirman
CodeBrainer
Published in
10 min readApr 5, 2018

As I always say: “Coding is like solving puzzles for a living.“ For someone that loves it, it is pure fun. I hope it will be fun for you as well and that you will learn it soon enough to have fun and build new exciting applications, websites or any other coding product you can imagine. These are my thoughts on how to do it and where to start.

We love to Code

I love coding and development. It has been my joy for more than two decades. In the last few years, I dedicated a lot of my energy in passing my knowledge to other people. IT needs a lot more people, and we have to encourage even more people to start coding. We are in a period, where technology will surround us at an even higher rate, and I love it since technology is so exciting. Nonetheless, coding and development are not as easy as it seems since you are just playing with a computer. There is a lot of thinking involved, and it can be stressful at times. But once you get a grip on it, it will bring you new challenges, that will excite you once you solve them. By learning more, you will be able to solve more complex challenges, since you’ll be fluent in addressing the “easy” ones.

I had a lot of students over the years, and we always come to a time where it seems like they are stuck. It is hard to overcome this step because it feels like you are alone and nobody is there to help you. But you are not, most students get stuck after the initial fun ends. I want to share this with you so that you will know that perseverance goes a long way.

Starting is not easy (where to start)

Even starting is not easy. If you search the web for knowledge, you will get so many hits that you will be overwhelmed. Too many sources can be a problem since you will not know where to start. I have been researching this, and my conclusion is to advise beginners to start with mobile development. I have a few reasons for that, but the most important ones are that you will have to learn only one language and that the tools are superior to web development. Don’t get me wrong, I do love backend development, AI, and all the logical development, but in those cases, it is hard to show what you have built. I think that these options below are a good start.

Mobile development

iOS
If you own a Mac and an iPhone, this is not a bad start for Xcode and Swift. Swift is a modern language, that has a slight learning curve, but it is from C like languages family. Once you learn it, it is great to write. It seems very fluent, like your fingers are just flying over the keyboard.

Android
I like Android because it is accessible to anyone and you can install it on most operating systems. Since the Android Studio has grown to version 2, IDE is excellent. With every version we get more help in so many logical ways, that you will not even notice you are using the artificial support. Java and Kotlin are both excellent languages to start learning. Java has more structure to it. Kotlin is more modern in style. Both are good choices.

Since Android is my favourite choice, you will discover that most of the courses on codebrainer.com/topics are still focused on Java and Android.

Web development

JavaScript seems the most logical choice here. But I would opt for going the extra step and using Angular 2+ to start. Angular has an excellent way of sticking with MVC and teaching you a proper way to write code. TypeScript is better than JavaScript by using types, but you are still learning most of the JavaScript with it.

The web is a little bit harder since it is hard to teach anything without using HTML and CSS. So, in fact, you are learning 3 languages.

So why even mention web? The web is all around us, and most of the time we want to learn what we already know. And JavaScript or Angular with TypeScript are both very popular.

Knowledge is the goal (and great motivation)

A lot of times people choose to learn development and coding for the wrong reasons. Since development is in high demand, they usually say it’s an excellent opportunity to earn money. Nothing wrong with that, since we all need food to eat and want to have fun, in the end. Otherwise, life is boring :D But money should NOT be the primary motivator. Think about how many different jobs people have and how many success stories are NOT linked to money but passion.

I think that motivation in the first place should be all about getting new knowledge. With new knowledge and experiences, you will be able to solve problems you can’t even imagine at first. Think about all the solutions you will be able to bring to life. And it is not all about coding. You will also gain a new way of thinking. Abstract thinking and splitting goals into smaller tasks is widespread in coding, and this can help you with other tasks in your life.

Learning by doing (practice makes perfect)

We are strong believers in learning by doing, that’s why we work hard to twist all the knowledge in simple tasks you need to do, and there is always a result in the end. IT is a vast knowledge domain, and it evolves even faster. It is hard to follow new developments, learning all of them is almost impossible. That is why divide and conquer is king, with splitting everything into more manageable tasks. I always advise students to find a small project of their own to work on. But don’t start with the hardest ones. I know you all want to build the next Facebook, Google, Apple,… but you need a more humble start.

Rather than picking the whole app, maybe learn one screen at a time. Learn how to build a registration form, or how to display data in GridView. Try mimicking screens from your favourite apps. A good tip is to alway think about the result, how to show you have changed, calculated something… Don’t worry if it is straightforward. Even for simple if statements you can get a way of showing the result. Check our blog about if statements at codebrainer.com/blogs and you will see it in action. We have demonstrated implementation of if statements in an app. You will know how to build a proper app real soon. I promise it will be in the blink of an eye once you have learned how to do it.

Where to learn (types of content)

There are a lot of ways to learn. And there are a few common types of learning as well. I think that courses are the best kind for beginners with video/text combination. Usually step by step instructions help as well. But this is not the only way.

Books

Books are great because usually authors take a lot of time to prepare them. Since there are a lot of books out there, you can even search by the way the content is explained and choose the one that suits you the best. Since there is a lot of knowledge hidden in the books don’t be scared to leave some topics unread, maybe revisit them later, don’t struggle with the hard bits for too long.

Courses

Video
Video courses are great for seeing how the code is written and how the implementation is done. How and where to put your code, you can see the mouse on the screen, the layout of editors, etc.

Text
The text is best for quick browsing through the content and studying a topic in detail. I suggest looking at the video first and then using the text to execute the newly acquired knowledge.

Tutorials

Finding a step by step tutorial is like finding gold, as it can be really helpful. Someone has been kind enough to give us an explanation by guiding us, like taking us by hand and guiding us there.

Documentation

Is an excellent resource for getting your knowledge to a senior level. Documentation is usually very compact and will give you all the details. What you need to know is that you need quite a lot of beforehand knowledge for the documentation to be useful to you. But once you do, you can find most of the answers there. Sadly there is not a lot of documentation with good examples, and that makes them harder to read.

Learning quickly is too fast, repeating is king

We all want to feel, that we have conquered a topic, but just sliding through it won’t make you understand it. You need to read and consume the content at the pace you are most comfortable with. This means that you can repeat the result, with just a few pointers. But what does this mean in practice? In practice, this means, that you do one pass (read the text or watch the video for the first time). Next is solving it, go and make the task you are supposed to do. And the last step, study what you do not understand yet. Even with this recipe, I think that you will learn it well with next practical assignment. In other words, repeating once more is king, I always encourage our students to change one condition and do the same assignment again. This way thinking about what to change is another way of learning.

Ask a lot of questions

There is a Chinese proverb I like a lot and use it all the time as an example and in practice.

He who asks a question is a fool for five minutes; he who does not ask a question remains a fool forever.
(Chinese Proverb)

What does that mean — don’t be afraid to ask a question even when you meet senior developers, the least you will get is a “No”. But most of the time, there will be an explanation waiting for you. Coding is academic and be prepared to get a patronising look here and there, but please remember not to mind it, just search for an explanation. I’m telling you this because a lot of forums and Q&A pages have temper people answering beginners like they were never beginners themselves. Look for those that will help you, don’t give up.

A great way to learn and gaining new scope is visiting meetups. Sometimes knowledge will be at a higher level, but this will give you the motivation to learn even more. The significant fact is that you will see advanced topics sooner. Remember them and research them later. Don’t worry. You will get there.

Research is one way of getting your questions answered as well. The Internet is a massive collection of knowledge and seems like if it is not on the web, it does not exist.

Solving the toughest problems (Oooo the errors)

From time to time, you will get errors or find problems you are not able to resolve yet. Make the time and research the topic further. If you stumble upon an error, copy its text and search by using the error message.

I must stress that this part does not get any better with experience. Sometimes you will hit a wall, we all do, just at another level of knowledge. This kind of problems, where using most of your knowledge won’t work, and research will not bring a million results, this is the place for creativity.

I have a lot of very senior friend developers, but they too get stuck and it is even harder when you know you are capable of solving it, but it looks unsolvable. That is the time to breathe in and take one step back. What helps a lot is duck programming.

Duck programming is solving a problem by explaining it to another person. But it turns out that it can even be an object, and rubber duck was in some cases used for fun, hence duck programming. So explain it to somebody, it can be your girlfriend, boyfriend, your mother or father. Go through the steps and start explaining. In most cases they will not understand and ask you questions that will not make any sense, but your mind will go into answering mode, and in the end, you will get the answers you were looking for yourself. Duck programming is a good way to solving the toughest ones.

Conclusion

I think that we will all have to know how to code in the future since programming will be a way of communicating with technology. You are doing a lot of it already. Setting timers for washing machine, entering content into your corporate websites, setting channels on TV, tuning up air conditioning… Learning how to code will help you a lot, and it won’t be a waste of time. Remember not to give up when you get stuck, the feeling of solving a problem is just a great feeling to have.

Visit CodeBrainer

Check out our codebrainer.com, it is an excellent source to start, check the courses and blogs and have fun coding with CodeBrainer.

Before you go…

Did you find the article interesting? Please holding down the 👏 to say “thanks” and help others find it!

--

--

Miha Cirman
CodeBrainer

Founder of CODEBЯAINEЯ @thecodebrainer With more than 80 web and mobile app projects behind me, it is time to share that knowledge.