Curated by: Sergio A. Martínez
No single programming language can claim to be the most popular (as popularity is subjective and depends on factors such as industry type, location, and personal preferences), but Python is certainly one of the best candidates to grab that title. After all, according to the TIOBE Index, Python is the most used language overall (reaching the 1st position in July of 2022), and it has been steadily gaining ground since its debut in the early 90s, so now it’s the perfect time to review what’s so good about this tech, what capabilities let Python takes its current place in the software industry, and what downsides it might have.
After all, Python has been the language of choice for many major technological projects in recent years, including Google’s App Engine, Instagram, and Pinterest, as well as being one of the most popular languages for teaching introductory computer science courses at various universities. It has even found applications in fields such as web development, scientific computing, and artificial intelligence, so given its versatility and widespread use, it’s no wonder that Python is often considered a basic skill among most developers around.
However, is the excitement around Python warranted? You may already know that Python is praised for its readability and simplicity, often described as an “executable pseudocode,” which means that it’s easy for even non-programmers to understand, making it an ideal language for prototyping, or as a starting point for beginners.
In addition, it’s also open-source, meaning that anyone can contribute to its development (and keeps its already large library growing), so all this makes it a no-brainer when it comes to software development, but if we were to ask some actual developers about the good and bad sides to Python, maybe we can get insight on why this very dynamic (but sometimes confusing) language has earned its place in programming, so we asked Martín Ruiz and Elier Ramos, Application Developers at Scio with experience creating software with Python, to share their takes on this popular language.
What are the cool things about Python?
On one hand, Python is a very versatile programming language that offers many advantages to developers, perhaps the most notable being its readability. Thanks to its use of indentation and whitespace, Python code is often far easier for people to read and understand than code written in other languages, which saves valuable time when working on larger projects. In addition, Python is an interpreted language, which means that it doesn’t need to be compiled before it can be run.
“I like the dynamism of Python. By being a higher leveled language than others like C, Java, or C#, it’s possible to develop the same kind of programs with briefer code”, says Martín. “It’s a multi-paradigm language where you don’t need to know OOP to generate programs capable of solving problems”.
The dynamism Martín mentions refers to, according to the words of the blog Data Towards Science, to a peculiar quality of this language, in which “to evaluate an expression, a compiler first searches the current block and then successively all the calling functions”. Additionally, even if the object-oriented features of Python are not as robust as those found in other languages, it still offers excellent support for it, making it a great choice to develop complex applications.
“This language is widely used for mathematical simulation and data analysis, and it’s very focused on engineering, but it can also find a lot of applications to replicate what other languages can do, making it a sort of “all-in-one”, explains Elier.
Python also includes a large standard library that can be used to develop a wide range of applications, and with so many advantages, it’s no wonder that it has become one of the most popular programming languages in the world. However…
Some downsides to coding in Python
While Python is a versatile language with a wide variety of applications, it does have some well-documented disadvantages worth discussing. One potential downside, for example, is that Python code can be difficult to master, with a potentially confusing syntax due to its use of whitespace and indentation, which can make code written by more experienced programmers a challenge to understand.
In addition, it’s not well suited for low-level tasks such as system programming or network programming, and Python’s interpreted nature can lead to slower execution times compared to languages like C++, which are compiled. Martin Ruiz, again explains some of its shortcomings:
“Since it’s more dynamic, and it doesn’t have as many restrictions as other languages, the developer is the one responsible for following good practices and documentation to achieve clean code. In other words, it’s a lot easier to generate illegible code with Python than with other languages, and it’s also more prone to generate errors thanks to this same dynamism. After all, the variables of Python can take any other value type.”
Furthermore, Python’s syntax, already somewhat difficult, is not consistent across all platforms, which can lead to compatibility issues, and the resulting code can be more difficult to debug and maintain, as well as having some structural issues that any seasoned developer must watch out for. In the words of Elier:
“Developing software with Python is very quick, but the design pattern and dependency injections can get lost very easily with this language. You can have way too many instanced things, and that gets hard to follow. I really wish the design patterns were more explicit in their instance and declaration.”
Additionally, the same popularity of Python makes finding experienced developers more difficult, as all big companies use it one way or another, reducing the available talent pool constantly. But despite these potential drawbacks, it remains a popular language for many types of projects due to its ease of use and wide range of libraries.
“I started to learn Python during college, thanks to a teacher I worked with, building a system for a software conference. He used it for everything he developed, and it helped me a lot when I got my Master’s Degree because almost every teacher there used it”, explains Martín of his total experience with Python. “I would definitely add the optional use of keys to group code to make it more legible, though. And anyone willing to study this language should try to understand dynamic scoping to make full use of it, without taking the same approach as more structured languages such as Java or C#.”
So, taking it from an experienced Python developer, what this language offers is a “high risk / high reward” type of deal, where code in Python has to be very carefully constructed and documented to be maintained properly, but the results you get from it can be formidable. However, considering all this, is Python truly the code of the future? The same article for Data Towards Science sums it up:
“As we’re witnessing the shift from desktop to smartphone, it’s clear that we need robust languages to build mobile software. But Python wasn’t made with mobile in mind. So even though it might produce passable results for basic tasks, your best bet is to use a language that was created for mobile app development. […] To be clear, laptops and desktop computers should be around for many years to come. But since mobile has long surpassed desktop traffic, it’s safe to say that learning Python is not enough to become a seasoned all-around developer.”
So even with all these downsides, the continued popularity of Python in software development is still up in the air. Although this language has found its place in machine learning and web development, if you’re a seasoned programmer and want to stay ahead of the curve, you have it in your repertoire right now. It may be replaced one day by a newer language with better mobile support, but for now, it’s still the most popular option out there. And even if that does happen, maintaining the current Python-based software means it will remain a basic skill that every programmer needs to know. Dynamic or just very confusing, Python is an interesting language that is worth understanding.
Scio is a Nearshore software development company based in Mexico where we believe that everyone deserves everyone should have the opportunity to work in an environment where they feel like a part of something. A place to excel and unlock their full potential which is the best approach to create a better world. We have been collaborating with US-based clients since 2003, solving challenging programming puzzles, and in the process showcasing the skills of Latin American Engineers. Want to be part of Scio? Get in contact today!