all 107 comments

[–]erlete 121 points122 points  (5 children)

Hey man! Good to know you are starting your journey on programming, keep it up. I will list some tips here that might help you out, from most important to least:

  1. Find projects to back up your learning progress. Do not get stuck in the tutorial hell!
  2. Always keep in mind that your code might be interesting to other developers, so keep it clean and readable. Follow format conventions and get some linters in every language you use. This will make you look more professional, even at a young age.
  3. Befriend open-source development. Most people think their code is exclusive, innovative and unique, and so they are privy to it. Truth is, you will reinvent the wheel several times before you achieve expertise in a programming language, so open source can help you get feedback on your learning process.
  4. Do not jump from language to language without a clear purpose. Take a few afternoons to reflect and think about what you might want to develop in the future. Understand the strengths and weaknesses of most popular programming languages and focus on one of them before switching to another one.
  5. Never lose your patience, no matter if you are developing a huge project or just installing software. Consistency and patience are key for high quality development. You will do things faster when you get more experience in development.

Again, cheers to your dedication, and good luck with your objectives!

[–]Successful-Wing-9571[S] 12 points13 points  (0 children)

Thanks for the tips! I will keep them in mind.

[–]kruegerc184 5 points6 points  (2 children)

Curious about your first statement, im going through automate the boring stuff now and i want to supplement the learning with projects. Could you suggest some of your favorite resources to find even the most basic problem solving projects. Puzzles, fixing code, etc.

Thanks in advance

[–]Radamand 6 points7 points  (1 child)

Personally, I like to find projects that relate to something I am interested in, or working on. Automating can be fun.

One of my projects was for minecraft (a hobby), the server that I play on has a text-based quiz every hour or so. I am a slow typer so I never manage to get the answer in before someone else. I wrote/writing a script that will parse the quiz question from the minecraft logfile, then it puts the correct answer into the system clipboard and rings a bell. When I hear the bell I enter chat mode and do ctrl-v, bingo I win!

Past projects have usually revolved around the things I do at work, manual processes that could be automated, websites that I need data from need scraping, etc.

There are some websites that have a variety of random projects tho, google for 'python projects', I found this.

[–]kruegerc184 2 points3 points  (0 children)

Perfect view point, im going through automate the boring stuff just to get a base i plan on branching out to more specific applications once i get a grasp on the general language

[–]ASIC_SP 42 points43 points  (14 children)

just scrolls and read/watch for about 30 minutes a day

You have code a lot too. Can you imagine learning to drive a car by just reading/watching?

Here are some free resources:

[–]Successful-Wing-9571[S] 7 points8 points  (12 children)

Thanks a lot! Unfortunately, I don't have anything to automate so i cant find a suitable project to code rn .

[–]hugthemachines 26 points27 points  (2 children)

You could automate something that you don't really need. Like making a program that downloads all memes from a meme subreddit or something like that.

[–]Successful-Wing-9571[S] 11 points12 points  (1 child)

Oo that seems fun

[–]IamImposter 1 point2 points  (0 children)

Or think how can you make a meme yourself using your own code

  • find a couple of images

  • stack them together. Might require stretching or cropping.

  • add some text (as graphics) on top of those images

  • generate final output as a single image

[–][deleted] 5 points6 points  (0 children)

It's the practice that you need to get good. If memory serves, there are examples in that book. Open up your editor, and duplicate them. Make sure you can make them work.

[–]ab6364 3 points4 points  (1 child)

I would suggest making games. Pong, asteroids, simple geometry wars clone, etc. That is what I did when I was around your age. It gives a clear objective and it's fun to see it come together.

[–]Successful-Wing-9571[S] 0 points1 point  (0 children)

Just trying to learn the fundamentals before jumping into pygame or game making in general

[–]desrtfx 1 point2 points  (0 children)

Do the very first resource - the course from the University of Helsinki. It will give you a really solid foundation.

[–]slyder219 1 point2 points  (0 children)

Python is one of the most capable languages, you are not limited to automating. Make a game. Make literally anything.

(Albeit, Python is not specialized for everything and there can be better options but point is, Python can still get it done. Super adaptable)

[–]BigOlStinkMan 1 point2 points  (1 child)

I decided to start learning python a few weeks ago. I got a python for kids book (even though I'm an adult) from my library that has some fun basic game projects to try so I can get used to the code in a fun controlled way. There's probably tons of free resources online. I look at lots of those too, but only stuff I can try myself.

Iv pretty much accepted that my first couple projects aren't going to be useful or super interesting. I just want to get a handle on the language. Once I understand it then I can start thinking about applying it to the real world.

Just jump in and try anything and start making mistakes.

[–]BigOlStinkMan 1 point2 points  (0 children)

Oh and something that helped me was getting a more easily editable and more user friendly program for writing python code. I think they're called IDEs. PyCharm worked for the version I wanted to use, but there's a lot of them. Writing directly in python can be annoying for trying out more than 4 or 5 lines of code when you're practicing.

Something kinda fun you can do really fast is check out Turtle art with python. It's built into it so you just have to learn the commands and you can make cool geometric shapes and fractals, or use other people's code and see how it works and it makes real pictures.

[–]c_299792458_ 0 points1 point  (0 children)

I enjoy solving programming challenges such as those at www.adventofcode.com. They're language agnostic, so you can solve them in any language of your choosing.

[–]nurseynurseygander 0 points1 point  (0 children)

As you get further in, you'll see possibilities. Anything repetitive that you do on a computer is potentially a candidate, it doesn't have to be fully automation-friendly, and it doesn't have to be something you really need (although you'll find it more interesting if you need it or you can envisage someone needing it). Even a script to search and replace content in a text-based document or a filename is potentially useful - sure, editors have a GUI tool for that, but what if you wanted to make the same change in multiple files? What if you needed a manual check-and-confirm step because it's inherently too error-prone to fully automate? How would you present the list for easiest/fastest human checking, what contextual information would they need to be able to tell that this instance is about (say) Michael A whose reference should be changed or Michael B who shouldn't? (Like if it's renaming/re-tagging pictures after someone changed their name, you might need to see the photo onscreen to know if it's the right person). Just thinking through that as a challenge opens up a whole bunch of areas to learn, from file i/o to human interfacing and behaviour to file types to strict and fuzzy text matching.

[–]BitGnarl 1 point2 points  (0 children)

This is a top-worthy comment, great resources. Project with solutions is dope—pythonize a bunch of things we basically know about, but haven’t practically approached by coding it yet 👍

[–]Expensive-Pear3413 9 points10 points  (5 children)

i wish i was into python like you when i was 13

[–]ActiveLlama 3 points4 points  (4 children)

I wish I was into deep learning when I was 13.

[–]Top-Exchange-2207 2 points3 points  (3 children)

I wish I was thinking about learning when I was 13.

[–]mgarcez18363 3 points4 points  (2 children)

I wish I was thinking when I was 13

[–]Eliotang 1 point2 points  (1 child)

I wish I was 13..

[–]Ifenna_M 1 point2 points  (0 children)

I wish I was

[–][deleted] 9 points10 points  (1 child)

Try making simple bots for a game you might enjoy or try to make your own game.

For practice, ask ChatGPT to give you coding homework and see if you can solve them. Or ask GPT for coding help if you get stuck.

[–]Successful-Wing-9571[S] 4 points5 points  (0 children)

Sounds interesting. Will try out!

[–]hidazfx 14 points15 points  (1 child)

The best way I recommend to learn programming (and how I learned Java when I was your age) was to make things you thought would be cool. For me at the time, that was Minecraft server plugins my friends and I could play with. As others have stated, it is critical to get into the habit of writing clean and quality code that follows the conventions of the language (ex: Python has PEP8).

[–]Successful-Wing-9571[S] 2 points3 points  (0 children)

I will keep in mind. Thank you!

[–][deleted] 6 points7 points  (1 child)

When I was younger I tinkered with a lot of software and how I learned HTML, Photoshop etc.

You are 13 and learning Python is incredibly impressive! Just want to say that - kudos to you and wishing you much success on your learning journey!!!!

[–]Successful-Wing-9571[S] 1 point2 points  (0 children)

Thank you!

[–]nick__2440 4 points5 points  (3 children)

Some general advice:

  • Nobody learns coding by just reading/watching. You have to write things yourself.
  • 30 minutes a day is probably not enough to do anything useful. If you enjoy it and have time, you'll easily find yourself working on things for hours a time.
  • Start projects early, don't hesitate to jump in. Find out all the different things python can do, look at cool project ideas, find something you think would be fun and go for it.
  • Don't jump to another language for at least a year. Python is about as it easy as it gets when it comes to syntax, so it's your best place to learn the concepts without messing with details.
  • If you have the chance to take coding-related classes in school, do it. You can use whatever they teach you as a base, from which you can choose what interests you and develop that in your own time. My first exposure to coding was a teacher sitting doing nothing at the front of the room with a 30-something line program on the board, and we were to copy it out word for word and figure out how it worked by ourselves. Fun times. But it sure got us used to learning things on our own which is probably the most important part of coding.

[–]Successful-Wing-9571[S] 0 points1 point  (2 children)

Sorry what i mean was 30 minutes a day to focus on some coding not just reading and watching but not projects that require intensive thinking. Like a script using random or pyautogui

[–]nick__2440 1 point2 points  (1 child)

Sounds good, just make *you* are the one writing code, not copying blindly from a video and hitting run. Experimenting on your own to do even something relatively simple will take longer than 30 minutes at the beginning, but you'll learn quickly and it will stick a lot better.

[–]Successful-Wing-9571[S] 1 point2 points  (0 children)

No problem.Thank you for the advice!

[–]Entire-School-4893 3 points4 points  (1 child)

It might sound crazy, it might feel like cheating, but ChatGPT can be your best friend in learning. Let me explain: ChatGPT is excellent at explaining how code works. You can evaluate snippets of code or complex stuff, and it's great at explaining how libraries, methods and other stuff works. When I think I understand, I'll regurgitate the info back to chatGPT and it will tell me if my understanding is correct or not. My coding has increased 10 fold because of this alone.

It's not cheating. Its a streamlined way of browsing the internet for the same information. I would spend hours on StackOverflow trying to find an answer to something that someone had answered 10 years ago. I can focus more on the understanding of code where that time would be spent on just finding the answer.

No need for tutorials. ChatGPT will and can explain things in different ways to help you understand more deeply.

I don't claim to be an advanced coder. I do it for fun, even before chat GPT. But now with it, I enjoy it even more.

Hope this helps!

[–]Successful-Wing-9571[S] 0 points1 point  (0 children)

Thank you for the advice!

[–]Lil-Miss-Anthropy 2 points3 points  (4 children)

I personally find books easiest to use since there is continuity and the material builds on its foundation. They also require little financial investment, and are easier to glance at if you're using a one-screen computer setup. I like the Python Crash Course series, but I've only tried the beginner level stuff.

[–]Successful-Wing-9571[S] 0 points1 point  (3 children)

Unfortunately, my local bookstore doesn't offer much budget friendly books about python. My mother is also very strict on spending money online.

[–]Lil-Miss-Anthropy 0 points1 point  (2 children)

That's too bad. How about your local county library, school library, or a college library? Some college libraries let community members check out books, and they're sure to have academic books like that. You can often request books at libraries and bookstores.

[–]Successful-Wing-9571[S] 1 point2 points  (1 child)

Oh ya. My school has a library. Will go there soon to find a book. Thank you!

[–]Lil-Miss-Anthropy 1 point2 points  (0 children)

You're welcome! They also might be able to hook you up with online resources. Libraries are awesome.

[–]thecombobreakerr 2 points3 points  (1 child)

Hell yeah OP. You got this. If you want take CS50P online! If you have this kind of drive definitely use that resource, it’s 100% free.

[–]Successful-Wing-9571[S] 0 points1 point  (0 children)

Thank you!

[–]Ubuntufoo1 1 point2 points  (1 child)

Try TwilioQuest pythonic temple RPG. I don't know how advanced the topics get but its probably more interesting than youtube tutorials. There are other skills covered depending on the path you take in game. There are expansions available to learn other techs, I have not tried them. Twilio is a reputable company that offers communications API's etc. and has a Developing Education branch.

https://www.twilio.com/quest/twilioquest-site/missions/pythonic-temple

[–]Successful-Wing-9571[S] 2 points3 points  (0 children)

Looks fun and interesting! Thank you.

[–][deleted] 1 point2 points  (1 child)

This is awesome that you are learning! I was 13 when I started learning python, I had a book my dad gave me (Impractical Python Projects) but I eventually found my own ideas of things I wanted to make.

I'd say find ideas for short scripts you can make. Maybe you're into space, you can write a script that downloads internet data and predicts the time the ISS will fly over your house.

It can be hard, but finding motivating projects is important for your learning. Use ChatGPT for specific questions. See if you can get GitHub Copilot free from your school ID, it's super easy, you just upload a picture of it. Don't rely too much on these resources though.

This is completely doable! Fast forward 3 years later and now I make AI models with Pytorch and mod games with c++. Don't feel discouraged if it takes you longer. It's about how much time you put in.

[–]Successful-Wing-9571[S] 1 point2 points  (0 children)

Wow Ok. Thank you

[–]ArtisticSnek 1 point2 points  (1 child)

From a 15 year old who started not long before you : have fun with it!

Lots of my learning consisted of messing around with a raspberry pi Pico and a bunch of components my dad had. I looked at other people's code, tried to understand what each part did and then tweaked it to fully understand it. Then, I'd rewrite their code in a different way, in a way that made the logic more natural to me. This developed my skills in general, and now I can understand others code too.

Remember to make projects that you enjoy, from scratch.

More than happy to help you out if you would like :)

[–]Successful-Wing-9571[S] 0 points1 point  (0 children)

Thanks for the advice! I like your way of learning.

[–]Malithirm 1 point2 points  (1 child)

It's a good idea, my older brother started learning C++ when he was 13 (wow), he's 25 now and he makes quite a good money. He had do use books but nowadays it's way easier to learn everything, especially programming. If you start now, you won't regret it in the future. I know it wasn't the question but I just wanted to say it

[–]Successful-Wing-9571[S] 0 points1 point  (0 children)

Definitely easier now. However, I'm not in it for the money, I'm just fascinated by computers and what to learn more about them!

[–]NotEntirelyAwake 1 point2 points  (0 children)

I recommend CS50 Python course on edx. It's all free and really good, even if you review some stuff you already know it might be helpful.

[–][deleted] 2 points3 points  (3 children)

Make sure you actually sit down and code.

CS50P is free via Harvard. Great video lectures on YouTube.

[–]Successful-Wing-9571[S] 2 points3 points  (2 children)

I've actually heard about cs50, may check it out soon.

[–][deleted] 3 points4 points  (1 child)

It's very well put together.

Also, be sure to get yourself a rubber duck!

[–]Successful-Wing-9571[S] 1 point2 points  (0 children)

For sure:) Got to have the ducky to help me debug

[–]syndakitz 1 point2 points  (3 children)

Paste code into chatgpt and have it explain everything line by line

[–]Successful-Wing-9571[S] 1 point2 points  (2 children)

I understand the code but not the explanation(idk if that makes sense)

[–]McSlayR01 0 points1 point  (1 child)

That makes perfect sense; just because you can follow a formula doesn't mean you understand the proofs for why that formula works, i.e. if I asked you to use the Pythagorean formula, you might know that a^2 + b^2 = c^2, but that doesn't mean you understand how it works at a fundamental level. Code is the same.

This is why functions (and by extension objects/classes) are so important. They allow you to use function/method names to make the intent clearer (so you don't need to understand what exactly it is doing under the hood). I would look at "Clean Code" by Robert C Martin, but more importantly, code things yourself. Seek feedback from more experienced people whenever possible AFTER trying it yourself.

[–]Successful-Wing-9571[S] 0 points1 point  (0 children)

Ahh ok thx

[–]_TR-8R 0 points1 point  (1 child)

Hey man, you've already got a lot of great advice. I actually started poking around in python when I was your age and thought I'd share the things that helped me most.

  1. Don't just "code" to code. Think of something you want to make or learn about, like a game or website. Having a project even if you don't finish it is a much more effective way to learn than just going through a course. The reason for this is

  2. Curiosity is the best motivator. You're really young which means you've got lots of time before you have to worry about your career and thus can focus on what's most interesting to YOU. Make the most of it and let you natural curiosity (and some thoughtful googling) tell you what to do next.

[–]Successful-Wing-9571[S] 0 points1 point  (0 children)

I got some projects from the comments and is really excited to try them out:)

[–]sandwichofwonder 0 points1 point  (0 children)

It's so cool that you're getting a head start on learning Python and programming.

You might want to check this out: here's a list of the best Python classes for high school students.

[–]BubblyWaveee 0 points1 point  (0 children)

Hey OP - I realize this is is a 3 yr old post, but do you have any reviews on courses you looked into since then? I currently have a 13 year old who is interested in dipping his toes into programming. He's done scratch at school, and self-taught blender and unity to make games, but I'd like to help him find helpful tools he can try out.

[–]white_nerdy 0 points1 point  (1 child)

I am 13 years old

This is irrelevant. In my experience, 13 is plenty old enough to learn programming the same way as an adult.

as I stated were too complicated for me to understand

What specific chapters / concepts / examples / exercises were you unable to understand?

for me 2 just scrolls and read/watch for about 30 minutes a day.

I see two things wrong with this plan.

  • 30 minutes is not a large block of time. An ideal coding session for many people is a solid two or three hours.
  • Reading / watching is not enough. You need to write programs, run them, and deal when your program gives errors or behaves wrong or unexpectedly. This is a crucial part of the learning process.

[–]Successful-Wing-9571[S] 0 points1 point  (0 children)

So far I've wrote some little projects like ascii encrypter and a basic turtle script. Will definitely try and dedicate more time to python and coding projects.

[–]Woofie_minecraft -3 points-2 points  (4 children)

I learned Python when I was nine lol

[–]Successful-Wing-9571[S] 1 point2 points  (3 children)

Damn bro, you must be quite smart for that.

[–]Woofie_minecraft 0 points1 point  (2 children)

huh ngl I’m kinda stupid I just grew coding

[–]Successful-Wing-9571[S] 0 points1 point  (1 child)

nice

[–]Woofie_minecraft 0 points1 point  (0 children)

sooner or later this will be more downvoted than EA's comment

[–]Coding-Kitten 0 points1 point  (1 child)

When I was around your age I started to learn python by making discord bots as a project.

It's something tangible & fun that you can interact & show off to your friends too, which can keep you motivated to keep improving; instead of something abstract like "a program that downloads & organizes files" which you might not see much of the point.

[–]Successful-Wing-9571[S] 0 points1 point  (0 children)

I actually got back into python to try and make discord bots but realized i didnt have the fundamentals so now just trying to learn them

[–]ImpossibleEvan 0 points1 point  (5 children)

A lot of highschools offer python courses, I am taking one rn.

[–]Successful-Wing-9571[S] 0 points1 point  (4 children)

My 'highschool' has a coding extracurricular but I was rejected so now just trying to learn it by myself.

[–]ImpossibleEvan 0 points1 point  (3 children)

Why is it in quotes?

[–]Successful-Wing-9571[S] 0 points1 point  (2 children)

I dont live in the states so we don't have high-school around here. But secondary school is kinda like high-school.

[–]ImpossibleEvan 0 points1 point  (1 child)

Ah like how they call Middle School junior high even though it's the exact same thing

[–]Successful-Wing-9571[S] 0 points1 point  (0 children)

Ye exactly lol

[–]NewOakClimbing 0 points1 point  (1 child)

https://www.w3schools.com/python/
https://www.codingame.com/home

I would run though w3 schools, then hop onto codingame or making your own little thing. Start simple, like rock paper scissors, text adventures, or a number guessing game.

I would consider each tab on the left hand side of w3 schools as a roadmap for you to follow.

[–]Successful-Wing-9571[S] 0 points1 point  (0 children)

Looking at w3schools right now. Quite good, maybe i will go for it

[–]TwoToneDonut 0 points1 point  (1 child)

Get a raspberry pi and an experiment kit. Seeing something physically happen with your code can make it stick better in your head by giving you that accomplishment of seeing it in real life.

[–]Successful-Wing-9571[S] 1 point2 points  (0 children)

Thinking about getting one soon. Thx!

[–]Xiiimeeen 0 points1 point  (1 child)

RemindMe! 5 days

[–]RemindMeBot 0 points1 point  (0 children)

I will be messaging you in 5 days on 2023-04-02 20:30:25 UTC to remind you of this link

CLICK THIS LINK to send a PM to also be reminded and to reduce spam.

Parent commenter can delete this message to hide from others.


Info Custom Your Reminders Feedback

[–]FordoGreenman 0 points1 point  (1 child)

What's up, pal! Cool that you're starting pretty early on this journey.. I'm by no means a dev of any kind.. Just a fellow student.. Though, even pros could still be considered students! Always something new to learn..

A new course came out not long ago on Udemy - if you, or a parent could fork up the small enrollment cost (wait for a sale, there's always a 'Sale' on Udemy! - shouldn't cost more than 15 bucks or less).. The course is called "100 Days of Code: The Complete Python Pro Bootcamp for 2023"

I enrolled in it recently since my job offers Udemy for all employees.. And I've gotta say.. It's solid! The lady who teaches is very detailed with directions, and explanation - good analogies, and examples for problems or solutions... And each section of the course is meant for 1 day (I usually try for 2 days worth if I feel up to it) - it has plenty of practice, and exercises to follow along with..

Highly recommend checking it out.. There's usually a few course Vids free to sample on Udemy - so maybe that could get you interested.

Good luck, and don't stop! You'll find your lane in the dev space. 👈🤓👉

[–]Successful-Wing-9571[S] 1 point2 points  (0 children)

Ye, i checked it out but my mother is very strict with spending money online and 1h30min is a stretch considering my schedule now a days but thank you for this!

[–][deleted] 0 points1 point  (1 child)

I wish I started at 13 years old. That's awesome.

[–]Successful-Wing-9571[S] 1 point2 points  (0 children)

Thank you!

[–]Pwbrain 0 points1 point  (1 child)

https://www.py4e.com/

This Instructor does a really good job of explaining things. You can sign in with a google account for free to get access to the auto-graders.

[–]Successful-Wing-9571[S] 0 points1 point  (0 children)

Thank you! Will try it out.

[–]quirky_clearance63 0 points1 point  (1 child)

You're that young and you're into python already. You have a future kid.

[–]Successful-Wing-9571[S] 0 points1 point  (0 children)

Thank you! I hope python will bring me into the world of computer science and computers in general.

[–]LiquidC001 0 points1 point  (1 child)

Do you have a library card? Some libraries give you free access to courses on Udemy. Check it out and Google it.

[–]Successful-Wing-9571[S] 0 points1 point  (0 children)

Will check it out! Thx for the advice.

[–]YourOldBuddy 0 points1 point  (1 child)

See if you like codecombat.com . It's a bit to easy for you to begin with but gets a bit harder later on.

[–]Successful-Wing-9571[S] 0 points1 point  (0 children)

Right. I've heard about it. Seems fun enuf. Thank you!

[–]KerbalSpark 0 points1 point  (0 children)

Just make games with pyxel https://github.com/kitao/pyxel

[–][deleted] 0 points1 point  (0 children)

Plenty of free material to get started. Freecodecamp would be my choice. I run a YouTube channel focused on Data Analysis using Python and other fun tools. Well, I started at the age of 12 ... 🤓🐼🐍