- Published on
The Python Powerhouse Plan
- Authors
John Partee
Python is great. I haven't seen a better way to teach folks programming without getting wrapped up in syntax. Here's my list of Python resources I like, for mostly free.
Beginner recommendations
Nervous using loops? Haven’t written a function?
Start here: SoloLearn Python Course
Work through the whole course. The android app is good too! This is gamified, and feels like Duolingo for code. The free version is fine. If you don’t like learning that way, skip on to one of these next two options:
Before moving on, pick a real IDE and get it set up right. You want a linter, a code formatter, and maybe Tab9/Sonarlint. Ask someone you trust for recommendations, and try them out. Don’t use Jupyter… You’ll see why! (I like VSCode, see here for my setup: VSCode Sensible Defaults)
If you prefer videos, go for this course: Automate the Boring Stuff Videos
Keep checking that link, it is free 1-2 times a month.
If you prefer to read, the book is available at Automate the Boring Stuff Book
The best course is the one you finish! Pick one and stick to it. Automate the boring stuff has some awesome application problems towards the end to get you experience. Either way, once you understand datatypes and how programs flow, pick a project and code it through end to end. Scrape something, write it to a db or google docs, etc.
Intermediate-Advanced recommendations
I know the syntax! Now what?
You need problem solving experience.
I like these sites:
Start with Exercism.io. This teaches TDD! Join mentored if you can.
If you get bored with exercism (or frustrated, it happens!), try out CodeWars, which is in-browser. Nice if you’re bored at work!
If you like math, try out Project Euler. These problems can be done in any language, and they’re hard. So they’re fun!
When you aren’t solving these little problems, find a way to apply the language, or make something more efficient. Ideas:
- Package a workflow in Flask, and throw it “in the cloud”.
- Need to scrape a few hundred (+?) links? Figure out how to do it with asyncio
- Find a problem that needs parellelized, and do it.
- Multiprocessing or threading? What about outside libraries? Cython? Ray?
- Does asyncio fit in here?
- What about serverless models? Could you set one up for prediction?
- Write a python package if you can find a need! Get it up on pip/github.
Learn industry tools and practices
“The Missing Semester of Your CS Education”
The Pragmatic Programmer (The audiobook on Audible is really good, surprisingly)
Extra Goodies
Good newsletters/resources:
Real Python - I actually like their newsletter! This place has some awesome tutorials and examples too.
Better Programming (Medium) - Some good stuff sometimes. Anybody can publish on medium, so take it with a lot of salt. Towards data science is okay for the most part too, I just like the python blogs over the rest.
IDE Tools
VSCode liveshare (Lets you and your friends work from one IDE window, it’s rad)
Other IDEs (It’s worth your time to try a few and see what you like. There is no right answer!)
VIM (Available on linux/mac)
Industry Info
Interview prep problems
Leetcode (Just grind on miserable problems, it helps)
HackerRank (Redhat actually used this site on me)