Home   |    Blog   |    Contact

Conquer Programming with Python

I've taught Python to thousands of people around the world. For 30 years I've been writing about and teaching programming, including 25 years at NeXT/Apple. After years of honing my content and skills, I've learned what people of different experience levels need in a Python class.

Corporate Remote & In-person team-based training

For corporations, I provide live remote training for up to 5 students, or in-person team-based training for up to 50 students, customized to the programming level and interests of the students. I've taught thousands of corporate employees, including QA Engineers, Data Scientists, Program Managers, and professional programmers.

Charitable Orgs Remote & In-person team-based training

For charitable and educational orgs, I provide live remote training for up to 5 students for free, or in-person team-based training for up to 50 students for a discounted fee of $500/day and expenses, customized to the programming level and interests of the students.

Personal remote training

Regular classes for New and Experienced Programmers. 10 2-hour sessions of five students, for $200/student (price to go up soon!)

Scholarships for in-need folks

I set aside at least one seat per public class for people who can't afford a class or are part of a charitable org. I want everyone to succeed, and to learn how to program. If this means you, contact me and I'll put you on the list.

New programmer?

If you're new to programming, you need a kind and patient guiding hand. I've taught many DevOps folks, QA Engineers, Project Managers, Designers and others who needed to learn programming from scratch. My curriculum for new programmers is focused on gently taking you step by step through the process, giving you lots of chances to try things out and ask questions.

By the end of the class, you will be able to read in a spreadsheet file, process the data, and output a report about it. Or, if you have other requirements, I'll develop a project based on your needs.

Class details

Length: 2-5 days, depending on options chosen. Where possible, doing them in half-day segments tends to work best for new programmers, keeping them from being overwhelmed and giving them time to absorb things. The two-day option will introduce people to programming and is useful in time-constrained circumstances, but in my experience if you actually want to turn a student into a real programmer, they need more time and practice. So I recommend a minimum of three days.

Approach: Each topic starts with a very interactive, discussion-based lecture where I do live coding to explain concepts, punctuated by short student exercises to help students absorb the mechanics. These are followed by more challenging team-based exercise projects that combine two or three concepts to accomplish a realistic programming task. We regularly review the concepts learned so far and students have plenty of opportunity to ask about anything that needs more discussion.

Experienced programmer?

This class is aimed at people with a comfortable familiarity with programming, but doesn't require any prior knowledge of Python.

We all do that weekend thing

You know, where there's some task you want to do and you decide to try out that language you've been hearing about. You run through a quick tutorial, or just grab some existing code and start tweaking it. You might read some docs if you run into a wall, but probably you'll go to StackOverflow and grab some code there and drop it in.

Eventually you kind of feel like a "Python programmer" but it niggles at you that you've been copying and pasting these "comprehension things" but you aren't actually sure what they do. Then you run into a function that throws an exception when you'd usually expect a return value indicating the error, and you don't want to have to figure out exception handling just so you can use this function...

This class is the cure. You'll learn how things actually work, and you'll get a number of aha! moments as previously mysterious functionality suddenly makes sense.

I take you rapidly through the basics while also providing fundamentals usually not covered in tutorials. Then we get to the fun stuff -- best practices and habits I've developed over the years that will make you an excellent Python programmer out of the gate.

Class details

Length: 2-3 days, depending on options chosen.

Approach: Each topic starts with a very interactive, discussion-based lecture where I do live coding to explain concepts, punctuated by student exercises. The level of depth for each topic, and what optional topics we cover, is heavily influenced by the interest and needs of the students. Students receive book-length HTML and Jupyter Notebook files of the entire class content.

Recommendations

Other people you should learn from!

Python:

  • Automate the Boring Stuff With Python: I love Al Sweigart's approach and writing. This is the book I wish I'd written for learning Python.
  • Fluent Python: Luciano Ramalho's book started me down the path of learning the true Zen of Python. Deep yet readable, this is essential reading after you've learned the basics of Python.
  • Web Scraping with Python: Collecting More Data from the Modern Web: Ryan Mitchell's book taught me what I know about accessing the web with Python. She's an expert at extracting data from stubborn web pages.
  • Data School: I met Kevin Markham when I took his tutorial at PyCon. Great guy, and this is a great place to go to learn Data Science techniques in Python.

Swift:

  • DimSumThinking: Daniel Steinberg was the original guy we hired to do Objective-C training at Apple, and he was my go-to guy when we needed someone to consult on a project. If you need to learn Swift, Daniel is the guy to talk to.

About this website

This is an old-fashioned website. Quick-loading, no cookies, no social media link bars or any of that jazz. Authored in Jupyter Notebooks using the Markdown format, with a custom Python script (of course!) to parse the source and generate the site.

Logo by jajangahmad053@gmail.com.