To say that Python is one of the world’s most popular programming languages is, if anything, a bit of an understatement. Long an immensely popular “generalist” language, Python has enjoyed increasing use within highly specialized, niche industries such as machine learning and statistical analysis. Across the country, hiring managers and recruiters for technical roles are very interested if you have a strong grasp of the language’s fundamentals.
“One of the biggest trends we're seeing is Python overtaking Java as the programming language of choice in technical interviews,” said Shannon Hogue, Head of Solutions Engineering at Karat, which offers the infrastructure and tools for technical interviews. “Just three years ago, we saw nearly twice as many candidates use Java on their technical interviews as Python. Last fall, Python eclipsed Java for the first time, and it's been our top interview language of choice for candidates throughout 2020.”
The increasing use of Python in cloud and artificial intelligence (A.I.) applications is helping power this trend. Hogue added: “Another reason for the rise in popularity in Python for technical interviews is that it's a really succinct language, which is helpful in time-constrained interviews. We see the highest candidate success rates in Python than any other language.”
As with other popular languages, Python is supported by a massive network of contributors. GitHub is ripe with Python libraries and frameworks, and there never seems to be a shortage of new tooling for developers to take advantage of.
Which frameworks are the best, though? We queried some Python experts to understand what they’re using… and why.
Somdip Dey, founder and CEO at Nosh Technologies, says that, when it comes to web applications, “you can either choose Django or Flask. Flask is lightweight and microservices-based compared to a full-fledged web application.”
For Python developers, Flask can translate into a speedier development cycle, which is critical when spinning up an app or service that users need quickly. “Let’s say, using Keras, you have developed a neural network model that predicts the stock prices in future given the stock prices right now,” Dey continues. “Your model is ready but you want to develop a web application to let your clients get started using the model to predict stock prices. You can use Flask to develop a lightweight web app on top of the model and deploy it to your clients.”
Filip Kälebo, Vulnerability Management CEO at Firo Solutions, says: “Reddit is written with Python's popular HTTP framework Flask. I love Flask because it makes it easy for the average Python developer to quickly write a web application. This is partly why the startup community loves Flask, too! Flask enables startups to get an MVP up and running within a short timeframe. Flask’s great community and good documentation make it very easy to build things.”
“Jupyter is super beginner-friendly” notes JR Rickerson, Python Instructor at DevelopIntelligence. “As an instructor, I need something accessible to everyone, and the Jupyter notebook is very easy to understand and use with a short explanation. It’s less intimidating than a CLI for a lot of beginners, but not as overwhelming (or as much of a walled garden) as some IDEs can be. I can write my slides and notes directly in the notebook, students can easily add their own notes, and then write their lab solutions directly in the same spot, so it all just comes together.”
But Jupyter isn’t perfect, Rickerson says: “The Jupyter notebook format is not terribly friendly to source control… “like Pandas (and several other data-science oriented frameworks), Jupyter can suffer from installation woes.”
Speaking of Pandas, Rickerson adds that it’s one of the best frameworks for use with artificial intelligence and machine learning: “Pandas is pretty well-optimized for dealing with large datasets. If I wrote a custom script to do the data transformation I need to do, it may take a significant amount of time to run, and that’s not what I want.”
Due to the Pandas’ DataFrame-based design, he continues, “I can instead import data, run set-based operations across the dataset very quickly, and check the results to see if they’re what I’m looking for before exporting the data again. Most of the transformations or calculations I’d want to run are already included in Pandas, so I don’t have to do as much of it by hand.”
Pandas has also seen its popularity increase, meaning there are lots of blog posts, forum discussions, and tutorials that can help you learn it quickly, especially if you’re also relatively unfamiliar with core concepts in A.I. and machine learning (but are willing to learn).
Easily the most popular Python framework noted by our panel, Django bills itself as a framework that helps developers build better apps with less code. Sounds too good to be true? Django has a ton of fans.
Andrew Lindberg, Senior Software Developer Mentor at Exeleration, tells Dice “for nearly a decade now, my first choice web framework has been Django”:
Django's object relational mapper (ORM) is a major part of its appeal. The ActiveRecord pattern it uses is easy to reason about, and the syntax for chaining query syntax to drill down or aggregate data is straightforward and robust enough for a wide array of uses. Django alsocomes with a module capable of serving up a dynamically generated set of forms for creating, editing and deleting the records from the database.
Along with the ORM, Django has a phenomenal migration engine. This subsystem allows for highly automated schema changes and is robust enough to deal with many complex interactions, including managing data transformation or generation as part of a schema update.
Django also takes Python's ‘batteries included’ motto to heart, and ships with its own template language and rendering engine and an impressive suite of basic functionality for the most common use cases. Django uses what it calls a ‘Model/View/Template’ pattern, which is basically equivalent to the classic ‘Model/View/Controller’ pattern. Django calls the presentation layer the "Template" (the View in MVC) and the Django "View" is the logic layer (the "Controller" in MVC). While the naming is slightly awkward to navigate at first, the amount of tedium that is eliminated by using or subclassing these included modules is extremely valuable.
Rickerson agrees: “For web development, my go-to framework is Django. Django is one of the oldest web frameworks in the Python community, and it can be considered by some to be bloated, but everything I need to get a new client up and running with a web application is built-in or easily available via the huge ecosystem of Django apps. I don’t need to spend any billable time on boilerplate.”
As with any framework for any language, of course, it all comes down to what you’re most comfortable using. If you’re a Python developer, experiment with any of the above and see which you prefer!