If I am to start working on a new project today, I would hesitate to
attempt it in a language that does not have compile-time type
checking. However, I do have to deal with Python at work (though we
are slowly phasing it out). Also, I have been working off and on, in
my spare time, on a Python project that has over the past 3+ years
gotten fairly large as personal projects go. It started out as a
one-off quick script. It eventually evolved into something larger
that actually does something useful for me so I ended up adding to
it and maintaining it.
Somewhere over a year and a half back, after being frustrated with
my inability to refactor this code like I can with other type safe
languages, I started exploring the possibility of adding type hints
to the codebase. Now, after having spent the requisite time to
understand the implications of type hinting, and whether it’s
useful, and to be able to show this as a consolidation of my
thoughts on the matter to friends and colleagues, I decided to write
this post on what an absolute joy it has become to refactor and
work with Python once you have type checking enforced.