Congratulations, You've Just Learned Python

Written by exactor | Published 2021/09/18
Tech Story Tags: python3 | learn-python | python | learning-python | how-to-learn-python | programming | coding | hackernoon-top-story

TLDRI would like to devote this article to those people who, after learning Python, faced the usual problem - What next? Are you sure you have already learned it? I will attach a small checklist: Classes and OOP, you can immediately name 5 magic methods Functional programming possibilities Generators, iterators, and decorators Have an idea of what is in the standard library Know how to work with libraries and virtual environments Understand asynchrony and its use You understand what the GIL is, threads and processes You can name at least one interpreter besides CPython If you were able to answer all these questions yes, then congratulations you know Python. But I hate to disappoint you - you only know the language itself and there is still a lot to learn besides the programming language. via the TL;DR App

I would like to devote this article to those people who, after learning Python, faced the usual problem - What next? Are you sure you have already learned it? I will attach a small checklist:
  • Classes and OOP, you can immediately name 5 magic methods
  • Functional programming possibilities
  • Generators, iterators, and decorators
  • Have an idea of what is in the standard library
  • Know how to work with libraries and virtual environments
  • Understand asynchrony and its use
  • You understand what the GIL is, threads and processes
  • You can name at least one interpreter besides CPython
If you were able to answer all these questions yes, then congratulations you know Python.
But I hate to disappoint you - you only know the language itself and there is still a lot to learn besides the programming language.
Although this will already be enough to solve simple automation tasks.
It is very important to understand that in order to maintain skills, you need to write code at least 3-5 days a week.
Resources such as leetcode can help here, there you can pump in the knowledge of algorithms, a very important skill, but only for interviews. But there is an increasingly interesting solution - Pet projects.
In them, you can implement your own ideas, write automation of any workflows, or maybe even start something big and make a startup out of it. The main thing is not to be afraid to try different projects, not to be limited only to a specific language, technology, framework.
In my experience, Pet projects played an important role, I developed my version of RSA cipher from scratch using C ++ and Qt5 for the graphical interface, after which I liked Qt so much that I decided to use it to write my browser using the Python language.
Python is commonly used in backend development, data science, and machine learning. From the paragraph above, you can see that Python is suitable for almost any purpose. In Backend development, you should be familiar with various web frameworks such as Django, Flask, FastApi, Aiohttp.
After moving on to SQL, ORM, and do not forget about NoSQL databases, as well as various caches. You can also try yourself in a related field - DevOps. Namely, deal with docker, k8s, Linux, configuring Nginx. Also, a bonus skill will be working with CI \ CD, for example, Github Actions, Jenkins.

For the most part in my work, I work with various web frameworks, so I will dwell on them in more detail.

Django is the most famous Python framework. It has many built-in features: Django ORM, support for many DBMS (SQLite, MySQL, Postgresql), built-in templating engine, built-in admin panel, forms, and this is just the bare minimum.
The framework is often considered overloaded, which is partly true. But if you figure out the optimization, then you can turn off part of the functionality. Very suitable for testing a prototype or releasing an MVC, also very suitable for hackathons.
Fastapi is a modern, fast (high performance) web framework for building APIs and HTML templates. It is very fast due to its asynchrony, it supports WebSocket, swagger, and typing out of the box. It also has a lot of additional libraries that will make the job easier. Suitable for heavy-duty projects.
Flask is a framework for building web applications in the Python programming language using the Werkzeug toolkit as well as the Jinja2 templating engine. The main difference is that most of the features must be installed manually using the package manager.
Therefore Flask can be more complex than Django due to its large number of dependencies. Suitable for home projects, and rarely found in a Production environment.
If you want something that works faster, but at the same time work with web development, your choice is Go (Golang). An excellent and in-demand language with many different libraries, but it seemed to me too much geared towards web development. The well-known Docker and K8s are written on it. You can get acquainted with the concept of channels, although I first met it in another Python interpreter - Stackless Python.
Also, don't forget about JS and Node Js. JS is now the language of both sides, Backend and Frontend. This means that by studying it, you can completely create web applications, plus some frameworks, for example, React Native and the like, do not allow you to create applications on several platforms at once (Web, Android, iOS), which is also very popular and cool.
In general, I have little to say about data science and machine learning, since I came across them only indirectly and I can only remember a couple of libraries: Tensorflow, scikit, and Pandas.
But most of all I liked the Ray project [https://github.com/ray-project/ray]. It is dedicated to distributed computing in Python and was primarily used for machine learning, now it has a serve extension that allows you to create a backend. I highly recommend that you familiarize yourself with this project, it has many different interesting features that will help improve your application.
But if you are bored or disliked by Python, you can learn something else. There are many other languages, if you want something more low-level you can try C \ C ++. At the same time, look at the language without the GIL. But based on recent ratings like StackOverflow, Rust is a better choice. An interesting language, I liked the fact that the compiler “hits hands” for bad code and refuses to compile until it is written correctly. Plus it has a great package manager.Personally, I'm interested in it for its asynchronous and multithreading capabilities.
Another interesting development option is hardware. One of the most popular platforms is Arduino.
This platform supports several languages ​​such as micropython, C, Rust. Historically, most projects have written sketches in C. There is an online micropython editor and environment [https://micropython.org/unicorn/] where you can look at various projects and try to write something yourself.
I would also like to mention boards with WiFi support, for example, esp8266. Great board, using it I was trying to make a small HTTP server. You can also make a Wifi access point, a WiFi network scanner, a small proxy server and even a server with web sockets support on it. If you can figure out how to work with it, it will be a huge leap into the world of IoT
Whatever you choose, it will help you become a T-shape specialist by studying either in width or in-depth. In any case, the choice is yours.

Written by exactor | Development Lead.
Published by HackerNoon on 2021/09/18