Skills in Python That Every Junior Should Know
Tags: python, tutorial, beginners, programming
Published: 2021-10-21 13:36:36

Hey Guys! Today I'll be showing you which skill you absolutely need to know to become a really good Junior Python Programmer. Also, in this article, I tried to describe the road to learning these skills right. Hope You'll Enjoy :)

## 1. Version Control System (VCS)
For working in companies or with your team you absolutely need VCS. It's created for working together and saving different steps of building your product with the ability to return to any stage of development if something went wrong. The most popular VCS service is GitHub, however, you can use others like GitLab, Bitbucket, etc. Also, you can share your project with other programmers and hear their feedback. You need to know:
- At least one VCS
- Basic operations like Check in, check out
- How to work with Branches (Understand the purpose of branches, Create new branches, Merge branches)
- Centralized (Trunk Based) approach 
- GitFlow approach

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/wn04qgtjxi1uoe38lbw7.png)
 
## 2. Python General Information
Understand not only the basics of python like Data Types, Operations, Loops but also, things like Tuples, Dictionaries, Sets, Slices, etc. How every function or method works at the computer level. One of the most popular mistakes that almost every beginner doing is to write your code in apps like Vscode or PyCharm because to understand python you need to write code yourself without any help from the code editor. You need to know:
- Differences between 2.x and 3.x in general 
- Differences between List, Dictionary, Tuple (You don't need to fully understand these conceptions, just know basics and know what are the difference)
- Definition and properties of Sets
- Indexing and Slicing
- Mutable and Immutable types
- Definition of Dynamic Typing (Dynamic Typing is a really big conception and you don't need to understand it fully, just know the basics and how it works because it will be very useful)

### OOP
OOP (Object-oriented programming) is a big sphere and one of the main directions of current programming. In other languages living without OOP is almost impossible, however, in Python, it's not so important because actually everything that you can do with OOP in python you can do with usual functions. Also, because of Python specials, you just can't use many concepts of OOP. But, of course, you need to understand the basics of this concept:
- Definition and syntax
- Inheritance
- Abstract base class
- Basic customization and Operators overloading

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ohz0qo2ikq1j38flmc3j.png)
 
## 3. Algorithms
Algorithms are maybe the most important part of learning programming itself and not only. It helps you to think differently in life. For example, you need to guess the number from 0 to 100 with the least number of operations. If you don't know any algorithms, then you will probably iterate through every number and ask if it's right. But what if I'll tell you that you can solve this problem in only 7 steps by using algorithms called "Binary Search". And the efficiency for it is exponentially increasing, if you need to guess the number from 4 billion, you'll need only 35 steps by using Binary Search, rather than take 4 billion steps by linear searching. There're many algorithms that you must know because you won't be able to build any serious project without them. Firstly you need to read Grokking Algorithms, which explain in a usual language how to use the most popular algorithms. A list of algorithms:
- Binary Search
- Bubble Sort (Simple algorithm for sorting)
- Quicksort (As you may notice, it's algorithms for sorting that works much faster)
- Hash-Function (It's a programmer name for dictionaries)
- Breadth-first search and Dijkstra's algorithm (Algorithms for finding the best way and to reach the finish line in the fastest way)

 ![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/o6kdmcvnekg5v30b4v0h.png)

## 4. Working with SHELL
There're many analogies of shell/console for different OP (Operating System), like for Windows, Linux, macOS. And each of them has its own specific commands. The question "Why Do I need to learn Shell?" is a little bit confusing, because shell is where you can run your files, without it you just can't see what your code does and can't change something inside of it. in the Django framework, to start the server, you need to refer to the python script manage.py and call the runserver function as a parameter. You need to know:
- Simple commands for your specific OS, like "cd"
- How to Launch Python scripts inside of it
- How to use flags and parameters in shell commands

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/2dh6zzrd4w860fk05qqb.png)
 

## Conclusion
These are the most common and important skills that every Python developer, not only Junior should know. I didn't include Framework Topic, because it needs to better describing and I'll write an additional article about best frameworks for Python. I hope you enjoyed :)