On Programmers and Labor Markets

It looks like I’m going to have to learn some new things for work soon (specifically some machine learning stuff). This isn’t at the top of my list of things I want to be learning, but since my manager said that it’s likely I’ll start on this new workstream in the next few months, I have a feeling I’m going to have to settle in and re-learn some Python since it’s been at least 3 years since I touched that language. And so the question now becomes, when do I learn this stuff?

I’m not really excited about spending dozens of hours of my free time learning stuff that I’m not super interested in. I’d rather spend my free time playing with my son, or learning more Elixir, or spending more time practicing German (since that’s rather important when you live in Berlin). But right now, I don’t feel like I can tell my employer “no, I’m not going to learn that on my free time.” I know that there are thousands of people who wouldn’t say that to their employer, and because those people are willing to offer hundreds of hours of free overtime work to their employer, that sets the market expectation. And, to be honest, I’m paid really well, even in America where salaries are much higher than in most of the world. Isn’t there some “paid overtime” already “build in” to my existing compensation?

So the obvious retorts to this kind of thinking are “well, if you’re not interested in it, you shouldn’t be doing it,” and “factory workers don’t go home and learn how to use new stuff in the factory, so you shouldn’t have to either.”

To the first point, I just don’t buy that argument. I’m not paid to have fun 100% of the time - I’m paid to provide value. And while I’m not personally jazzed about this one new stream of work I’m going to be helping with, I very much believe in the mission of the organization and the work we’re doing. If my manager believes that this is how I can provide the most value to the organization, then I’m going to do it, and I’m going to do it well.

To the second point, this is where the economics come in. Imagine if there were factory workers that were willing to spend their free time getting better at their jobs. They would be more valuable to an employer for sure, since they don’t cost the same money to train. These workers would get the better, higher paying jobs. And if the majority of factory workers went home and did more factory working for fun, that would set the market for that skill. That’s exactly what we’ve done in software.

While there are far more jobs then there are engineers, we have created a market where the expectation is that engineers spend their own personal time essentially training themselves for their jobs. Because we are so competitive amongst ourselves for glory, money, or whatever it is that drives developers to spend time doing “competitive programming” on one of the many sites that offers that sort of thing, we’ve created a rather demanding market even though it should very much favor us as workers.

Honestly, I think it’s too late for us to take this back - especially now that many more engineers are coming into the market thanks to code schools. This is a monster of our own creation, and the only way to kill it is through some sort of collective action to prevent this sort of “off-hours” competition. That could either be unionization, or regulation of some sort. We could also start caring less about working for “cool” companies with ridiculous perks, but I don’t see any of that really happening. Companies spend a lot of time and money turning their offices into essentially frat houses for their 20-something engineers for a reason - because it works.

So, I guess I should look for some machine learning classes on Coursera. Anyone have any good recommendations?