Learning a programming accent is addition your skills, as a developer. It’s a new tool in your toolbox, too. With it, you can create commodity out of thin air. If you’re lucky, others will find your conception useful, and you’ll feel the warmth of .

Beyond that, I love programming by itself: it’s a game to me. Logic is really fun to mess with.

Learning is fun too: the action of discovery, the joy to assuredly accept a hard concept. It brings more colors to the world.

In this article, I will call the action I used to learn the programming languages I know. I’ll answer these questions:

  • How can you properly learn a new programming language?
  • What are the best assets to use?
  • What mindset should you have?
  • What tools should you use?
  • What are the other allowances of this acquirements methodology?

It doesn’t matter if you’re a complete abecedarian or if you already know a programming language. The action charcoal almost the same.

Come with me, dear reader! Let’s go to Programming Land where every variable, functions, and classes live in peace and harmony.

An ambiance where you can focus

Let’s be honest: acquirements a new programming accent takes time and effort. Nothing is impossible, but don’t expect programming to be .

In general, learning something new means you need to focus on the  of your learning. If you try to push yourself too much, you won’t learn anything. If you watch some funny YouTube videos while learning, you won’t learn much either.

Here’s what you’ll need:

  • A quiet place where you can focus only on what you want to learn.
  • A place which is  to you. The best ambiance would be about where you won’t be tempted to do commodity else.
  • To choose your code editor / IDE quickly. We want to learn a programming language, not award the absolute tool. Don’t spend hours on it: just choose the most accepted option. You can always change later, depending on your needs. I actually advise an editor with some sort of auto completion, it will help you a lot.

I have a whole commodity which is more focused on learning in general, if you’re interested.

The first step: Acquirements the basics of your programming language

The basics include:

  1. Code syntax
  2. The fundamentals of programming

The first is unique per programming language, the second can be activated to many of them.

Don’t be afraid by the fundamentals if you’re a beginner. You’ll get them along the way.

Finding the best resources

To learn the syntax of a new language, the best method is to take a book and copy the code given as examples. It sounds dumb but it’s the most able to me.

Reading a book is not enough. If you want to learn commodity new, you need to learn . Annual is too passive.

If your book is good enough, it’ll explain the basics of the language , some general  with code snippets as examples. Copy these examples in your code editor and assassinate them. Play with them.

Don’t try to accept aggregate in detail while annual the book, abnormally if you’re a beginner. You can go back to it later. For now, the goal is to have a good idea about how the accent works.

There are a lot of books out there which provide code with explanation. I alone really like the whole learn code the hard way collection. Don’t be afraid by “hard” in the title: it indicates that it’ll teach you appropriately what you need to know, after shortcuts. This is what we want.

For the folks who already have some experience, these books can be a bit boring . However, it can still teach you some fundamentals you didn’t know beforehand, or brace some abandoned memories.

You might ask yourself: why a book? Why not follow some accessories on internet? Or watch some Youtube video? The affection of the agreeable on the internet can be very random. You don’t want to learn bad habits; it’s easy to learn inaccurate concepts, accretion your confusion. Learning is easier than unlearning.

A book, on the other hand, can be brash by the association of the accent you want to learn. You need to be sure you can trust its teaching: you should ask around in forums and discussion groups what would be the best book. Positive book reviews on a website like goodreads can be a good indicator as well.

You want to avoid misconceptions, “knowing” commodity which is only partially true or actually wrong.

Now, I have a little quiz for you. What’s the best way to learn from these very cold propositions?

  1. Focus on your book on a approved basis, from 30 annual to 2 hours best per session.
  2. Cram 8 hours of study every two months, your belly full of RedBull, at 2:00am, when your dabbling can’t let you sleep anymore.

I have no affiliation with RedBull and human absorption is very short. Acquirements two hours beeline is already challenging. That’s why the first path will make you wise, rich, and glorious. You’ll learn abundantly faster that way.

Take your time, be patient, and you’ll get there. Don’t forget: the most difficult part is the beginning. If you have some tendencies to procrastinate, like everybody, try to open your book only for 10 minutes. Close it if after these 10 annual you still don’t want to learn.

You might be afraid how far this simple address can lead you.

Assessing your knowledge

Questions are a good way to learn

Come back to the code you wrote from time to time, after the book this time. Ask yourself:

  • What did I abstruse the last time?
  • What was the purpose of the examples and what the book tried to teach you?
  • What does mean this specific syntax?
  • What the purpose of this function?
  • What is the output of this example?

This is meant for you to  the fundamentals and the syntax of your new programming language. Trying to bethink what you abstruse the last time will reinforce your memory.

If you’re really motivated, you can even try to find other solutions to get the same output of your code snippets, for example.

When you write your code, don’t use too many comments! Try to accept the code as it is. It will, most of the time, give you enough advice for you to find what was the purpose of it. On top, when you’ll be a rich and famous developer alive for the NASA, your colleagues won’t animadversion every single line of code they will write (I hope). They will expect you to accept the code.

If you have no idea what you’ve written, that’s altogether fine. Even if Yoda himself said the contrary, trying is the most important.

After your tries to bethink what you abstruse the antecedent acquirements sessions, open your book and let these “aha! I bethink now!” thoughts of achievement bloom in your admirable soul.

You can test yourself every week or every two days, it doesn’t matter. Simply have a study plan:

  1. Read the book
  2. Copy the code
  3. Test yourself, after the book, from time to time
  4. Play with the code – modify it, add your own ideas to accept how it  works
  5. GOTO 1

You need to find your own pace: not too slow or your action will suffer, not too fast or you’ll feel exhausted. Find a antithesis to keep your absorption in your new programming language. That’s the most important!

The second step: Alpha a side project

When you’re half-way in your book, you can begin the second step of this plan to rule the universe: alpha a side project.

Actually, you can begin it whenever you’re able to use the syntax of your new programming accent after too many difficulties. Just try and adjust: if it’s too hard to build something, you might not be ready yet.

If you’re absolutely bored with your book, if only aperture it feels like a torture, if you have the admitting every page of it, it might be a subtle indicator that you need commodity a bit more accurate and creative. Hence the side project!

What the annual of a side project, you might ask? Acquirements the syntax and the fundamentals of a programming accent is essential, but actually not enough. Programming is about botheration solving, and you need to be able to solve all kinds of botheration with your new language.

What side projects can you build?

I already wrote a series of accessories about side projects:

  • The first article is about the mindset to have to carry your side activity through its end. Believe it or not, the mindset is the most important!
  • The second article focus on the tools I’m using to follow this mindset.

If you need to bethink only one thing from these articles: build something ! You don’t want to build the best appliance of the year and become rich, famous and unhappy. You want to learn a new language.

Your side activity could be annihilation from a todo list app, a pomodoro app or a calculator. Even better: if you have some personal ideas which could be a fun small project, please proceed. It’s even better than acrimonious random ideas on The Internet.

If you want to build commodity bigger afterward, feel free to do so. Go step by step, begin by commodity little, and build bigger and higher, if that’s what you want.

The best way to work on a side project

You need to know  what functionalities your side activity will have. I will never say it enough: as few as possible, for the beginning, is the best. You can still add more on top later.

Then, follow these steps:

  1. Open your code editor.
  2. Choose the functionality you want to code.
  3. Code.
  4. Google is your friend when you’re stuck.
  5. Hooray! Your functionality works.
  6. Go back to 2.

This is called an accepted process. Even if you’re wrong at the beginning, you’ll fix your mistakes and come closer to your goals after each iteration. Consider the first abundance as an amiss draft.

Analysis paralysis can be your better enemy as a developer: don’t over think. Code something. Don’t try to find the accomplishment in these admirable lines of code. Accomplishment don’t exist, and it’s ugly anyway.

Don’t spend an awful amount of time analytic the best tools either. I would advance not using any framework for your first side project. If you need some libraries, take the first one brash by the association (or first ranked by Google) and go for it. Even better: code it yourself if it’s not too long (or too boring).

If you feel comfortable, you should try to write some automatic tests as well. It’s important to know how the accent handle testing. Consider it as a bonus.

The third step: Show the world your new talents

learning programming accent and talents

Share your code and grow your credibility

If you’re a abecedarian in the absurd development world full of unicorns, rainbows and mortal tar pits, you need to get a bit accustomed with git. It’s basically a system which allow you to adaptation and push all your code on an alien server.

The how and the why of git are beyond the scope of this article. If you want me to speak about that, you can acquaintance me. I would love to hear from you!

Install git on your system and create an annual on Github. Then, push your project.

When it’s done, congratulation! You can now show your code to the whole world. This is abnormally useful if you’re planning to find your first job as a developer. You can show your absurd side activity to anybody who wants to see your new skills.

It’s even better than architecture a portfolio filled with emptiness!

That’s why a side activity is important: it will teach you your new shiny programming language and it will advance your believability as a developer. More code you will have on Github, more affairs you will have to skip the boring and usual annual coding tests. Yes, I hate them.

How nice is that?

Get acknowledgment from your peers

All of that is very nice but there’s commodity important to keep in mind: alive alone on a side activity can teach you a lot of crap.

Even if you follow a austere and accepted book, you can still misunderstand some concepts. You can as well be victim of , when you think you know something, but you’re not able to use it, or even to explain it. Not really useful in my opinion.

Writing the code from your book and architecture a side activity can anticipate you to fill your brain with nonsense, but there is still some risks.

That’s why I would advise you to show your code to a best of people. Go to Reddit, forums, Facebook groups, and ask for feedback. Negative ones are the best: they are never easy to handle, but they will teach you a lot, and that’s what we want.

If you know some accomplished developers, ask them some acknowledgment too. Heck, you can ask me some feedback!

Having a mentor you know well and who can accommodate alone advice would be the best of the best.

Having acknowledgment is great when it’s constructive. Don’t take into annual pure criticism after any arguments or explanations. What you want is able feedback. They explain your mistakes and give you solutions to fix them.

Does your method really work to learn a programming language?

This part is not only an ego-centered articulate about me and how great I am (the about page of this blog is there for that), but more about giving you accurate examples.

How did I learn programming 20 years ago

When I was a young man, I wanted to code video games. I loved arena them, and I had already these weird desires to create stuff on a screen.

My parents, tired to listen to me speaking about it, bought me a book to learn C, for my birthday. I spent months on this book. I was already applying the three steps address I just explained you, instinctively. I didn’t have Internet at that point, so I didn’t have the choice, and I’m very happy about that.

I read aggregate and copied most of the code while reading. The book taught me as well all the fundamentals of programming I needed, at a low level. It’s goddamn C.

Halfway through the book, I began to code my first side project: a textual RPG where you could choose your race and your weapons to go on a text-based adventure, in the Windows terminal. Then, I went into a wall: be damned, you pointers!

How did I learn Goland in 2018

Let’s go back to a fresher past. After 8 years as a PHP developer, I absitively to learn a new programming accent to extend my skills. I choose Golang for many reasons. Again, if you want to know them, “comment below” and I will do as you say, master!

  1. First Step: One of my aide brash me to read Go in Practice while copying all the code given as example. It’s what he did to learn the language.
  2. Second Step: Halfway trough the book, I began my first side activity in Golang: testomatic.
  3. Third Step: I shared my code on the Golang google group and on the Golang subreddit. The sweet Golang association gave me admired feedback, allowance me accept the accepted idioms.

The result? I found a job in may 2018 as a full time Golang developer. My side project testomatic helped me a lot at the beginning, as a advertence to look into, when I wasn’t sure about the syntax. Very useful!

  1. Bonus step: after alpha my new job, I read Go in Action to accept better the fundamentals and mechanics of the language.

Here’s some cool graphs on the time spent to learn Golang:

learning a new programming accent first step: able Go

  • On the y-axis are the Pomodoro I did each week.
  • One Pomodoro is 25 annual of focused learning.

As you can see, I began to read the book in January 2018, slowly but consistently: this is the key to learn annihilation you want. The time I spent on it in March and April increased: this was the notice period from my position of PHP developer to Golang developer.

I wanted to be ready for my new job, and I was adequate myself.

learning a new programming accent second step: testomatic

  • The red line represent the amount of work I accepted to do each week.
  • The blue line is the amount of work I was really doing.

Again, you can see the same pattern: I began slowly but consistently. Then, my action went through the roof in March and April.

This is a good archetype to accentuate an advantageous idea: you don’t have to beat yourself by planning 29 hours of acquirements a week to make through your side project. Only 25 annual a day can bring you abrupt results, when it’s done .

You might notice that I never accomplished the book. When I began to work as a full time Golang developer, I judged that I didn’t really need to. It’s altogether fine; don’t put burden on yourself to finish every single book, if you don’t feel like it.

You can always come back to amateurish books later.

How did I learn Clojure in 2020

Ah! 2020! You were full or promises. Humanity as a whole saw your potential. We were full of projects, we ended up on our couches, seeing chaos and misery harnessing the world.

Somehow, I still managed to do commodity I’m pretty proud of: I learned Clojure.

  1. First Step: I was again brash by a good soul to read the free book Clojure for the Brave and True. This book is so good! The author needs actor of dollars and a statue in my living room.
  2. Second Step: Halfway trough the book, I was still trying to accept the first chapters. It’s a whole new paradigm, so don’t judge me.
  3. Third Step: After finishing the book, I found a snake game accounting in Clojure, and I adapted it for my needs. I wanted to teach some Vim concepts with it. Here’s the result.
  4. Fourth Step: Feeling a bit more in ascendancy of my destiny, I went on my own project, using a library to build a Sokoban game. I abstruse a great deal about WebGL at the same time. Why not? I had time.

In this appropriate context, I anticipation creating funny little games could be nice. Plus, video game development is bedridden with states, and anatomic programming has some absorbing ideas about that.

Here are some data:

Time spent on acquirements Clojure

This is the time I spent in 2020 on annual Learn Clojure for the Brave and True. I copied all the code as well. The red curve was my goal, the blue curve how much time I really spent on it.

In total, 38.75 hours. I spent already 20 hours on it at the end of 2019, so the total is a august 58.75 hours.

Again, the hardest is to begin. Then, time flies by!

Time spent on architecture Clojure games

This is the time I spent to build my two games. In total, 100 hours. Gosh, I didn’t do game development since I was 18. It was good.

The conclusion: if you want to learn a ton, just pick a accent in a archetype you don’t know, with a weird syntax. Many new skills guaranteed.

A accent that doesn’t affect the way you think about programming, is not worth knowing. — Alan Perlis

There is annihilation aberrant here. Just spend 10 annual each day on the accent of your dreams, and you’ll end up spending hours after even acquainted it.

By the way: you’re never really done acquirements a language, and that’s great. Acquirements is fun!

Coding is the best way to learn a programming language

Here’s a abridged adaptation of the acquirements method declared through this article:

  • Step 1: find a acclaimed and rated book, follow it and write the code given as example.
  • Step 2: half-way through the book (or when you feel ready), begin a small side project. If it’s commodity personal, it’s even better. Continue your book and you side activity in parallel.
  • Step 3: show your code to whoever can give you feedback. Having a mentor is the best!

If you need to bethink commodity from this article, bethink that:  is always better than .

I agree that artful code examples from a book and coding your own side activity are more efforts than irenic watching coding videos on Youtube. However, since you’re a (possible wannabe) developer, you should be able to enjoy it, at least most of the time.

If you enjoy acquirements a new programming language, can we still speak about “effort” and “work”, or more about “pleasure” and “hobby”?

Read next: Inside FIDO Alliance's vision of a future free of passwords