Published on

The Python Powerhouse Plan

Authors
    avatar

    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

Kite

Sonarlint

Black (Python formatter)

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!)

Pycharm

Sublime

GNU Emacs

VIM (Available on linux/mac)

Setup

Learn VIM

Industry Info

Google Python style guide

Interview prep problems

Leetcode (Just grind on miserable problems, it helps)

HackerRank (Redhat actually used this site on me)

Algorithms and other programming paradigms

Top 50 Dynamic Programming Practice Problems

Algorithms written in Python

Functional programming

Want an email when we post?

Free, weekly at most. We hate spam too.