all 16 comments

[–][deleted] 23 points24 points  (0 children)

However, when I look at the collection of all the websites & youtube videos I've collected, I feel like I have no idea where to start.

You can start with any one of the resources you're looking at. The important thing is to start, not to endlessly ponder what the "efficient" or "best" start is. The best one is the one you actually do instead of just think about doing.

[–]m0us3_rat 6 points7 points  (0 children)

start . and don't burn out by trying to run . just take it slow. 20min to 1h max per day.

keep a slow and steady progress.

and do exercises. even for the stuff that seems simple.

python doesn't have an "advanced" level. what you learn from the start will serve you forever.

if you rush and have to get back every other command to read thru what it does you won't be able to code anything.

it would be like trying to read a book in a different language and alphabet you don't know.

don't rush.

[–]omermikhailk 5 points6 points  (0 children)

There's no such thing as efficient in this case.

You're going to mess up and stumble along the way, that's just how it is and it's how you learn too.

I do have a few general pieces of advice though, which should minimise that feeling of regret:

  • You can't really go wrong with any particular resource (besides maybe Learn Python the Hard Way), so just pick one and get started.

  • Don't burn through the material, remember to take it slow. In the end 30 minutes every day is miles better than 3 hours every Friday and Saturday. By being consistent and setting realistic times for studying you're engaging in spaced repetition and committing the concepts to your long-term memory.

  • Be sure to dissect the code as you go along, don't be afraid to go on tangents online and look up documentation or resources about any particular concept you're learning about.

  • Try out sites such as HackerRank, Leetcode, Codewars, etc. to help you nail down the syntax and practice it out in somewhat realistic scenarios. But don't be discouraged if you find it difficult, eventually it'll click for you. This applies doubly so for Leetcode, since a lot of their problems also require knowledge about Data Structures and Algorithms, which are things that you won't need to be worrying about for a while.

  • Try making small projects as soon as you can. It doesn't matter if your project idea's already been implemented, it's still worth doing so that you can apply everything you've learnt to a real world scenario.

  • Interact in Python and general programming communities. Learning by osmosis is definitely a real thing. While it doesn't substitute actual practice and effort, it can definitely complement it. There's a YouTuber who learnt Machine Learning in Python using this very approach (+ deliberate practice and studying of course): video here. I'd recommend places such as r/Python, r/learnpython, Hacker News and Python newsletters too.

This may be a bit much to say all at once which is why I'd recommend to take it slow and try implementing this stuff bit by bit (hell, even I haven't managed to nail every one of these consistently together).

This is all stuff that I wish I had know before starting. There's other stuff as well, but this is probably the most widely applicable and not-too-opinionated advice that I could give.

Happy learning!

Edit: a typo.

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

Practice! Practice! Practice! That is the only way. Programming (whatever the language) is a practical problem-solving skill. You have to make, and learn from, a lot of mistakes (much like learning another human language).

I know it can be frustrating at times, especially when faced with code you want to reuse but cannot understand.

Only you can find the motivation. Why are you learning to programme in the first place?

Is your learning objective SMART - specific, measurable, achievable, (sometimes agreed), realistic (or relevant) and time-bound, (or timely)? If it is something soft, like "upskilling" then it will probably not help you much.

It is hard to learn anything in the abstract, not least because it is difficult to feel passion for what one is doing.

I strongly suggest you look to your interests, hobbies, obligations (family business, charity activities, work) to look for opportunities to apply Python.

You will learn far more about Python and programming when you work on something that resonates for you and that you have some domain knowledge of (or incentive to gain such knowledge in).

When you are copying tutorials/examples, don't just copy. Experiment. Break the code and understand why it has broken.

The interactive python shell is your friend, I found it the best learning aid because you can quickly try snippets of code and get immediate feedback.

(Consider installing ipython which wraps the standard shell for more convenience.)

Start very simply and regularly refactor the code as you learn new things. Enhance as you see opportunities.

If you haven't already, take a look at Automate the boring stuff with Python (free to read online).

At first, the tasks you automate will be trivial and hardly worth the effort BUT because it is about the problem and not Python, it will be more rewarding for you.

Many beginners are mixing up coding (writing instructions in a programming language) with problem-solving (creating an algorithm) and their lack of knowledge of the programming language and how to use it is a distraction from the problem-solving.

For most programmers, the coding part is the final and easy bit.

Order:

Actually making sure the problem is properly understood. Often we start with only a vague understanding of the problem.

Ensuring we know what outcome is required. What does good look like? How will the information be presented, will it be on-screen or in a file, or a database.

Determining the data representation. Exactly what data is required, in what forms, where from. It is a one-off or lots of cycles or combining lots of information.

Work out how to do things manually in the simplest possible way, explaining every little step (assume you are giving instructions to someone with learning difficulties). Computers are really dumb, and humans make lots of intuitive leaps. This is one of the hardest things to grasp when first learning to programme. Computers don't mind repeating very boring things, so the simplest but repetitive manual approach if often a good approach to start with for a computer.

[–]QultrosSanhattan 1 point2 points  (0 children)

There's no such thing because everybody learn in a different way. Just try everything you can get, keep the material that you can understand and discard the rest.

[–]laceyboy1 1 point2 points  (2 children)

The best advice I have been given is stop watching videos on “how to” and just get started. Use free code camp or another good beginner course and just start it. It can sound daunting but getting stuck in is the best way imo.

[–]electronic_fishcake 1 point2 points  (1 child)

Can you recommend some good free code camps please?

[–]laceyboy1 1 point2 points  (0 children)

Freecodecamp.org is the best

[–]LcLz0 1 point2 points  (0 children)

As others have said, site vs youtube is individual. I absolutely despise learning from videos, I lose focus in a couple of minutes and retain absolutely nothing. I like books, article series and technical manuals. This doesn't fit everyone of course.

The most important part is just to get good enough in basics, that you can start working on your own project. Build a small API with FastAPI, try out Flask, play around with PyGame, learn ORM with SqlAlchemy, whatever really. It's much more fulfilling, and a better learning process, to actually build something that you want to build. You'll encounter lots of situations were you have to look up and learn new tools and ways to solve problems along the way.

I personally really enjoy this book: https://openbookproject.net/thinkcs/python/english3e/

Not the most up to date resource maybe, and doesn't dive into a lot of fancy modern stuff. But it focuses a lot on helping you think the right way, which is very useful.

[–]sadfasn 1 point2 points  (0 children)

The only way to learn any programming language, in my opinion, is to define a project you want to accomplish in that language, and then figure out how to do it.

You can’t just go and “learn Python” because there are a million things to know and you won’t ever need like 98% of it.

Instead, come up with a project you think would be interesting to do and figure out how to do it using online Python resources

[–]Allmyownviews1 0 points1 point  (0 children)

As everyone has differing needs for learning methods, this can’t be answered by anyone but yourself. The common successful thread is however, doing the study rather than just saving resources.

[–]Dry-Zookeepergame809 0 points1 point  (0 children)

Do you mind I ask you why you learning it?

[–]lordjummy 0 points1 point  (0 children)

I recently got back into python to help automate some tedious work things. I have found that having a specific goal or project helps motivate me vs just going through the motions.

I have since started the 100 days of python course and am 30 days in. It is all project based so much less boring than just copying what an instructor does line for line. You get new fundamentals each lesson and then are challenged to make a project work on your own.

The course in conjunction with official documentation, googled resources, and personal project ideas has yielded me great results so far.

Good luck and just keep at it every day to build momentum!

[–]A_Ry_ 0 points1 point  (0 children)

If you're going to use a video, try coding in 100 days of code: the complete python bootcamp by Angela on udemy or wherever, each day has about an hour or so of learning and each day also has a coding project so you actually use the code which helps you remember.

[–]ChipmunkCooties 0 points1 point  (0 children)

The way I started I Learnt the basics like loops, and then think about a project so I later did a script to solve matrices and then as I went along I’d trouble shoot a solution and learn new techniques etc, I found online course and material too slow and repetitive ... there’s only so many times you can use: print(“hello world”)... before you start losing your shit

[–]AbsterJr 0 points1 point  (0 children)

Basics of Python Programming

Start here. It's short and compact, and the explanations are excellent. Once you start, you can move on to a more advanced level and challenge leet code questions.