Learning Python

“The Hand That Rocks the Cradle Is the Hand That Rules the World” is a poem by William Ross Wallace that praises motherhood as the preeminent force for change in the world.

Today, we live in a world where computers reign supreme. To have a mastery of technology is to have control of everything else. At this particular confluence of space and time, it is the skill to have. No other one thing opens as many doors, invites as many opportunities, or demands as high an income as a strong understanding of — and the ability to apply — the various computer sciences.

Just this year Software Developer was named the “#1 best job” by US News and World Report, and for good reason. It is software development, and it’s associated disciplines, that allows me to live the lifestyle I do. With a simple laptop computer and occasional Internet connection, it is possible — easy even — to travel the world whilst working for a large corporation or tiny hipster startup. You set your own hours, live on your own terms, and constantly fight off the recruiters trying to offer you even more money to work for someone new.

To work for a California-based company, while living in European hostels or short-term AirBnB rentals, does a fun lifestyle make. By living so far below your means, the threat of getting fired carries no weight. When an employer becomes aware of your freedom, the traditional roles immediately reverse. Instead of you bending to your employer’s will — desperately clinging on to the paycheck that is needed to keep the refrigerator stocked and the rent paid, your employer instead bends to your will — allowing you to do as you please, so long as the work is eventually done, lest you abruptly leave for one of the many other companies who have been incessantly begging you to take their money instead.

Like all journeys in life, there are many ways to this destination. There are over 250 popular programming languages, of some nine thousand to have ever existed. If you choose to pursue this path, you must for yourself decide which of the computer sciences to study.

I can say this much: between C and Python, all things are possible. C alone is powerful enough to do anything — it is The One Ring, Excalibur, Mjölnir — and is the weapon of choice for leveling mountains and creating the kernels of all major operating systems, including BSD, Linux, macOS, and Windows. But with great power comes great responsibility: writing correct C is difficult and painful, and, from a security standpoint, impossible.

But Python alone will get you over 99% of whatever you could possibly want, and is far easier to learn and use.

With the tools listed and explained below you will have everything you need to master what I believe is the single best general purpose interpreted language to have ever existed.

Python is magic, and the spell books are laying open eagerly awaiting you. A lifetime of happenstance and circumstance has brought you here and now to this page. Could your life be forever changed from a few short paragraphs written by a bat? You have read this far, perhaps a little further still?

1. Python (Free)

The Python interpreter is all you need. By taking advantage of the excellent built-in help function, which is prominently advertised at every startup, this alone is enough. Every other tool explained below only makes the job easier, but it is completely possible — and practical — for a diligent and eager student to master this language using only what’s provided by the language interpreter itself.

2. Thonny (Free)

Thonny is an extremely simple integrated development environment (IDE) with a unique style of single-instruction step debugging and stack visualization. By using Thonny, it becomes immediately obvious how Python evaluates statements and expressions, manages memory, and uses the stack to jump execution around and between functions and classes. Thonny includes a copy of its own Python interpreter, so it can be used stand-alone, with no other requirements, if one choses to do so. Thonny is designed specifically as an educational product, and excels at this purpose.

3. Visual Studio Code (Free)

VSCode is a fully featured code editor, with some IDE functionality. It’s a Microsoft product, and is one of their first open-source cross-platform endeavours. Microsoft is serious about coding, and this product is evidence of that. It’s not quite as feature-rich as PyCharm, but it supports many popular languages and has a massive collection of high-quality extensions. While Thonny (above) is excellent for learning the basics of Python, VSCode is the kind of tool you should be using to actually get stuff done.

The extensions provide features such as auto code formatting and completion, plus quick access to documentation. This is hands-down my favorite code editor, and works extremely well for Python.

I recommend the following extensions:


4. Dash (€27.99) or Zeal (Free)

Dash and Zeal are offline documentation browsers. Once installed, you are able to download local documentation collections for any of a large number of technologies, and have them available to you offline. The applications provide beautiful interfaces for browsing and searching, and integrate into code editors such as VSCode (above).

Having offline documentation makes coding much easier, especially for travelers who may not always be near a reliable Internet source.

5. Pluralsight (Subscription) or PythonByteSize (Free)

Pluralsight is a commercial educational video subscription service, which costs $35/month. This service provides high-quality courses on a large number of computer science topics, and is an invaluable resource worth every penny of the asking price. While much of what is taught on Pluralsight is available for free, in one form or another, elsewhere, the information here is curated into high-quality collections, and presented in a way that makes absorbing the information easy.

The Pluralsight Web GUI is only available online, but once the application is installed individual courses can be downloaded locally and viewed offline, anytime.

While I do insist that the Pluralsight Python videos are worth the price, if you would rather stick to free resources then PythonByteSize is the next best thing.

6. Git (Free)

The Git version-control system is not strictly required for learning Python or any other language, but it is good practice. Git is one of those magical tools that you start to use for everything, once you get a feel for how it works and what it can do. If you are going to be learning any programming language you really should learn Git at the same time.

A lot of tools, like VSCode (above), are going to assume you already have it installed, and complain when it can’t be found. Some of the features of code editors and IDEs require Git to even function.

You have the opportunity — right now, at this very moment — to set into motion a series of events that will transform you into a powerful, sought-after, well-paid developer or consultant. If you have read this far, then this is something you likely already know, and perhaps have been thinking about for some time.

The resources are all here — freely available — ready to be utilized.

Stop making excuses.