How to Make Learning Programming Effective and Enjoyable
Tags: programming, codenewbie, beginners, webdev
Published: 2020-11-30 03:50:33

When you start to learn to code, you typically start with learning a programming language. You learn about variables, functions, statement, loops, control-flow, etc. You may follow tutorials, typing things into a browser or a code editor and learning syntax and how to make the code run and do something. You may watch online courses, videos, etc. And at least some of the times things seem to work out as advertised and you feel awesome for making the computer do things (controlling it with your mind).

Then you decide to work on your own projects to implement your ideas or to build a 'portfolio' to demonstrate what you know. When you start with a blank (IDE) screen you may feel like you don't know where to start. And this is true for new programmers but also to experienced programmers learning a new tech.

Here's a problem. We often confound two different types of learning - tactical learning and conceptual learning. We often jump straight to the tactical learning and forget to ask questions like 'why' and some of the tech tutorials fail to offer context, bigger picture before diving into the 'how'

### How To Separate Tactical and Conceptual Learning

Programming consists of two types of learning that need to happen in parallel for it to be effective and enjoyable — tactical and conceptual.

Tactical learning is about the syntax, about what to type, where to type, and how to get the code to do something. 

Conceptual learning is about what the Things are, how they’re connected, why things are the way they are, and most importantly, how everything fits together. This book is about conceptual learning.

When learning a new tech, seek out conceptual resources that provide context and explain things like - what are good use cases, what is not a good use case, how this tech fits into the existing model.

Do both tactical learning and conceptual learning in parallel. Interleaving the two until you're making progress making things happen on screen but also connecting the dots in your mind. One way to test your conceptual learning is pose and answer basic questions to yourself or better explain the concepts to someone else, in plain language (without jargon). If you can do that, there is a good chance you've actually understood.

What do you think? How do you approach conceptual learning.


----------
P.S. If you want to read about API, MVC, OOP, SQL, JSON, DOM, and other web programming terms in a conceptual way, I wrote 16 chapters and bundled into a nice PDF (You can get it here [connect the dots](https://connectthedots.dev/) and start reading for free). I've been mentoring programmers and I wrote this based on common questions from students.

I'm also learning something. Promoting and marketing my work, which is completely new to me as a developer. This quote (from Seth Godin) helped me with my mindset:

"A good idea isn’t worth much if it doesn’t reach people who can benefit from it"

This is my attempt to reach the people that can benefit.
 
----------
P.P.S. If you're in a country where stripe doesn't work or dollar value is different, send me an email with the subject "I want the book" and I'll take care of it, no explanation needed (my email is in the footer of the [page](https://connectthedots.dev/))