Approach, communication, professionalism — the usual suspects

There’s a certain set of skills that all great specialists have. A positive, solution-oriented approach. Solid communication skills for understanding others and making yourself understood. Delivering tasks within deadlines and being transparent about the work process, i.e. being a professional.

These skills are crucial when it comes to software development. Because of the nature and purpose of the language, Python developers will often have to cooperate with multiple project stakeholders of various specializations:

                         
  • business analysts,
  •                      
  • data scientists,
  •                      
  • front-end developers,
  •                      
  • DevOps specialists,
  •                      
  • other Python developers,
  •                    

...and so on. Python is often used for mission-critical parts of software, like Instagram’s server (“multimillion-line Python monster”), or Exscientia’s AI system for drug discovery. In projects like these, it really makes a difference whether someone is a professional who can communicate their ideas and find compromise with others. 

Time management is a big thing for software developers. The best developers know how to organize their work in order to keep pushing the project forward, instead of creating bottlenecks due to poor organizational skills.

So, a great Python developer is a master of communication, and a solution-oriented professional. But, that’s just the start. What else?

Hard Python developer skills — computer science, programming fundamentals, Python environment

Let’s do a rundown of common Python developers skills. Keep in mind, not all of these skills are necessary for someone to be a great Python developer. The right developer profile for your project depends on the kind of work that you’re doing. An AI project might require a different mix of skills than an ERP system project.

We’ll start with general software development skills that can be useful across the board, and we’ll zero in on Python-specific skills next. 

General software development skills
                         
  • Data structures
  •                      
  • Version management and collaboration with Git
  •                      
  • Containers with Docker or Kubernetes
  •                      
  • Software design patterns 
  •                      
  • Clean code principles
  •                      
  • Software architecture principles
  •                      
  • Programming paradigms (object-oriented, functional, etc.)
  •                      
  • Cloud computing (AWS, Azure, Netlify, etc.)
  •                      
  • Object-relational mapping, ORM 
  •                      
  • SQL (MySQL, MongoDB, etc.) proficiency 
  •                      

These are by no means junior-level skills. If someone knows all of the above, they’re a top-of-the-line expert. I don’t even think it’s possible to know all that stuff by heart. But, great developers should be able to learn new things quickly, and switch up their programming style based on the needs of the project.

However, there are some Python-specific hard skills that all great developers should know. What are they?

Python-specific hard skills

                         
  • Mastery of Python syntax
  •                      
  • Ability to write complex business logic in Python
  •                      
  • Unit testing
  •                      
  • Debugging
  •                      
  • Understanding Python’s limitations
  •                      
  • Data visualization techniques
  •                      

Every programming language has quirks, and its own specific way of doing things. Python is simple to learn for beginners, but it’s definitely not easy to master.

A big part of every programming language is the ecosystem, and in particular libraries (frameworks).

Python libraries, depending on project type:

                         
  • AI / Machine Learning / Science: Scikit-learn, Tensorflow, Keras, Pandas, Numpy, Matplotlib, PyTorch
  •                      
  • Web development: Django, Flask, Web2py
  •                      
  • Mobile development: N/A (there are some niche Python libraries for mobile development, but pretty much nobody builds mobile apps in Python except hobbyists — unless we’re talking about a server for an app, like in Instagram’s case)
  •                      
  • Custom software development: Python Standard Library (Python comes with a huge amount of ready-to-use modules), PyPI (Python Package Index)
  •                      

At the moment, the most popular Python libraries are the ones used for AI, machine learning and science. For Python web developers, Django is simply a must. Mobile development is rarely done with Python, so there’s no point naming any niche libraries in this area. 

Finally, when it comes to any type of custom software development, the vast library of standard Python libraries and community-built packages is a great resource. Here, good Python developers don’t need to know all available packages, but they should know how to find the ones they need.

What does a great Python developer do? Advice from our experts

One of the expert Python developers on our team, Maciej Urbański, says that being a good software developer means “recognizing a need, modeling it and implementing a solution that is a balance between simplicity and future-proofness.”

image1

No software developer succeeds thanks to programming skills only — it’s about how they apply those skills in order to drive specific results.

So, you might not see great Python developers boasting about how well they know the intricacies of the Python syntax. Instead, they’ll be showing off finished projects that they were involved in.

Great developers have no issue finding interesting projects to do. As Jacek Ziółkowski from our team wrote, they’re driven by curiosity.

image2

There are two major things that set great developers apart from others:

                         
  • getting involved in open-source projects,
  •                      
  • building side-projects in spare time.
  •                    

It can be one or the other, some developers do both. When developers can’t stop building things, it usually means that they love programming. And it’s no secret that people can achieve much more when they love what they do.

Now, for something that many people wonder about: how much should a great Python developer earn?

How much does a great Python developer earn?

You might be wondering how much you should offer to Python developers, or how much you could earn if you’re learning Python.

Short answer—it depends, but generally no less than $40,000 per year, and about $90,000 per year on average (depending on which source you check, we tried Glassdoor, PayScale and Indeed).

Longer answer—there are a lot of variables involved in any developer’s salary:

                         
  • Experience level,
  •                      
  • Specialization,
  •                      
  • Project risk,
  •                      
  • Amount of necessary side-skills,
  •                      
  • Scope of responsibility,
  •                      
  • Geographic location,
  •                      
  • Etc.
  •                    

A Python developer specialized in web development and based in San Francisco will earn much, much more than a developer with a similar skillset, but located in Eastern Europe. That’s just how the market works.

This kind of defeats the point of going any further into analyzing how much Python developers earn. Plus, there’s barely any quality data on this topic. Once you try to define any range or average, it quickly becomes detached from reality.

The future for Python developers: not just the language of ML/AI

Where is Python headed? It has always been popular in academic and scientific circles, because it’s the researcher’s preferred language (and also because many STEM college courses have Python in the curriculum).

This is a natural consequence of how Python was built. Guido Van Rossum, Python’s creator, outlined four goals for Python in 1999:

                         
  • Easy and intuitive, but as powerful as competing languages.
  •                      
  • Open-source, so anyone can add to it.
  •                      
  • Python code should be as understandable as plain English.
  •                      
  • It should be useful in everyday tasks, allowing developers and non-developers to automate work.
  •                    

Today, Python is all that and much more. However, there are some concerns about how universal it really is. 

Some Python experts are worried that Python is headed towards being a specialized language for AI / machine learning. After all, web and mobile are dominated by JavaScript, and a lot of developers prefer other languages for custom software development, but in AI and machine learning Python has no competition.

These worries are a bit exaggerated. There were 9 million active Python software developers in the 3rd quarter of 2020. That’s only 3 million less than the most popular language, JavaScript.

Python is popular in AI / machine learning because it’s perfect for manipulating large amounts of data and performing complex calculations. And it seems that Python is at it’s best when it’s at the intersection of science and computing.

And yet, many leading, non-scientific companies use Python to drive their business in different ways. Like Zapier, Udemy, and Spotify, just to name a few. Clearly, Python is just as capable of driving ROI as it is of generating new scientific discoveries.

So, our prognosis: Python will only keep growing in popularity, and will continue to generate immense value for companies and research organizations.

Summary

Let’s wrap this up. A great Python developer:

                         
  • Is a master of communication, and a solution-oriented professional;
  •                      
  • Has general software development skills, like Git, cloud computing, software design patterns, SQL, etc.;
  •                      
  • Has Python-specific skills, like mastery of Python syntax, ability to write complex business logic, data visualization, etc.;
  •                      
  • Knows the right Python libraries.
  •                    

The specific skill profile of any great Python developer will vary based on specialization and type of projects they work on.

And there you have it, that’s our summary of what makes a great Python developer. Hope you learned something new!

If you want to explore the world of Python a bit more, check out these articles: