Hey, it’s Kris.
Right now it’s Tuesday, May 28th. I’m sitting at my dining room table typing this. My daughter is next to me sitting in her booster seat. She’s got the iPad and she’s watching one of her shows right now. She switches between episodes, and shows, even apps, so well. She’s 2.5. It’s amazing how kids are whizzes with technology. Technology is going to be insane in 20 years, which is cool because she’s part of the generation that’s gonna make the most it.
So in 2016 I got started with Python. This wasn’t my first try with programming. I took Java in college. But I sucked so bad. I liked programming, though, because I understood it. I got for loops, while loops, and functions… I got classes, objects, and inheritance… I got it. But I couldn’t actually program. Here’s the funny part…
I was an SCCM engineer for 7 years and scripting was a big part of that.
I mainly wrote command line and PowerShell scripts since I was managing thousands of Windows machines. And I was good enough with cmd line and PowerShell scripting that it made me want to try programming again. But not Java. Java can take a hike… (Side note: Try another programming language if the first one doesn’t work out.)
Google search results persuaded me to try Python. I heard about Python, but I knew nothing about it. All I remember is people talking about Python like it was the Amazon.com of programming languages. So I went with it.
Eventually, I came across two resources that I’ll mention here in a second… First I need to say this:
Forget if you failed at programming before. You’re gonna rock after this. And if you have no programming experience… you’re gonna rock, too. I’m going to show you the two Python resources that taught this crappy programmer (ME!) how to get pretty damn good with Python. Ok? So that’s what this post is about.
So let’s get to it…
The Only Two Resources You Need To Become Instantly Productive With Python (Plus, They’re Free)
Automate The Boring Stuff… The Antidote For Failed Programmers… The Fast Track For New Ones.
After settling on Python, I’m pretty sure I Googled something like “Python for beginners”. Next, in the search results, if I recall correctly, was a reddit thread talking about the best place for a beginner to start.
That’s how I was introduced to Al Sweigart’s Automate The Boring Stuff (ATBS) site.
Besides it being completely free, Automate The Boring Stuff is the new-to-programming starter’s guide. I needed that more than ever since I failed at Java (seriously… I had to retake Java II because I got an F my sophomore year).
The only way for me to really learn programming was to pretend I never learned it at all. Treat this like it was brand new. So if you’ve failed with any programming language before, I hope you’re paying attention.
This mindset trick helped me put aside any doubt I might have since I sucked at Java. I didn’t want to start out thinking about failing. Plus, this mindset let me not skip over anything. So if there was a concept, like loops, that I was familiar with, I still took the time to re-learn it. And here’s why…
Before I started ATBS, I didn’t know why I stunk at Java. Yes, I was mostly to blame because I put in shitty effort, but there was something else (which I did figure out after going through ATBS) and I wasn’t going to let it slip by me again.
Along with practical lessons in Python with ATBS… you’re also getting an understanding of the programmer’s mindset. What that means is… you learn how to think logically – determine the result you want, and line-by-line, how to get that result.
Say you need a program to print user information… you’ll have to code up a couple lines that ask for that input first. Input could be anything, like a name or a city.
The program can only print name or city if the program has that info, right? What if it doesn’t have that info? Then the program should tell you “I don’t have that info, dude! Enter it now, please.”
Get it? That’s the programmer’s mindset – If this, then that. This is what I was missing when I took Java.
ATBS finishes off each chapter with practice projects, too. Use them to reinforce what you just learned. Seriously. Do them.
There’s nothing worse than someone teaching you a bunch of “how to” stuff and then leaving you clueless on the big picture. Like “Thanks for showing me how to make a list. But what’s the practicality of it?” That’s the most important part of learning – seeing the bigger picture and where everything fits in. ATBS doesn’t leave you hanging like that. Take advantage of it. Burn this stuff into your brain.
I read a tweet this morning that sums this up perfectly:
Corey Schafer’s Python Tutorials: The Secret To Next-Level Python Skills
After ATBS, I needed more (if you get addicted to Python from ATBS like I did , then so will you). And that’s where Corey’s YouTube Channel comes in clutch.
Corey’s videos were the fourth gear I needed. Here’s what I mean…
ATBS gets you automating tasks with Python and gets you understanding programming… but Corey’s videos… are where you go when you want to go deep with Python. And that’s what I’ll explain now…
The key difference between these two training resources is this: ATBS introduces you to programming mindset and automation, and it uses Python to do that; Corey’s training videos go deeper into Python strengths.
Corey’s videos focus more on what Python is than what programming is. Does that make sense? In other words, he leans into Python’s strengths. That’s Corey’s bread and butter. ATBS, on the other hand, is focused on teaching programming logic and automating tasks with Python.
Let’s say we were talking about iPhone photography…
ATBS is kinda like the training program that shows you how to take great photos with your iPhone without needing any prior photography knowledge or experience. That’s because, along the way, you’ll learn how to think like a photographer. And so by the end of this training, you will know:
- several lighting tricks so you never have a shadowy photo
- cropping tricks in case something got in the shot and a reshoot isn’t an option
- poses and facial expressions that give off exact looks you want from your subjects
Basically, this sorta iPhone photo training gets you using the camera in “auto” mode better than 99% of other people who take pictures with their iPhone.
But, when you’re ready to graduate… and you want to extract the full potential from the iPhone camera… then you have to get intimate with the iPhone camera, not just photography.
You have to get to the points of differentiation. In this case, the points of differentiation are the answer to, “So, why an iPhone camera over something else?” Right? And the answer would be whatever strengths the iPhone camera had over other phones and cameras. If you want Portait Mode, you have to go with iPhone.
And this is the shift you need to make after ATBS. This is a natural progression for anything you want to learn more about, right?
In our case, the points of differentiation come from a question like, “Why Python and not Java?”
You go to Corey’s videos to learn “Why Python and not Java?” That’s not a dig on Java (I’ll do that another time). Each language has their strengths. Like if you want code readability, you want Python.
And that’s the next level for you – you need to see why we needed Python in the first place. In other words, what programming limitations did Python resolve? The answer to that question are Python’s strengths.
So what am I talking about? What Python strengths does he lean into exactly? Here’s a few:
- Virtual Environments
- Web App development
He’s got a lot more, but those are just some examples of leaning into Python strengths.
BONUS TIP – How To Avoid Distractions When You’re Learning Python
Follow ATBS exactly. Learn how to think like a programmer with Python. Then start going through Corey’s video training.
It’s very easy to get caught up in the “best this” and “best that” wars in the comments of a Reddit post. I’m going to save you time. And please use this time to get better while everyone else gets into their feature wars.
This is what I’m talking about…
You’ll see that ATBS starts you out coding in Python’s native IDLE (Integrated Development and Learning Environment ). IDLE gets the “IDE” label for some reason… but don’t be confused – it’s nothing like PyCharm or VSCode.
But hold your horses… start with IDLE. You want simplicity when you start. If you start comparing IDE’s before you even start coding, then you’re in the wrong mindset.
When you go beyond automating tasks and into Python projects, yes, you want a feature-rich IDE. If not for the ability to code in a dark theme, then for version control that integrates with your GitHub repo (which is just as important as having a dark theme 😁).
Answers to questions like “which IDE is best” will come to you as you learn more about Python and… more about yourself. You’ll start having your own opinions on what matters to you when you’re coding.
And honestly, don’t even worry about code editors at this point. You’ll see that Corey uses Sublime Text. But stick with IDLE for ATBS. Because you need to type every damn variable name, every damn function name, import statement… Everything. All of it.
No intellisense shortcuts for now. Force yourself to type it all out in IDLE and you’ll be amazed at what your fingers start doing in just 30 days…
Your hands will just start typing code all by themselves because of the repetition. I mean it.
Before You Go…
If you had to instantly become productive with Python, these are the best two starting points. They’re free. But don’t let that trick you into thinking they’re cheap. I would much rather have given my undergrad tuition to Al Sweigart and Corey Schafer for their content than the garbage they taught Comp Sci majors at West Chester University.
Your appreciation means the world to me. If you’d let me know what you liked best about this post, please let me know in the comments below.
If you know someone who might find this helpful, please share this with them. There’s nothing worse than searching the internet just to read 30 opinions and still wind up without your mind made up. Sharing this would help them a ton because I know this would have saved me a ton of time back in the day.
Catch you later,
P.S. I know zero about photography. For those that know more than zero, you may make fun of my in the comments 😉