4 min readNov 24, 2020.
We find ourselves in a country with a very strong and well developed IT industry, with many companies of all sizes, both foreign and domestic. Developers are always trying to get a competitive edge on their colleagues and employers wanting to assemble the biggest and most educated teams possible. At the same time companies constantly compete for client acquisition in a free and open market.
It is then rather curious that the vast majority of entities in this game are competing in a very narrow subset of that market: “enterprise”-like projects. An overwhelming percentage of jobs are Java and C# web-based applications developed with strict adherence to S.O.L.I.D., and a zealous fervor for type, null, and mutation safety among other things.
Then where does a language like Python with dynamic typing, no private members, and really no safety-nets whatsoever fit into our story?
The unintuitive truth is that, according to various sources, among the most popular languages is Python, with a market share of between 10-30 percent. At the time of writing (September 2020) it ranks 1st on GitHub with a 30% share, though it is likely to be for some reason or another inflated. One can easily see that there is a good opportunity here for both developers and companies to grow. And all this is before considering that it is universally hailed as THE language for various cutting-edge industry sectors like Deep Learning, Data Mining, etc.
Brand-new Python Department
Being admittedly a fan boy of the language I jumped at the opportunity to get involved as soon as I was first presented the by the idea of starting a python department. This, rather unsurprisingly brought forth a few challenges, the first being creating a team.
In our neck of the woods, Pythonists are a rarity, so after snatching every one of them we could and still have found ourselves lacking, we decided on an auxiliary approach: we will take experienced developers and retrain them for this different development style. Sounds rather standard, after all any experienced developer can attest that learning a new language is a trivial affair. Of course, I agree, however for someone deeply entrenched in a strongly typed, null safe language (amongst other safeties), this can be viewed as almost a new paradigm. And while this was not something that posed a challenge to our engineers I decided to share some of the more interesting changes in approach to problem-solving they underwent during.
Pros of Python Learning
One big advantage people took to immediately, made possible by duck-typing, is a separation of inheritance and class grouping by functionality. Let me explain: in statically-typed languages if a function should accept one of several classes for a given parameter they have to be related in the inheritance hierarchy. Often this is an intuitive connection, however, just as often this can feel very forced as logically they share very little between them. Some would counter that this is what interfaces are for, funnily enough often those are the same people who shudder when multiple inheritances are mentioned. I say funny as interfaces are nothing but abstract classes, and with more and more languages having default implementations in interfaces makes them functionally identical. Python allows one to forgo writing interfaces and abstract classes do not require multiple inheritances and allow the creation of logically consistent class hierarchies all while saving time.
To be continued…
Though all of the aforementioned pros are undeniable, it still remains to be seen exactly what results this transformation will yield. And, as that being said, we will have to take a closer look at the performance peaks throughout the learning process and carefully estimate the results we are presented with. These things are not to be taken lightly since we all know the Python code hides many secrets yet to be revealed.