Python seems destined to become the de facto programming language of the world. Python’s simplicity and flexibility are its two key features. It is simple to learn, read, and share because of its simple syntax and usage of indented spaces. Python users have uploaded 145,000 custom-built software packages to an online repository. You can use these packages to do everything from make a beautiful user interface to scraping the web for information you want. But it will be up to you to read the documentation on these libraries.
Before we get started here, I have to level with you.
Your biggest challenge with programming 100% will be maintaining motivation and having grit when the going gets tough. It’s going to get tough. But like with a lot of tough stuff in life, it’s immensely rewarding. Having the right teachers and interesting course material are game-changers.
For resources, one of the best I’ve found on the web are the online interactive textbook for the CS 1 course at Dartmouth called Project Python. If you do one or two of these assignments a week for a couple of months, you’ll be well on your way to having more Python skills than 99% of the workforce. I’ve also heard awesome things about the Harvard CS50 course. Both of these resources do an awesome job at explaining programming logic in plain english.
Five things you need to know before learning Python
1. What is Python?
Here’s the fancy definition from Python.org:
“Python is an interpreted, object-oriented, high-level programming language with dynamic semantics. Its high-level built in data structures, combined with dynamic typing and dynamic binding, make it very attractive for Rapid Application Development, as well as for use as a scripting or glue language to connect existing components together. Python’s simple, easy to learn syntax emphasizes readability and therefore reduces the cost of program maintenance.”
Right. Let’s go ahead and put some of those terms into plain English:
Interpreted: not expressed in the language of the ‘target machine’, has to be translated to 1s and 0s by a third party program. The opposite of compiled, which needs no intermediary. Interpreted languages are slower than compiled languages.
High Level: doesn’t require the programmer to do some of the nitty-gritty programming stuff like memory allocation- this stuff is hidden from the programmer.
Dynamic Semantics: states of information and variables can change within the program.
Rapid Application Development: You can build useful stuff with this really fast. Imagine you’re a business and you want to get your software to market faster than your competitors so you can establish market share- this comes in handy.
Scripting/glue language: You can use it to complete tasks on your operating system. For example, you can write a program to open browsers on your computer and scrape the web for information.
Finally, yes- it was named after the Monty Python comedy films of the 1970s. They were a favorite of the language’s founder, Guido van Rossum.
Why python is so popular
Python is popular because the programming language is closer to the natural language that you and I speak everyday. Doing simple things like printing text on the computer screen only need very simple commands, like print(). In other languages, simple commands can be more complicated.
[java vs python print statement]
Python has also become quite popular in the Big Data & Analytics space. Python has libraries (little tools you can import easily) that can quickly do data analysis and visualization. Python also has libraries for doing Machine Learning and Artificial Intelligence tasks, which developers can use to create valuable tech products.
Python is also a high-level programming language, meaning you the programmer don’t have to worry about nitty gritty details like memory allocation. It’s like learning an easy language like Spanish instead of Arabic, where you’d have to worry about scores of foreign grammatical rules to speak it correctly.
2. Learn how to program, not ‘Learn Python’
Too often we see people put ‘python’ or ‘java’ or ‘SQL’ on their resumes, but what’s more valuable to know is how good of a computer programmer someone is. Programming languages are simply tools of the trade- the transferable skills between all languages are programming skills. You may have heard something like ‘all programming languages are the same.’ What does this mean?
It means that you as a programmer generally know how to make computers complete tasks, regardless of the language you’re coding in. If you look at undergraduate computer science coursework at places like MIT, you’ll see courses titled “Algorithms” or “Software Engineering II” and not “Python” or “C++”. Knowing how an algorithm works for a computer to solve a task is more valuable than knowing what the Python command for making an array is. Once you’ve been trained to think like a programmer, the language you’re programming in is that last 10% of what you actually need to know.
Software engineers often have to learn new programming languages on the fly at their jobs, but they’re able to do so because they have that foundational programming knowledge.
3. If you become a solid Python programmer, you’ll be indispensable in the workforce
What makes you more valuable as an employee is when you have a skill that not many others have. You can become the go-to for things that people need done. While this can be annoying, it increases your bargaining power as an employee.
Not everyone knows how to program. Why? Because….
Google is your friend
Comment/document for the future version of you that’s going to read the code
4. Learning to program is hard
It’s going to suck for a while. For me, it seemed like every line I wrote had a bug, and when I tried to run even the most simple of programs it took me hours to get things to work.
But it is sooooo worth it to have the skillset.
5. Python has shortcomings and should be just one of the tools in your programming toolset
More experienced programmers often roll their eyes while everyone else raves about Python. Python does have some severe limitations- namely, speed. This has to do with its memory allocation schema. If we pictured computer memory and storage as seats in a movie theater, Python would be the annoying mom that blocks off 20 seats so her family of 8 can have enough room. C or C# would be the guy that’s flying solo and can sit anywhere.
Do a quick search of your favorite software- i.e. “what language is the Uber app built with”? Most the time, you won’t see Python. It’s because it has trouble performing efficiently on a mass scale.
My experience learning python
In my own experience, I took undergraduate computer science courses at the university I was attending for my MBA. The MBA program I was at took some convincing that undergrad CS courses can and should count toward my MBA. I knew I wanted to graduate with a broad management skillset, but I also wanted to have a sharp hard skillset to be a product manager.
The intro level course for programming at my university was known for being intense, and required 25 hours a week of work minimum. I was up to the challenge. Initially it felt weird to be an MBA student in his mid thirties taking an intro CS class alongside some Ivy League teenagers. I got a lot of “are you a non-traditional student?” or “you’re one of the graduate TAs, right?”
The first one or two assignments were doable in a couple of hours, but they quickly got a lot tougher than that. My course was using the Project Python online interactive textbook. But things got tougher. I had to write a GPS that used linked lists to find the fastest course around a map of campus- I had to write a natural language processing program. My course had office hours every single day, and every single day I found myself making the cold trek across campus just to get one step further on my assignment. When I was able to complete those assignments, they felt like massive wins. My regular business school coursework started to fall onto the back burner.
I went on to take the next course in the sequence, object oriented programming, which was in java (the language, not the island in Indonesia). That took up 30-40 hours of each week. Then I started the next course, intro to software design and development, which was in C and took 50 hours a week. Halfway through that term, I cried uncle and quit. I was spending almost no time at all on my business school coursework, which I was paying sky high tuition for.
Product management and programming experience
As a product manager now, I’m a lot better at knowing how much effort developing a certain feature will take from a software engineering perspective. I used to shy away from any program-oriented task, but now I can do some things to pull information or automate processes regularly. I’m able to say ‘yes’ more when people ask me to pull data and do some analysis on that data. Things like SQL seem easy after some of the assignments I had in my python programming course.
Remember that learning Python is a marathon- just take it one moment at a time. Something like PyCharm or another development environment will help you better visualize your variables and spot bugs. If you hit a block and are frustrated, enlist the help of someone more knowledgeable than you, and don’t be afraid to Google away and scour the internet. 90% of programming is Googling and searching stack overflow to see if another programmer has faced the same problem and gotten an answer. If you’re stuck, it helps to step away from your computer and exit whatever mental model you might be stuck in.