Becoming a Python developer means learning much more than the Python language itself. It means learning how to use an entire set of tools as well as frameworks, which are sets of code written by other developers that you add into your program.
There are generally two career paths for Python developers:
- Full stack web developers: These are people who write web applications.
- Data engineers.
If you’re new to programming altogether, your best bet will be to take a course in Python development or buy a book and work through it. You’ll want to make sure you learn the basics of programming, which apply to any language: variables, types (including Python’s built-in types), loops, if statements, functions, and classes.
If you already know another language, you’ll want to learn Python’s syntax, which is quite different from other languages. Languages such as C++, C#, and Java use “curly bracket” syntax. Python, on the other hand, relies on indentation to specify inner blocks of code.
Learning the language is just part of it, because knowing the language itself won’t land you a job. Let’s see what else you need to learn, focusing in particular on Python in the context of full-stack web development.
Wait, What Does ‘Full Stack’ Mean?
A full-stack web developer creates web applications. There are multiple parts to these applications, including the “front end” (which consists of the pages displaying in a browser as well as code that runs inside the browser) and the “back end,” which is the code running on the web server connected to the browser (additionally, the back end typically connects to a database).
Different parts of an application make up what developers consider a stack. When dealing with web applications, the front end, back end, and database make up the entirety of the application and are therefore known as a “full stack.”
Python for the Back End
You can use Python to write the code in the back end of your application. To speed up the creation of a web application, you’ll need to learn what’s called a web framework to power the back end. These frameworks are essentially Python code that simplify your work, and there are two primary options:
- Django: This framework was invented way back in 2005 and uses slightly older technology. But many websites today run on it, and there are lots of job opportunities. Django does a lot of the building for you; it provides you with out-of-the-box features such as an admin login for your website.
- Flask: Flask doesn’t have out-of-the-box features. You build them yourself. While that might sound intimidating, it’s actually not bad because it fits very nicely with the front-end frameworks we’ll look at shortly. Flask makes it easy to write an app that listens for a specific type of incoming request called REST API. This is quickly becoming the standard way to build custom web applications that go beyond simple websites with a home page, About Us page, and so on.
Using either Django or Flask, you will then write additional Python code for tasks such as reading and writing to a database, performing calculations, and registering and logging in users. Which one should you use? We’re leaning towards Flask as you’ll see soon.
The Python code you write will likely need to store and retrieve data. You will need to learn at least one of the most common databases. There are two common types of databases:
- Relational Database or SQL database: An older style that’s still going strong; this uses a language called SQL. (Yes, that’s another language you’ll learn.) Examples of SQL databases are MySQL, Oracle, PostgreSQL, and SQL Server. (For learning at home, MySQL is probably your best bet as it’s free and easy to learn, and widely used in the industry.)
- Non-relational or NoSQL database: This is a much newer type of database that stores data in a format called JSON. The most common such database is called MongoDB.
Which database should you learn? If you’re focusing on getting a job in big business doing financial apps and internal business apps, you’ll definitely want to go with a SQL database. If you’re looking at modern apps used by people across the planet from their browsers and phones, you might want to go with NoSQL. (However, you see both in either setting, so there are no definite rules.)
Learning Python-Focused Front-End Development
Right now, the majority of front-end developers are using TypeScript, which makes it worth learning. But a note of caution: TypeScript is huge. It has far more features than most people use. Plan on only learning the basics by going through the tutorials on the site, and only picking up advanced features as you need them.
Of these, Angular and React are more popular, but Vue is steadily gaining ground. Angular and React are about equal in usage; however, Angular is a bit easier to learn. And once you know one, it’s not hard to learn the others. Each has well-written tutorials on their sites.
Concepts to Learn
Learning the languages and frameworks isn’t enough. You need to learn concepts. Here are two of the most important ones:
- REST APIs: When a browser connects to a web server, the browser makes a request in the form of a web address, technically called a URL. The browser asks for data, and the web server sends back data in a format known as JSON. Your front-end and back-end must coordinate their communication. The standard way to do this is known as a REST API. (You can memorize the two acronyms if you like, but most developers have long since let go of what they actually stand for: REpresentational State Transfer and Application Programming Interface.)
- CRUD: It’s an acronym for Create, Read, Update, and Delete. These are four types of operations that databases perform, and four operations you’ll be implementing in your REST APIs.
To learn either of these, you’ll want to go to the Flask or Django documentation as well as the front-end documentation (Angular, React, or Vue). However, we need to bring up an important point: Django was not originally built for REST API architecture. It’s older. However, developers have built extensions that allow you to do REST in Django. Nevertheless, that’s why we encourage you to learn Flask first, as it’s built for REST APIs.
Finally, we have the tools you’ll be using. A good developer knows his or her tools, and you’ll likely get asked about tools in your job interview. No matter how good you are with Python or TypeScript, if you can’t answer questions correctly about tools, you’re not going to get the job.
First, you need to use a tool for typing in your Python code. There are many different options here:
- PyCharm: From a company called JetBrains, this was built specifically for Python development and therefore fits more naturally with the language then the others.
- VS Code: This is a general-purpose code editor created by Microsoft, which has gained huge popularity since its introduction in 2015. It includes plugins for many different languages and toolsets, including Python. (Technically, its full name is Visual Studio Code; but nobody calls it that because it’s a completely separate product from Microsoft’s flagship development product called Visual Studio. Yes, it’s confusing, so most people just call it VS Code.)
- Eclipse: This is an old grandfather in open-source development, having been around since 2001. But don’t let its age scare you; it’s still widely popular and includes many great Python extensions to help with your development.
Which one should you go with? Ask 100 developers and they’ll probably mention all three equally. Ask a few of your closest friends who are Python developers, and you’ll probably get some strong opinions that you might want to listen to, especially if they have leads into companies that are hiring. (But take note: Of the three above, Eclipse is probably the hardest to install, and the hardest to use.)
Finally there are a few other tools you must master:
- Bash shell. This is the black rectangle window where power users and IT folks type commands. With operating systems like Windows and Mac, many people have moved away from using the command shells… but programmers haven’t. You must learn a command shell, and Bash is your best bet. (Even for windows; the best one is one that comes with Git called Git Bash. It gets installed when you install Git, which we discuss next.)
- Git. This is by far the most popular version control system. What’s that? It’s a tool that lets you keep track of all the changes to your code. It also helps you work with other developers simultaneously on the same set of code. And it helps you keep different versions of your code. It’s much more than we’re describing here, but it’s an absolute must. You simply will not get hired if you don’t know Git, which you can download here.
- GitHub. This is the most popular website for managing your Git code. Create an account here and learn how to use it.
One more tip regarding GitHub: As you learn to code, from time to time you’ll want to make some of your apps publicly available on GitHub. When you apply to jobs, make sure to send links to those apps and projects to recruiters and hiring managers; prospective employers love to see examples of your work.
This might seem like a lot, but it’s not. You can do it in under a year, or even within a few months.
If you’re serious about becoming a Python developer, start right now. Learn it in small steps, essentially the order we listed above:
- The language itself
- Then back-end programming
- Then databases
- Then front-end programming.
You’ll also want to learn tools in parallel with the language. As you’re learning, you’ll want to practice, practice, practice. Start by building a small Python application that’s not full stack, just a simple python app. If you’re ever stuck as you escalate from simple apps to full stack, remember that Google is your friend, as is the ever-popular Stack Overflow site.
Teamwork is key for all developers. If you want to learn how to work on a team, contribute to open-source projects. GitHub has literally millions of open-source projects, many of which are looking for help.