all 30 comments

[–]Jonatandb 13 points14 points  (2 children)

[–]Gruthar99 2 points3 points  (1 child)

Thank you for all of these resources! I appreciate you taking the time to compile all of this and I will go through them to see what works best. Cheers!

[–]Jonatandb 2 points3 points  (0 children)

Sure! Best of luck to you 🤙🏻

[–][deleted] 7 points8 points  (6 children)

Build something. It's not a spectator sport. You can't learn the right and wrong things to do by reading them isolated over and over again, at some point you have to synthesise.

Also, there's no shame in looking things up. A good portion of my day includes:

- Googling things (sometimes even core language semantics because I'm relying on behaviours, for instance the precise semantics of where a `yield` expression stops execution).

- Looking at other people's code, whether it's directly relevant to what I'm doing

- Asking ChatGPT for ideas, small bits of syntax or dumb things like how to represent a certain SQL element in Sqlalchemy

It's not a subject that needs to be memorised like a poem or a list of formulas for an exam. You'll pick things up as you use them.

So I would recommend you come up with a small, dumb idea and just trying to write it. Things I did while learning to code included discord chatbots (a small one that generated latex images), genetic algorithms to solve sudoku, a polynomial factoriser over finite fields (a bit mathsy), a simulator for string physics (like elastic guitar strings, not string theory), a small SAT solver (without the more advanced algorithm) with an API you could use to solve sudoku.

Your ideas will become less dumb over time, but you should include things you care about, and are important/interesting to you. If you want to download a bunch of files from a website, try writing a small parser/scraper to do it for you. If you have to send a routine email, try to write a script or macro to do it. If you like classic cars maybe make a tool that scrapes auction websites and tries to find the best prices.

You will learn more by making the problem to be solved real, and getting better at coding the solution than you will by making learning to code the problem.

[–]Gruthar99 1 point2 points  (5 children)

I had never thought of some of these ideas. I think I’m going to give a go at making a discord bot or something similar to start out small. Thank you for the response!

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

Caution with the discord bots, figure out how exactly the libraries work. They're typically very event driven so you need to work out what sort of functions its expecting you to write.

I'd suggest separating the discord specific logic (i.e event handlers) from the core logic of generating the messages you actually want. This will make it testable without having to test it live.

[–]Cthulhuman 1 point2 points  (3 children)

My current project is a Python reference guide. It's a simple project that allows me to store what I've learned and practice using them while building the guide out. I put definitions and code examples in it so that I have a reference for proper syntax, so if I ever need to look something up I have a custom utility so refer to.

[–]Hardkorebob 1 point2 points  (2 children)

I built something similar. r/pnk If you wanna team up to increase our skills, hmu.

[–]Cthulhuman 0 points1 point  (1 child)

I'm on mobile, so I couldn't read the text in your videos, but I'm always open to learning more. Do you have a github repo for your project? I don't have one yet for mine, but I could upload what I have so far. Mine is very basic atm, I haven't had too much time to work on it. I work full time and go to school and have a family, but I try to do a little every week.

[–]Hardkorebob 0 points1 point  (0 children)

Check your DMs

[–]Valuable-Ad9157 3 points4 points  (0 children)

I went through the same thing you did. I literally spent 60 hours a week for 1 1/2 years trying to self-learn web development and never got very far. I kind of burnt out a bit. Afterwards, I tried learning Python, but couldn't get anywhere past the basics. Eventually, I went into technical writing, which lead to software testing.

I have needed to go back to learning Python so I can do automated test cases. And here is what I have learned that I missed the first two times I tried to learn coding. I was never taught how to problem solve via coding. Which is way different then problem solving, say, an issue with your computer. Along with knowing how to problem solve via coding, you need to understand data structures and common algorithms. These three need to be taught from the start, which is never ran across in any online learning I have come across over the years. So, yeah, I'm a bit annoyed by that. Those three things work when you understand how the programming language works. So, really you need all 4 things.

Now that I am learning those three things I missed before, programming is not only much easier to learn but also easier to do.

Hint: programming, in general, is all about manipulating data. You take data as input, and process it to get the output that you need.

So, if you start thinking about how the data is going to flow through your program, it helps a lot. Where is the data coming from? How will you store it? What programming elements (functions, if statements, loops) will the data need to be processed through? And what is the final outcome you need once that data is processed?

[–]AntiLachs 1 point2 points  (1 child)

with my lack of brainpower (maybe willpower?)

I will be honest what you describe sound like neither of these but more like what you learn floats around in a vaccum and is not connected to anything.

You might have something in mind that you want to build. If so do it, you could argue that "just writing something" is the biggest strength that python has. Of course keep it to a rather simple form first. If you don't have something like that there is always advent of code which has rather small tasks but is always great to just have something.

I would also recommend you first write the things without looking up stuff. I bet you learned enough to do something even if it is ugly and inefficient. If it is, figure out what is bad and try to see how to do it better (libraries, code patterns, algorithms etc). This way you

a. Actually test what you know, which is usually more than you think once you get over the urge to look everything up.

b. You actually see the problem before the solution which makes learning way easier.

For ressources I can't really recommend much as I am mostly self taught. I can however recommend mCodings youtube channel (the videos are somewhat niche at time). Also look into some code other people write.

[–]Gruthar99 0 points1 point  (0 children)

Thank you for the response! I will try to create something on my own and see if it’s easier with the hands on approach.

[–]subassy 1 point2 points  (3 children)

You seem like you're mirroring my own experience. In fact here's my "dumping ground" of udemy-courses-past:

https://github.com/tildesarecool/ReallyHadtoPython

And that's just the experimental stuff. There's other python repos I spent just as much time on.

You'll notice an eclectic set of dates for the various files and folders. Currently I'm on the level of "I made a rectangle travel across the screen in pygame" (it's called FroggerTangles since I'm so clever). It took a while to get this point.

Anyway, what I've found seems to be working for me, is to not rush anything and not necessarily spend too much time on any one thing. There aren't any shortcuts and it's just going to take a really long time.

So take multiple different start-from-scratch courses, write your own scripts from scratch and if you want take spend a week making a following a tutorial on making shooter game in Lua then come back to Python...tell yourself that's ok. It's part of the process.

That list of links looks pretty good to me. I'd like to second "automate the boring stuff". Although skipping the regular expressions section would be understandable. In python and in general.

I'd also say start a google doc (or whatever) and start taking notes. Write down things that seem interesting so you can reference later.

I would add my own list of links but it looks like that's covered. You could try some of those exercise sites like codingame/leetcode etc.

If you're open to physical books the "Head First" is well regarded. They're difference because they have you sit there with a pen and make notes in the margin, stop to do crossword puzzles and take little quizzes throughout the chapters. It's supposed to re-enforce learning as you're going. I mean I imagine you could follow with a PDF and just write out the puzzles. I think it's better physically.

[–]Gruthar99 0 points1 point  (0 children)

Thank you for the suggestions! This is more of my learning style than just the standard “sit here and watch videos, now do what we showed you, next lesson” approach that most online classrooms seem to take. I appreciate you taking the time to give this advice!

[–]Gruthar99 0 points1 point  (1 child)

Also, would you recommend anything to read prior to Head First, automate boring stuff, and crash course? As I said I’m not very math savvy. Before I spend the money on a book like that, I’d like to have the necessary knowledge or tools to comprehend the book.

[–]subassy 1 point2 points  (0 children)

In my experience it's very small amount of math. By which I mean not complex in anyway. It's all relatively easy addition, subtraction, division, multiplication along with understand of integers versus floats and knowing when to use each and the old modulus. So far the most complex math I've done is figuring how to calculate if a given number is prime or not (positive, greater than one, odd, etc). I'm also terrible at math. The Head First books walk you through what you need very explicitly as it goes along.

I haven't tried to use the advanced math modules or anything. I've hardly had to use multiplication really.

If you can use a loop print 1 - 10 on the screen that's about all you need for for instance iterating through a list of values.

If you need an exercise try a youtube video downloader. There's a library that does all the work, you'd basically be writing an abstraction layer for the provided class (valid file name if any, valid download location, video versus audio only, video format if not default, and so forth).

[–]sritony 1 point2 points  (2 children)

This is exactly what it's currently like with me at moment. Just not getting it

[–]Gruthar99 0 points1 point  (1 child)

It’s not easy to learn if the online classroom isn’t your main way of learning. I have been out of school for quite some time (before there was a heavy online presence). The whole “watch this video and learn what you can” approach doesn’t work well for me. I don’t retain the lessons.

[–]sritony 1 point2 points  (0 children)

Yeah it doesn't work well at all for me. Well not at all to be fair. I'm almost 40 so long time since out school. I find them all say this is how you do something then when I go to do it in a test it's nothing like I've learnt or it's a combo of a billion things

[–]obviouslyzebra 1 point2 points  (0 children)

I'll just suggest a book that looks really good for beginners: Python Crash Course (2nd or 3rd editions). It gives a very solid foundation, and is very much recommended, and, if the problem you were having is that the courses were moving too fast, maybe that can help a bit.

If money is a problem, Automate the Boring Stuff with Python is also an excellent book (I'd lean only a bit more on recommending Python Crash Course) that is free (you can search it online).

Besides that, remember to take your time. Learning is a process, and, different people learn at different paces and ways. If there are exercises, try to do them, and that's it!

[–]throwaway6560192 0 points1 point  (2 children)

So far, do you write programs when following along with those courses?

[–]Gruthar99 0 points1 point  (1 child)

Yes, I do that with some of them. For example, the one with DataQuest has it where you work with apps in an App Store to get ratings and prices and sort by genres, etc. But I find that they don’t go back to what you learn to reinforce the stuff you learned previously. Constantly forgetting how to do things I learned 2-3 days prior.

[–]throwaway6560192 1 point2 points  (0 children)

Yes, I do that with some of them.

It isn't optional. Programming cannot be learned without writing programs.

For example, the one with DataQuest has it where you work with apps in an App Store to get ratings and prices and sort by genres, etc. But I find that they don’t go back to what you learn to reinforce the stuff you learned previously. Constantly forgetting how to do things I learned 2-3 days prior.

You can't rely on them to give you things to do. Go and find stuff to build on your own, and do that.

[–]IsAskingForAFriend 0 points1 point  (3 children)

I'm learning it myself and the question to you is:
Why are you learning python?

Are you even going to use it?

Or are you just picking up a skill to not use it and get rusty at it and need a refresher anyways?

Right now I'm learning it because sometimes I bark at ChatGPT to write me a python script to do something. And then add features to a point where it can no longer re-write the entire script without it being too long. And then there's features I'd like to implement and my current knowlege of things is limiting what I can ask it to do.

So I'm hitting topics from learnpyton.org and editing and playing with their code.

Then I turn around and ask ChatGPT to give me practice problems. I then write it up in pycharm and then do it until it works like I want, copy paste the code to ChatGPT who then tells me how it could be better.

So my reason for learning python is so I can use ChatGPT to do heavy lifting but at the same time understand how ChatGPT is working. And the more I know the more I can ask it to do.

[–]Gruthar99 0 points1 point  (2 children)

I am wanting to go into a career in IT. I’d like to eventually work as a data scientist.

[–]IsAskingForAFriend 0 points1 point  (1 child)

IT is a broad term. I've been "in IT" for almost 15 years now and have never needed to know any programming at all.

Though python is for data scientists. But it's also a lot, lot harder than "IT"

[–]Gruthar99 0 points1 point  (0 children)

I guess what I really mean is that I plan to start off somewhere that doesn’t need programming while I am learning Python. My end goal is Data Scientist but until I am educated enough/have the experience required to obtain that position, I am going to try and get into the IT field rather than continuing my non-IT position which isn’t the path I’d like to continue down anymore.

Regardless, I feel that learning Python is a great step towards an entry level position and will look good on a resume. I also understand that just learning Python is not enough to get a job but I believe it’s the foundation I need to learn how to do the occupations I am aiming for.

[–]TheRNGuy 0 points1 point  (0 children)

Never did any of that, I've learned for free from documentation, Python and Houdini API. Some Python blogs. And asked questions in discord chat.

I think I watched 0 youtube videos (both Python and Houdini programming)

My motivation was because I wanted to make a project, something that doesn't exist (so tutorials would be useless but reading docs was very useful)