Learning Python is relatively easy nowadays. I personally do have a yearly subscription at Coursera, so I enrolled for a course and refreshed my basic knowledge. There are a myriad of other resources available in the big old internet. I think Google’s approach in their web search algorithm to promote quality into search results is a reason why the availability of free knowledge exploded in the last decade (and will continue to do so).
What is Python?
Python is a interpreted and general-purpose programming language. As usual in the world of IT, adjectives say nothing when reading first.
- Interpreted means, that for applications written in Python, a so called interpreter-application is necessary to run code. Interpreter are OS-specific, therefor for most modern Operating Systems, a Python interpreter is available.
- General-purpose means that Python can be utilized for different scenarios like a web application, data science, artificial intelligence, machine learning, image manipulation, Raspberry PI, Finance, FinTech, Startups, etc.
An example for Startup was Dropbox. They are not a startup anymore, but the service did use Python originally. Another example that explains the term general-purpose is the AL-language of Business Central. This language is used for business logic inside of Business Central only (and nothing else).
The thing about being popular
Python is one of the most popular programming languages at the moment. And, a great advantage of popularity is, that it attracts a lot of (I mean, a lot of!!) very smart people. Additionally, we have this sharing culture in the IT-world since the early days. I don’t know exactly why, but a lot of people do want to show their knowledge and publish their work to help others (me included).
The Python Package Index is a great example for this altruistic approach. As I write this article, this service offers a place for just a shade under 300.000 projects! 300.000 projects that can be included into applications with a single command line! Unbelievable!
An example would be, an application that reads tweets from Twitter and runs a sentiment analysis to determine the emotions attached to a hashtag. It is not necessary to write code that query the Twitter-API and to invent a machine learning model to identify emotions expressed in written language. There are Python packages for both tasks available.
Flexibility means complexity
Ok, great – I can include 300.000 libraries and can let run my script on all Operating Systems of the modern world.
(I hope I was able to express this statement so overwhelming it actually is.)
The challenge with Python is not the flexibility. The problem is the lack of knowledge in the domain, the Python script is supposed to solve a problem. For example:
- To write a Python script that changes permissions in a Linux file system, I have to know details about Linux file permissions & file systems. (Which I don’t.)
- For a Python script that manipulates images, I have to know concepts of image modifications. (Which I know a little now – but didn’t, not long ago.)
- A Python script that creates a prediction of future demand based on historic sales, requires skills in statistics and algebra. (The time I did know both like the contents of my pockets, is a while ago.)
It’s great that even modern technologies highlight a specific quirk of working in IT that accompanies my personal career since the beginning – dual knowledge. I have to know the computer stuff and I have to know the stuff, the computer stuff is done for. Nice!
A good example for this are my Business Central projects. I often become naturally one of the persons in the company that knows (nearly) everything. I’m not bound to an industry or department like finance or warehousing. During my career, I have acquired domain knowledge of daily tasks that most mid-sized companies have.
And what about the 300.000 libraries?
Yes, libraries do reduce the time to develop an application. But, the complexity of the domain does impact the complexity of the library. And, the more complex a topic is, the more time does it take to get familiar with it.
A great example for this is, a Graphical User Interface that allows to accept input and presents results to the user. A GUI is not part of the Python language itself (apart from input & output through a command line tool) and therefor has to be written in Python. Yay!
That means, I not only have to have knowledge about e.g. sentiment analysis, but I also have to acquire knowledge about how to build a GUI for my script. Fortunately, the Python community did build libraries to create web or Desktop front-ends. But, a new library always needs time to learn. A proper web framework in Python (like Django or Flask) can require an introduction course for itself.
Actually, for the sake of simplicity of this article, I’m not mentioning code deployment with Docker and a Cloud Computing Platform (like AWS or Azure). But yeah, you have to know that, too!
“You had my curiosity but now you have my attention.”
If you read this article until here, feel free to contact me because I might have a job for you. I do write this in a irresponsible manner because reading this article nearly until the end can be an indicator for one of the most important skills of our times: natural curiosity.
As I described in this article, working in IT (especially as a programmer) requires constant learning – because the world of IT changes constantly. That’s why the big tech companies put the focus on soft skills of a candidate. And, one of these soft skills is natural curiosity. Because, to write it simple, I can’t remember how many manuals, courses and how-to videos I have consumed in my couple of years in IT.
So, if you can sit down for a couple of hours, learn for yourself and become an expert in a new domain. Get in touch with me, I might have a job for you.