It's
difficult to make predictions, especially about the future. I'll make
one I feel is likely: programming will continue to separate into
distinct specialities that exist as roles of their own. And, just for
fun, one that is perhaps less likely but that I really hope for: company
organization, especially for tech roles, will become more flexible and
decentralized.
I'm not sure where the trend originated, but a great example is the emergence of quant as a role unto itself rather than a special sort of programming. After all, quants are "just" programmers in a financial role with extensive domain expertise, focusing on domain-specific problems. And, in fact, this is fundamentally different from other sorts of programmers—but so are the sorts of things that programmers do at automotive companies, in sound engineering, in site reliability or even in frontend development. But, unlike all of those, quants managed to establish themselves as fundamentally distinct rather than yet another sort of programmer.
Sure, the difference is largely semantical, but it's a distinction clearly reflected in compensation, prestige and company culture. Having a full identity as a role of its own rather than a partial identity as a sub-role of "programmer" does not change the actual work, but it changes how people see the work, how they prepare for it and how they fit in larger organizations.
Another example, more current, is the rise of the data scientist… which is really just a quant outside finance. Having a word for it, though, seems to have revitalized the field. Or perhaps causation flows in the other direction, and we got a word as the field was expanding on its own. But, either way, being a data scientist is now a very real thing—and very different from being a programmer.
It feels like other specialities within programming have also been developing their own identities, just not to the point of budding off quite yet. I fully expect to see more and more of these as time goes on, although it's hard to predict exactly which ones will take off.
Programming, as a task, is inherently flexible. It's not constrained by time, or at least not realtime: with a few core exceptions, programmers do not interact with the world directly. Instead, they write code that will interact for them. Unless you're putting out an immediate fire, there's a clear separation between when and how you do your work and when and how it gets deployed and used.
This should, at least in theory, making programming really flexible. There's little need for set hours or a set location: it's not like a customer-facing job that requires constant interaction. And, to some extent, companies have actually been realizing this. So the trend has started, at least partially.
But not far enough. Yes, some companies embrace remote work—an increasing number of startups don't have a central office at all. But they're still an exception and some, like Reddit, revert as they grow. (Mostly for political reasons, based on what I observe as an outsider.) There's a lot of pressure for companies to conform to a bunch of expectations as they grow, and having a central office is one.
Another is having set hours, and expecting everyone to work the same amount of time. Again, programming is rarely time-dependent, so nothing fundamental gets in the way of programmers setting their own schedules—it's a cultural issue. (I definitely group communication concerns like having regular meetings into "cultural issues".) And again, some companies do a good job here, letting programmers come and go whenever. And some do a moderate job with flex hours. But many are still tied to a regular, factory-like schedule.
The biggest thing I would like though, and the one on which the least progress has been made, is a greater acceptance of part-time and more flexible work. As it stands, it's needlessly difficult—almost impossible—to find flexible part-time work as a programmer. It shouldn't be. I can still be productive without working 40+ hours a week. In fact, on a per-hour basis, I am actually more productive. (You should see how much I get done on personal project around 10 hours a week compared to actual work!) I am pretty sure that I could accomplish at least 85% of what I do now working three days a week. But good luck finding anything like that, especially if you have any other constraints on offers to consider. Even if you're willing to take a commensurate pay cut (and I am).
The problem is that people arbitrarily feel that this is unfair and a matter of laziness. There's still a large culture of viewing hours and hard work as important in and of themselves—and often as the only important metric. This is not a good state of events, but everyone does it, and there's a lot of pressure for it.
I think there's a decent chance of most of this improving, just because it would continue existing trends. Modern tech companies are already a lot more flexible than older businesses in this regard. But it's difficult and progress is slow—just like any other sort of progress, there are a lot of people pushing back against it, often with an unfortunate moralistic component.
Specialization
One trend I could see continuing is increased specialization in programming. Not all programming is the same, nor should we expect it to be. I believe there will be well-defined roles for specialized programmers that exist as entities—and career paths—of their own.I'm not sure where the trend originated, but a great example is the emergence of quant as a role unto itself rather than a special sort of programming. After all, quants are "just" programmers in a financial role with extensive domain expertise, focusing on domain-specific problems. And, in fact, this is fundamentally different from other sorts of programmers—but so are the sorts of things that programmers do at automotive companies, in sound engineering, in site reliability or even in frontend development. But, unlike all of those, quants managed to establish themselves as fundamentally distinct rather than yet another sort of programmer.
Sure, the difference is largely semantical, but it's a distinction clearly reflected in compensation, prestige and company culture. Having a full identity as a role of its own rather than a partial identity as a sub-role of "programmer" does not change the actual work, but it changes how people see the work, how they prepare for it and how they fit in larger organizations.
Another example, more current, is the rise of the data scientist… which is really just a quant outside finance. Having a word for it, though, seems to have revitalized the field. Or perhaps causation flows in the other direction, and we got a word as the field was expanding on its own. But, either way, being a data scientist is now a very real thing—and very different from being a programmer.
It feels like other specialities within programming have also been developing their own identities, just not to the point of budding off quite yet. I fully expect to see more and more of these as time goes on, although it's hard to predict exactly which ones will take off.
Decentralization
Man, I'm really liking those -alization words today!Programming, as a task, is inherently flexible. It's not constrained by time, or at least not realtime: with a few core exceptions, programmers do not interact with the world directly. Instead, they write code that will interact for them. Unless you're putting out an immediate fire, there's a clear separation between when and how you do your work and when and how it gets deployed and used.
This should, at least in theory, making programming really flexible. There's little need for set hours or a set location: it's not like a customer-facing job that requires constant interaction. And, to some extent, companies have actually been realizing this. So the trend has started, at least partially.
But not far enough. Yes, some companies embrace remote work—an increasing number of startups don't have a central office at all. But they're still an exception and some, like Reddit, revert as they grow. (Mostly for political reasons, based on what I observe as an outsider.) There's a lot of pressure for companies to conform to a bunch of expectations as they grow, and having a central office is one.
Another is having set hours, and expecting everyone to work the same amount of time. Again, programming is rarely time-dependent, so nothing fundamental gets in the way of programmers setting their own schedules—it's a cultural issue. (I definitely group communication concerns like having regular meetings into "cultural issues".) And again, some companies do a good job here, letting programmers come and go whenever. And some do a moderate job with flex hours. But many are still tied to a regular, factory-like schedule.
The biggest thing I would like though, and the one on which the least progress has been made, is a greater acceptance of part-time and more flexible work. As it stands, it's needlessly difficult—almost impossible—to find flexible part-time work as a programmer. It shouldn't be. I can still be productive without working 40+ hours a week. In fact, on a per-hour basis, I am actually more productive. (You should see how much I get done on personal project around 10 hours a week compared to actual work!) I am pretty sure that I could accomplish at least 85% of what I do now working three days a week. But good luck finding anything like that, especially if you have any other constraints on offers to consider. Even if you're willing to take a commensurate pay cut (and I am).
The problem is that people arbitrarily feel that this is unfair and a matter of laziness. There's still a large culture of viewing hours and hard work as important in and of themselves—and often as the only important metric. This is not a good state of events, but everyone does it, and there's a lot of pressure for it.
I think there's a decent chance of most of this improving, just because it would continue existing trends. Modern tech companies are already a lot more flexible than older businesses in this regard. But it's difficult and progress is slow—just like any other sort of progress, there are a lot of people pushing back against it, often with an unfortunate moralistic component.
No comments:
Post a Comment