:: krowemoh

Monday | 21 APR 2025
Posts Links Other About Now

previous
next

Learning to Program

2025-02-10

These are some of my thoughts on how someone should learn programming. My own experiences are probably outdated at this point and so the way I'm recommending is not one that has been tested.

All this is to say that everything here should be taken with a heaping of salt.

Starting from Nothing

Assuming you have no experience with programming or computers, the best way to start would be in environment that is already set up for you.

Learn Python 3 by Codecademy

Codecademy provides an online environment to run programs in so this way you don't have to set up your own environment right off the bat.

I've used the site before to learn JavaScript and it was good enough course there.

Learn Javascript by Codecademy

I would recommend starting with Python as it is a little bit easier and more straightforward. It also leads into my favourite tutorial which will come up a bit further down.

Setting up an Environment

If you want to learn programming, you should probably start getting comfortable with Linux. It doesn't mean you need to master it, but it is handy to start using it.

I would recommend installing Windows Subsystem for Linux on a Windows machine.

This should result in you having an Ubuntu virtual machine running on your Windows computer.

Writing a Web Application

This is one of my favourite tutorials, The Flask Mega Tutorial by Miguel Grinberg.

It builds a twitter clone using python and flask. I like the structure of the tutorial and how relevant each thing is. Following and building this tutorial should explain how most websites ultimately work.

Learning how Computers Work

Once you have some basic programming knowledge, the next thing would be to learn how computers work and how programming languages are the ultimate abstraction.

Build a Modern Computer - Nand to Tetris.

Nand2tetris is a great course that is helped quite a bit if you work on the projects as well. You start from the simplest possibly logic gates and ultimately build up to building your own computer and programming language. By going through each step, you see how computer science is just abstraction after abstraction.

Thoughts on AI

I don't think it's a good idea to use AI completions or ask ChatGPT for help on some code until much later. Even if your code isn't compiling and it's been an hour, probably better to try and cut the program down to a small piece that does work and then slowly add things back in until it breaks.

AI is great but as a learning tool, I think it's more akin to copying and pretending like you are learning rather than really deeply learning. Once you have some knowledge, AI can be great to speed things up but at the initial stage stay away.

I'm basing this off of trying to use AI to learn a new programming language but this is my personal experience so it ymmv.

Conclusion

Ultimately, the best way to learn a programming in my eyes is to know a little bit and to then try and do something. Come up with a project or idea and then try building it. When you have issues, use stackoverflow and google to find answers.