DEV Community 👩‍💻👨‍💻

Cover image for Skills in Python That Every Junior Should Know
Mark Vassilevskiy for Abstract

Posted on • Updated on

Skills in Python That Every Junior Should Know

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

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 (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

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

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 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


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 :)

Top comments (3)

xanderyzwich profile image
Corey McCarty

I believe that these are things that everyone should learn, but OOP and Git aren't entirely necessary if you are doing automation scripts in Python at a junior level.

Overall, the only part of this that's specific to Python is the "Python General Information " section. I would say that all of this is helpful to any developer regardless of language with a small change of knowing the basics of whatever language you are using.

metamark profile image
Mark Vassilevskiy Author

Yeah, you're right. Maybe not anyone need to know OOP for usual automation, however, understanding how it works will upgrade your abstract thinking and help to code better. Also, without Git you can't almost anything with other programmers, and talking and learning from other programmers is maybe the most importantant part of learning itself

mikelogaciuk profile image

Can someone explain me why I need to know all those algorithms since there are easier methods to find ex. max number or specific value etc? E.g. in OOP if I have to go through dict, I write a code which knows what is needed and finds it.

🔠 Find your favorite font

You can change your default font in Settings.