As Python continues to rise in popularity and extend into more problem areas it’s easy to lose pace with what you should be learning. In my professional experience the Python developers I have encountered are highly skilled in at least a few of these specialties.
In this article I will discuss what these areas are, a brief summary of how they are used, and resources to dive deeper into something that interests you. Be sure to read the last in demand python skill which may be one of the most important and over looked skill.
General Problem Solving
As a starter, to really become a successful Python developer you should have the ability to construct algorithms to solve problems such as those you’d find on Hacker Rank or Leet Code. I personally use these sites to complete at least two coding problems a week to keep building my own skills and confidence. I am not affiliated with those sites either but I am a fan of their platform and the communities they provide to discuss coding problems and I would not be where I am at in my career without them.
In addition to the above, if you are not a computer science major you should study the core concepts of computer science such as linear and non linear data structures to be able to organize your algorithms. You should also spend a few weeks studying computer architecture and operating systems principles to be able to understand the impact of your application code on digital systems locally and at scale.
Python’s Standard Library
One of my favorite parts of Python is how easy it is to import code that has been previously written and bundled with Python as part of its standard library.
Do you need to be able to get the path of the file you are currently working with or need access to local environment variables just “import OS”. Do you need to write a mathematically heavy algorithm that can be split up and processed across multiple parts of your CPU then “import multiprocessing”.
Having a deep awareness of what functionality is provided by the standard library can save you valuable development time by reusing efficient code that has already been written and heavily tested.
Are there parts of your day job that you find yourself repetitively doing that involves mundane manual effort on your computer? Imagine the below scenario and think about your day to day actions on your computer to see if you have something similar.
As a project manager, everyday John comes to work and promptly reviews his teams dashboard to determine if their software is behaving well. Then he runs several searches on the company database to determine how many users have signed up on his teams site. Afterwards he collects this data and writes an email to his team and manager summarizing yesterday’s evenings actions.
This above scenario is a perfect use case to set aside a number of upfront hours and write some Python code that can do the three steps above to run threshold logic on his teams metrics, aggregate data from a database, and format the data to be automatically sent in an email. Although, the time spend writing the code is longer then John continuing to do this task on his own after several weeks there will be significant time return on investment. John will also be able to focus on more thought demanding tasks as a result.
Top python developers can recognize areas within their team where work can be automated and heavily insist for this work to be done to be able to reap the cost savings long term benefits.
With the creation of the Scikit-learn framework Python is one of the top languages for prototyping Machine Learning based workflows and data-science. This package is heavily documented and supported among the python community which allows people to learn this complicated field in several months as opposed to several years if a person were to gather their own data-sets and write their own classification algorithms.
Learning this area of Python will allow a developer to explore and gather more insights from their data. For instance if a team is maintaining a shopping Flask application used by tens of thousands of users then that team could write a product recommendation system using machine learning to help bring customers closer to products they would be more interested in and increase sales and potentially users from a simpler experience.
In addition to the popular Scikit-learn framework their is also the TensorFlow framework released by Google. I will admit I don’t have experience with this personally but I am aware of its use among many top technical companies that make it worth calling out for people considering a career in Machine learning engineering or data science.
From my understanding this library has more support for deep learning based use cases then Scikit-learn provided you have sufficient training data to train accurate models. TensorFlow also provides the ability to parallelize your machine learning jobs using a typical gaming graphics card.
Python Machine Learning: Machine Learning and Deep Learning with Python, scikit-learn, and TensorFlow, 2nd Edition (Not suggested for people completely new to ML or Python.)
Free ML Resource
Through the Python Flask framework a developer has the ability to write complete web applications using Python as the primary backend language. This allows for quick creation of internal applications on company intranets to run automation tasks through web portals and build HTML5 based UI tooling.
Some of the more known companies that heavily use flask are:
Database Object Relational Mapper frameworks
If your current company or a future company stores anything in any kind of relational sql database; you could greatly benefit from the ability to use a python ORM tool such as SQL Alchemy. This framework allows the developer to create a database schema using Python classes. It exposes the ability to methodically interact with and administrate a database seamlessly through python scripts. You can also use the framework alongside the Python Flask framework for a complete data driven web application without the overhead of database dedicated resources.
Pythonic Soft Skills
As promised this is the most overlooked Python Skill that may be one of the most important. To be an effective developer and person you should treat yourself in a way that allows you to be the best version of yourself that you can be. This includes good diet and exercising habits to allow you to be healthy and energetic. You should also determine what your values are to allow you to prioritize your time in a way that aligns with your value driven goals. You can also derive your principles to help you determine what motivates you and use this to generate more focus and production.
A developer should also practice their verbal and written communication skills. As your circle of influence grows in your company you will be expected to lead meetings and gather feedback from customers. You will provide feedback on peers and projects. You may end up writing press releases to announce software or functionality you are releasing. And you will definitely write lots and lots of documentation for the other developers on your team and organization about who your customers are, why your software exists, what its goals and functions are, and how it works. Focusing on developing your communication will allow you to present your thoughts in a clear way.