December 21, 2020

How to become a Python developer

In this post I present a Python software developer study plan. It consists of these 8 not-so-easy steps:

  1. Pick a project
  2. Choose tech specialization
  3. Learn Python basics
  4. Practice programming
  5. Learn the ecosystem
  6. Study computer science
  7. Prepare yourself for the job
  8. Find a mentor

Why I’m writing that

One of my former colleagues asked me a how to become a Python developer. Of course, there are thousands of courses, boot camps and different programs helping people to start a developer career. Some of them are cringy, like “Learn C++ in 21 days” or rather “Earn 6 figures after 2 weeks boot camp”.

A lot of developers find the number of such courses alarming. These skeptics usually remind you that they have starting coding in Assembly on clay tablets. And if you don’t have a passion for programming and only interested in money you shouldn’t pursue a programming career.

I don’t like that kind of gatekeeping. These haters might be the lucky one’s that found their passion at the early age. But it’s completely fine to look for it in your 30th, 40th and so on. And it’s ok to change careers. Luckily, software development is not like being a doctor - you don’t have to spend 20 years studying. I believe 1-1.5 years is more than enough.

It’s cool to earn a lot of money and pursue such a job. It’s great to learn another profession. And then I doubt that there are any people that are not passioned about tech. Just look at the list of the most values companies in the world. It’s all tech giants. Technology is everywhere. Even such mundane things as traffic lights monitors the traffic and adapts its timings to the load.

So I decided to make a study plan for a person who wants to start a software development career.

About me

My path into programming was not very efficient. I’ve been coding physics simulations at school and university. From calculating a simple pendulum to gas dynamics and laser physics. After the university I didn’t code for about 6 years as I was working as a network engineer.

When I got my first programming job in 2015 I’ve started a project in my company - a web service where my colleagues could start a video stream for others to see. The code was horrible (I hope they have rewritten that). But I learned a lot and seeing people using my application gave an enormous motivation to continue.

And this idea - working on a project that gives you motivation - is a central idea of proposed study plan.

Why Python

Probably picking the programming language first is not the optimal solution. You’ll hear that it’s just a tool, and you need to pick a tool based on a task. That’s all of course true - you pick a problem and find an appropriate tool to solve it.

On the other hand Python is a good programming language to start with. First it’s very popular. Ratings such as TIOBE show that, however there are questions to their methodology of calculating the rating. But it’s evident that a lot of companies use Python - just search for Python jobs nearby. So let’s pick Python and work form that.

Pick a project

The first step in the proposed plan is to find a project that you are interested in. I’ll separate such projects into 2 pools. Pool #1 projects are based on the job you have at the moment. Consider the following examples:

  1. You are a content marketer, and you want to write more engaging posts
  2. You are a sales rep sending a lot of cold emails by hand and want to automate it
  3. VFX artist manually rotoscoping hair - that drives you nuts
  4. A creator with an idea that can only be implemented with the help of a robotics
  5. A cashier that looks for a way to optimize schedule of working registers

The second pool is for hobby projects or something outside your day-to-day job:

  1. You are passioned about bicycles and there is no place to compare different models
  2. A gamer who has a vision of the new “Among Us”
  3. A photographer looking for ways to organize photos after a long shot
  4. You want to create your own YouTube recommendation feed

Think of some task that is dull or repetitive. Or a problem that you are passionate about.

Choose tech specialization

Python is a general purpose programming language. Basically you can write anything with it. But there are details. Most of the things developers write nowadays rely on some kind of framework. And some specializations and frameworks are less mature in Python.

I’ll try to outline the most common technical specializations and frameworks for Python. And again they can be divided into two groups. The first group is used in professional setting - there are companies that pay developers to work with these frameworks. The second group is for amateur projects. There are hardly any businesses using Python for these specializations.

But don’t get discouraged if a specialization you are interested in is in the second group. The goal of this study plan is to learn programming with Python. And it’s much more important in my opinion to work on a problem and specialization you are passioned about, than something that is used by business. Once you are good with the language and have some code to show you’ll get a job. More on getting a job later in the post.

1. Web development.

It can be subdivided into 2 subgroups:

1a. Backend development.

It’s a code that powers a website. It contains all the logic behind it. This is where Python shines. The most used frameworks are Django and Flask, and they are widely used in industry. This is definitely a professional specialization.

Recommended links:

1b. Frontend.

It’s usually what you see on a web page. Some time ago all the web pages were rendered on servers and were served as static to users. Not anymore - now all the niceties are done in the browser with such frameworks as React/Vue. And they are written in JavaScript. There is a frontend framework written in Python - bryton. But I don’t think it’s used in serious projects. This subgroup belongs to hobby-specializations.

Checkout this browser game build with bryton https://brython.info/gallery/3Dwalker.html

2. Data science/Machine learning/Artificial intelligence.

This specialization is huge. There are analysts who analyze large amounts of data and present them to the management for them to make proper business decisions. There are machine learnings engineers who train and deploy ML models that power, for example, YouTube recommendation algorithms. And there are researchers, who invent new approaches and algorithms.

And Python is the number one here with such frameworks as PyTorch, Tensoflow, scikit-learn and many others. This is very hot and popular specialization at this moment.

Again Data science and machine learning is a huge area. There are sub-specializations as well - some work with natural languages (NLP) and some with images and video (computer vision). So I’d say that Python is used professionally here, but in some cases - i.e. computer vision - you need to know C++ as well.

A book “Build a Career in Data Science” https://www.manning.com/books/build-a-career-in-data-science covers a lot about careers in this specialization

3. Infrastructure/DevOps

Python is seen as widely used in DevOps and sysadmin work. That’s true - many tools in this area are written in Python, but DevOps are just users of such tools so there is little Python programming involved. Also, I believe that programming is a very small part of DevOps role, and it’s definitely not an area for a novice - there are no junior DevOps engineers. Probably that’s not the place to start with.

2. Embedded/Robotics/Industrial automation/IoT

Python used in more of a hobby projects in this area. Big companies use C/Prolog/VHDL programming languages for microprocessors/robots and such. But Python has its place. Such frameworks as micropython and platforms as Arduino/Raspberry allow using Python. This is a hobby-specializations for someone who uses Python.

3. Games

C++/C# languages and Unity/Unreal frameworks are kings here. Python might be used in game development but not as a main tool. There are amateur frameworks however that allow to create games in Python. Pygame is among them. And there are also 3D game engines - i.e. Panda3D. But it doesn’t mean you cannot create a popular indie game with Python.

4. Automation

Think of bots, data manipulation on your local machine. Scraping web pages for data and scripts you run on your computer for your non-programming work. Python is the best tool for that. This is a semi-professional specialization - you can write a script that will help you in your non-programming job, but most likely that not what you’ll be doing at your job as a programmer.

As you can see in some cases Python is used by companies, and you can find a job there and get paid. In some - more of a hobby. But I might have not listed all of them.

Now thinks of a project - a problem you are trying to solve and a specialization - a technical solution to this problem. This is an essential step in this plan, because it will give you motivation to go through quite boring stuff down the road.

Learn the basics

Now it’s time to learn the language and the framework you’ll be using. In my experience this can be done in two ways.

The first one is to read a book. You can pick any Python book that covers the basics. Don’t spend much time on memorizing stuff. I believe that you should read it fast just to get an idea what is in the book. Once you start working on your project you’ll consult the book many times. And by going through the book many times you’ll learn how to use Python.

Recommended books:

It can be that you don’t understand something in the book. This is where the second way comes in - guided studies. It can be a video course or an interactive system such as codecademy. They will explain everything in details, but the drawback is that it’s difficult to consult them later when you are working on a project. But again the idea here is to cover hard parts and get a grasp of really basic stuff, because you’ll actually learn the language and programming only while working on a project.

Recommended courses:

Not all the frameworks have books and courses - you can find tons of material for Django but very little for micropython. But there are plenty of tutorials online. Pick the simplest one and follow it. No need to find follow all of them, avoid tutorial hell.

Work on your project

Now you have a project in mind, you know the basics of Python and a framework you’ll be going to use. And here comes the main work. The project you’ve picked might be too ambitious for a novice. Try to decompose it into smaller digestible chunks. This might be difficult for someone who just has started. I’d advise you to find a mentor here, someone who will guide you.

A mentor can also make the whole process more efficient by guiding your deliberate practice. This is a powerful technique - more on that here. In essence, you’ll need someone to give constant feedback, keep your focus, find opportunities for constant improvement. More on finding a mentor later in this post.

Learn the ecosystem

Now you have your project working on your machine, and it’s time to learn other engineering practices that are used by developers.

Version control. You have your source code locally, and it’s fine as long as you work along on it. In professional settings developers use version control software such as GIT to share the code. Create a repository on GitHub and put your code out there. And find how to organize your code, what branches, merge requests are and how to write good commit messages.

Recommendations:

Next is code-style. Most probably the code you’ve written is horrible. It’s hard to read even for you after a month of not seeing it. Since the code is read a lot by other developers you need to make your and their lives easier. The project you’ve shared on GitHub will be your portfolio and will play a big role when finding a job - so it should look nice. With Python, it’s really easy - search for PEP8 and use flake8 on your code.

Recommendations:

Tests. Writing automatic tests for your code is a standard practice nowadays. Learn a testing framework and write a couple of tests for your projects. You’ll quickly see the benefits of that when you will want to change something in your code, and you won’t need to worry whether you break the existing behavior.

Recommended links:

Deployment. In most cases the code you write is not meant to be running only on your machine. Learn how to deploy your code to different environments. Can you run it on Linux? Can you produce an executable of your game? If it’s a web server how do you know that users of the server do not experience problems with it?

Recommended links (web development specialization):

Study computer science

Up to this point the study plan was very practical - just do something that works. But to be a good developer you need to know the science behind all that and there is no way of avoiding it. Here I’m referring to such things as data structures and algorithms. Pick a book of a good video course on that.

Recommendations:

Another area to learn here is programming paradigms such as Object-Oriented Programming and software development patterns and principles (SOLID, DDD and such).

Recommendations:

This is a huge area to learn, but once you start try to get back to your project and change it. If you discovered a pattern - try to use it in your project to see how it works.

Prepare yourself for the job

At this point you have a project to show, you know the ecosystem and not only Python, you are aware of the science behind programming. Now it’s time to find a job. I believe that your project on GitHub is a powerful tool to achieve that. You can describe to potential employers what have you learned while doing that, and it’s 99% of the success.

But finding a job has its rules. You need to have a CV, you need to be able to speak and convey your thoughts clearly during the interview. I’m not that experienced in developing these soft skills, but I think a blog describing your journey could help a lot.

Also, you need to practice programming challenges. Create an account on HackerRack and solve a challenge a day starting from the easiest ones. Such challenges are common during interviews. And, however, that not what you’ll be doing at your job - solving puzzles - it’s a part of the recruiting game, and it’s better to be prepared.

Find a mentor

This study plan is a really bird-eye view on the process of becoming a Python developer. It’s not exactly consecutive - you can start step 4 - practice programming and pick up version control at the same time from step 5. Learn the basics from step 3 and solve puzzles from step 7. You can follow this path on your own. Ask a question on Quora or Reddit’s r/learnpython, and you won’t get stuck. If you want to move faster - find a mentor - a person who will guide you. At my current job I mentor developers, who are learning Python. I don’t use this exact plan, because mentoring in a job environment is something different and has its limitation. But the core idea is similar - work on a real project.

So if you are interested in becoming my mentee and believe that the plan I’m proposing is any good - connect with me on LinkedIn or via email

© Alexey Smirnov 2023