But I feel that as time goes on, my competition will increasingly be not just those in my market, but across the globe. It's only a matter of time before programming labor is commoditized.
What are some strategies to deal with this beyond picking a hyper specialization?
Well, stop thinking about it. Not only it is depressing but it is also seriously wrong.
I've been hearing that since before I started. Not only did it never happen, but it's getting more unlikely to happen every day.
It's not possible to commoditize something that 99.xxx% of people are unwilling and/or unable to do.
Yes, most people simply don't want to sit at a computer all day and/or don't have what it takes to be a decent programmer. And everyday the barrier to entry is getting a bit harder with more tools and more technologies and more abstractions appearing, each adding a bit more complexity over the precedent.
If anything, look around you and watch the race to the top for the few who can follow. There are entire companies in our industry which exist to attract and bread the best and the brightest.
---
Now, I can understand why some people would be afraid of a commodity market.
Somewhere in the world, there will ALWAYS be a guy who only has $10 to pay for whatever thing he wants done AND there will ALWAYS be a guy that will offer to do the job for that price.
That first guy will always accept the offer because he has no seemingly better alternative and he'll just burn the money hoping to get something in return. (note: ain't gonna happen. You just don't get anything real for $10).
The point being: Just because there are some guys with no money and some guys who are screwing them. That doesn't mean that it's a "commodity market", let's just call that a "scam market".
Anyone serious who wants to get the job done or anyone who can get the job done will simply NOT participate in this scam market. When we're talking real work, there is simply no commodity market whatsoever (in our field).
You seems to be assuming the supply of software developers will keep outgrowing the demand for them. Why? I predict the exact opposite: As the developing world develops, local demand for software will keep outpacing global capability to create developers. I live in the developing world, I should know.
99% of people cannot play an instrument. 99% of people cannot draw. 99% of people cannot do math. 99% cannot develop software. And that's a conservative estimate.
Today's computers "Just Work", no one needs to know anything to use one anymore, and it shows. You find today people working as developers who would have a lot of trouble just using a computer from as late as 20 years ago.
Developers are getting dumber, not smarter. As abstractions have been piled upon abstractions actual programming skills have decreased. No one knows how to do anything anymore without an IDE to hold their hand and a web browser to look up everything. We've replaced the hacker with the hack.
Am I exaggerating? Try interviewing a few people for a developer position and see for yourself. The level of incompetence is astonishing. Degrees, experience or national origin seems to have no correlation whatsoever with their skills.
Rather, think of yourself as a problem-solver, who has many tools at his/her disposal, (a major) one being writing code.
This allows you to fit yourself into many different molds, rather than just a fixed position as a programmer, much like a factory worker at a manufacturer.
I personally enjoy thinking of myself as a consultant, as it allows me to focus on figuring out solutions to problems I encounter, rather than the tools I have at my toolbox. This is not always natural or easy, but a continued, concerted effort at developing this mindset has paid off for me.
Your response made me realize what I'm really asking...
How can I position myself independently as someone with this skillset (programming + wide toolbox) outside of a job?
Thank you, that's what I was really trying to ask.
In the end, we all are either a labor provider or capital provider. With the ongoing devaluation of all type of labor, instead of moving from one type of labor to another type of labor that may get devalued in the future, you should be thinking and planning about moving from being labor provider to becoming capital provider. You might want to consider exploring labor to capital conversion path.
- Maximize labor to capital conversion rate. Favor "love what you do" over "do what you love."
- Maximize storing of capital. Favor much lower spending than what you make.
- Maximize capital generation through stored capital. Favor experiences over things.
Once your capital is generating enough capital, you no longer need to focus on the devaluation of labor. You can focus on doing what you love irrespective of the value of that labor.
An actual abundance of capital will mean people can consume their capital instead of participating in the labor market. But they cannot, as you said, because they're poor, which means they lack capital.
You can see this in the hockey stick graphs of all sorts of debt in the global economic system. A lot of that debt, is counted as "capital". There's so much debt, so central banks and government think we have an abundance of capital.
But, a lot of that debt is never going to be paid back. That debt is only an appearance of abundance capital. An analogy would be the Venezuelan government giving out tons and tons of food coupons that can be redeemed next year. It appears there's an abundance of food, so the price of food initially drops. And then people realise the coupons are never going to be redeemed, the price of food will skyrocket.
Once there's a Minsky moment where everyone realises this, it will be a lot easier for people to generate money via real capital - for now the returns on capital are price controlled by the central bank, which exacerbates shortfall in real capital. When people realise there's a shortage of real capital, the price control mechanism will collapse.
And then, people will learn to invest again.
I'm not saying everyone can live off capital income, I'm saying there's potential for more people to do so.
Anytime you feel that the future will be X, while the present is Z, you should focus on being Y.
Techies will always think as techies. A techie that can think like a businessperson is as rare as a unicorn.