Programmer migration patterns

I found a fun post by Avery Pennarun about programmer migration patterns using RSS. Have you heard of RSS? It's a quite intriguing concept: you create a terse XML log of your toots or twetes or longer form writings on the web, publish the log on the web, and other people can set up software that periodically checks the XML log and sends a notification when you've written something. You should give it a try!

In fact, I found Pennarun's post about 3 weeks ago, but have been too occupied with work, family, and running to blog about it until now. I've thought about what languages programmers use and why, and enjoyed reading another non-scientific take.

Myself, I've followed two of the paths that Pennarun graphed in the blog post.

  • C -> Perl -> Python 2 -> Python 3

  • sh -> awk -> Perl -> Python 2 -> Python 3

I've done different kinds of programming and dabbled in some esoteric languages, but lately I'm doing system programming, and almost all of it in Python 3. As Pennarun points out, when you need Python programs to run faster, you rewrite their modules in C. I've learned to do this and have also learned how to distribute and deploy C extension modules. I haven't felt the need to migrate to Go, the other next stop for Python 2 programmers in Pennarun's graph. Not yet.

Python 3 use is growing at work and people are definitely coming from Javascript. Mostly because JS options are limited when using Apache Spark, especially with the major Spark hosting services, not because of language features or syntax. I do, however, see signs that some of my coworkers are beginning to appreciate mainstream Python features like path objects, slicing, unpacking, and f-strings. For what it's worth, no one has yet asked me how to use type hinting or how to implement type checking, perhaps because the language switchers tend to have begun their careers with Javascript instead of C++ or Java.

I feel gratified when I see open source Python packages like mercantile, shapely, and rasterio spreading more quickly to other teams at work. This pleases me, greatly. Investing modestly in Python, even when it wasn't considered cool or the next big thing, was a good idea. It's paying off.