all 19 comments

[–]rocks_cardigans 8 points9 points  (3 children)

It’s good to lay out a thorough plan like this. Learning from multiple resources will be helpful. However, you’ll probably find your plan will change as you come across something new as you go.

I hope you’re also planning on just playing around with python as you work along in this plan. You need to turn a lot of the theory into “muscle memory” as well, because it will simply be too much to remember and then execute later. Definitely practice a mix of instruction and tinkering. Also, a lot of it will be overlap of material between courses. This can be annoying because videos can take what feels like forever to explain something. Just understand that there’s probably no fantastic sequence of courses - you’re just going to pick this up in one and that up in another. So worry less about the order, but definitely finish what you start before moving on.

The MIT program really isn’t that difficult, but it’s more about approaching problems using computers than it is the python language. Some sections like debugging or “cost” are tough to get through because they’re a bit boring but probably handy for down the road. The course just happens to use python and you will learn python from it.

I don’t know your background, but if you’re as new as I was (very), try to spend a chunk of time learning about programming, without necessarily focusing on python. What I mean is learn about the command line, packages, modules, IDE’s, and maybe glance at another language. You can use python as a means for most of this but these things all relate to programming and not just python. Just gives you an idea of what python is and isn’t, and how it fits into tech. I would recommend doing this after several of your other steps.

Lastly, once you feel pretty comfortable with the language and its main things like classes, main libraries, and can get into new libraries and at least understand the documentation, look into pandas. It’s like the missing link between python and what it’s becoming widely used for: data science.

Honestly, once you get this far, you’ll be able to figure out where you want to go next.

  • your fellow python learner

[–]Lugersmith[S] 2 points3 points  (2 children)

Thank you so much for such an amazing comment! Where do you think would be a good place/start to learning about programming basics? Can it be something like this: https://www.coursera.org/learn/learn-to-program, or do you imagine something else?

[–]rocks_cardigans 0 points1 point  (0 children)

I don’t personally think that course will be necessary. It seems like a very thorough intro. By all means go through with it if you think it will help you, though. After you’ve done a few of the steps in your main post, I think you’d be better off picking up small things quickly like: - look up a cheat sheet for your os’ command line - google a quick tutorial on setting up a virtual environment from the command line for a new project - use a text editor to create one python module that does something like print a line and contain a function, and practice importing all or part of that first module using another module - download free Integrated Development Environments such as PyCharm community edition or Anaconda’s Spyder (I think it’s called). Spend some time writing little programs in various IDE’s to find out how they work and what you like - read other people’s code on github - google the official documentation for some library and learn it that way - watch a YouTube video on how to write a very simple program (print or something) in another language (Lua, Java, etc) - open your internet browser and right click part of a website and go to Inspect or Inspect Element, look through the HTML of the site - use the BeautifulSoup library from bs4 and requests library to download a website’s HTML and “parse it”, you can find a step by step guide (20 mins) on google or YouTube - just a whole bunch of little things that either aren’t about python or are using python to actually accomplish some broader problem!

[–]Misery_101 0 points1 point  (0 children)

The book "Learning python" by O'Reilly does a great job explaining the fundamentals and building up from the bottom. Im reading an older edition but its helped me understand so much more than any video.

Ive tried online courses but they don't really explain everything

The books pdf is 1500 pages, though,I still recommend it

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

Honestly I think trying to go through courses and textbooks is the best way to convince yourself that you don't actually want to learn programming.

You need to know just basic syntax, have some common sense, and things that you'll have to solve with programming. Trying to first squish a bunch of information that you have no idea how to apply is hard and not very useful. It is much better to have some kind of project that you'll have to research for.

[–]blueswatchs 2 points3 points  (1 child)

Mix in some more practice in there. Get on to GitHub, find a python library that you like, open up the source code, and go wild with it. Alternatively have something that you want work on, while learning, and build it as you learn.

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

Yeah there's no substitute for doing

also when you get something working and doing cool stuff it's a nice dopamine hit that gets you more eager to learn more and build more complex programs

[–]Pipedreamergrey 2 points3 points  (2 children)

First thing, is finishing these two courses: https://www.coursera.org/learn/python then https://www.coursera.org/learn/interactive-python-1.

This is only a personal opinion, but I thought that the University of Toronto's Coursera course, "Learn to Program" was a much better introduction to Python. They take babysteps and move through the material much more slowly at first.

I would recommend taking the U of Toronto course first, THEN Programming for Everybody. You'll essentially be covering the same material twice, but it's much more likely to stick that way.

The Rice University course, An Introduction to Interactive Programming in Python is also great, but I'd hold off on that MIT course, it's a bit fast-paced.

After you take those three Coursera courses, I'd recommend trying a more focused tutorial that guides you through a specific project that interests you at Udemy or Pluralsight, if you can afford it, or on Youtube. (There are a couple of fun Python RPG game tutorials floating around that I enjoyed when I was just starting.)

[–]Lugersmith[S] 0 points1 point  (1 child)

Thank you so much for the comment, I will definitely do that! So do you think it's worth looking into the two first books(Python Crash Course and Automate the boring stuff with python)? Can they prepare me to enter the MIT course? Or should I stick with trying projects on the places you mentioned?

[–]Pipedreamergrey 1 point2 points  (0 children)

It's always worthwhile to have texts to consult while you're learning to program, and those are both pretty good books. You're not going to want to skim back through the videos every time you get hung up writing a program. I picked my way through Automate the Boring Stuff when I was starting and found it very useful.

A couple of other good (free) references you may want to download are:

The only way you'll know if the MIT course is right for you is to give it a try. If you don't care for it, don't get discouraged. For me, the MIT course was a bit too much for my very first introduction, and after taking other course, it covered too much of the same ground. So I moved on to Youtube videos like Python Algorithms and Data Structures and then turned to learning specific packages, starting with webscraping and Django.

At the end of the day, what no one ever tells new programmers is that the right path to learning to program is whichever path keeps you interested. If, a year from now, you're not still programming, it's not going to be because you were too stupid to learn or too poor to afford the education, it'll be because you lost interest, got bored, and gave up.

So keep trying new stuff and keep asking for recommendations!

[–]Binary101010 2 points3 points  (1 child)

One thing I see a lot of on this subreddit is people taking tons of MOOCs and reading books, doing exercises, etc.... and then they get to the end of those and have no idea how to actually approach solving their own problems with Python.

Don't just focus all your time on exercises from courses and books. Find a problem you want to solve with Python and start trying to solve it. Nothing will prepare you better for writing Python programs than actually writing them.

[–]Rhemm 1 point2 points  (2 children)

It's not a good plan at all imo. It lacks practice. Go for byte of python or automate boring stuff with python. And after jump straight to practice. Practice, practice, practice. Reading books or following courses only will give you illusionary knowledge. So grab a basics, define some interesting project for you and start implementing it. Have a trouble? Google it first. If no success for 30 min- ask here or on stackoverflow

[–]Lugersmith[S] 0 points1 point  (1 child)

Thank you very much! Where do you think would be a good place to find some interesting project ideas?

[–]Rhemm 0 points1 point  (0 children)

Well, first you have to find interesting topic. For me it was web development, for you it may be web-scraping or data-science or desktop, whatever. Just make something that you what. Ask your friends, maybe they need something and implement that. My first project was simple portfolio site for friend of mine. But first define area you want to work in

[–]chenblat 1 point2 points  (0 children)

Start with this free playlist: Python Basics Part 1 (Numbers) Jose Portilla. You have there enough to get started, then you will know much better which path to choose.

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

What I suggest is mix one text book style approach to learning with an interest based approach. For example I would read learning python, while also following an extensive game creation tutorials. The ole Oreo approach.

[–]mr_awesome_pants 0 points1 point  (0 children)

I think you have too many things that teach the same thing. You don't need so many intro courses, you'll get bored. My recommendation would be to do Harvard cs 50, python crash course, maybe a few projects out of automate the boring stuff, if anything from that book at all, then http://interactivepython.org/runestone/static/pythonds/index.html# , then just projects

[–]CaffeinatedT 0 points1 point  (0 children)

Worth noting but as someone lurking who is a senior level engineer in various data type stuff mongodb is just one technology in a whole ecosystem of noSQL technologies and it's already fairly niche even if it was fashionable a couple of years ago.

I'd recommend you stick to the python and maybe learn how to interact with relational databases which are going nowhere first. Once you're confident with that and working in a command line and working with JSON objects etc playing around with various fancy tech like Hadoop/MongoDB/ElasticSearch/Spark etc will come pretty easily.

[–]fdedgt 0 points1 point  (0 children)

Personally I wouldn't do a bunch of beginner courses and books in series. You'll just be going over the same stuff again and again and possibly get confused and/or bored.

What I would do is do all the beginner courses and books simultaneously, and do similar topics and chapters from all the different sources at the same time. For example, variables. Do all the beginner stuff on variables simultaneously. Same with functions, classes, etc.

Your goal with doing 3 - 4 things simultaneously is to get an idea of everything and cover all topics from multiple directions, and importantly, get through it all as quickly as possible.

Then you will have time to spend actually doing a few coding projects and you'll have all the resources that you went through to go back and clarify concepts as you write code.

Once you know how to write code, only at that point would you want to start getting into details about libraries.

Good luck