I’m also seeing developers with killer resumes complaining in community slack channels about not even getting called back for follow-up interviews. These are people that I would’ve cleaned up in referral fees back when the market was hot. Times have definitely changed.
It’s clear that the tech industry and engineering pay flourished under low interest rates and free flowing VC money. Those days are clearly behind us, at least for now.
[1] https://www.macrotrends.net/countries/AUS/australia/birth-ra...
EDIT: sorry didn’t meant to be dismissive of the person above, but usually this topic hits way too personal for people to change minds online (see: comments below). For any passers by genuinely curious exhaustive data reviews are available [2].
Tl;dr: Immigration does not depress wages.
[2] https://www.noahpinion.blog/p/repost-why-immigration-doesnt-...
Whether you count them as low or high, they are lower
You get an aging population requiring care, with less people to both physically and financially/economically fund them.
You also move from always having to build new houses and infrastructure to suddenly having excess housing and infrastructure that isn't needed. Not only does that eliminate a whole bunch of jobs and related economic activity but also drives prices down, etc.
I am sure this is an absolutely terrible summary but you can google population bomb, population decline, etc, for much more informed takes. But basically for the last 100 years the entire world and economy has run on an ever-inflating path and that could change at both a country and world level.
Try reading https://longnow.org/ideas/the-heresy-of-decline/
Immigration absolutely depresses wages - if you import more supply, what happens to the price? That doesn't require advanced economics to understand.
People were saying AI tools will create more jobs but it's pretty clear that this time is different and what used to require 2 engineers can now be accomplished by 1 engineer + AI copilots in the relevant domains. I think this trend will continue and the expected outcome is going to be lower demand and lower salaries for software engineers in basically all domains except maybe for very low level work like firmware, kernel drivers, and compilers.
The computers can learn to do your job too, as it turns out, which kinda makes a funny sort of sense if you think about it. After all, what should computers be more familiar with than computer code?
Imagine horse carriage drivers refusing to learn how to drive a car - this is them.
sysadmins refusing to automate are dying breed that will be replaced by smarter newgrads who are willing to grind and learn.
free market mechanisms and competition doing its work.
Computers aren't really "familiar" with computer code. (Or anything, but, pedantry aside). Computers don't "speak" code, or at least not at the level that most engineers are writing it. There's a whole Rube Goldberg machine of layers upon layers between a file with JavaScript in it and what the machine actually does.
I don't think GPT is taking the job of any engineer worth their salt anytime soon. I've used it plenty, but it's just not currently at a level that could replace what I do. Sure, it can write a test, boilerplate, or a function, but it just doesn't have the necessary abilities to build a whole "system" at this point.
That said, engineers who refuse to learn its capabilities might well fall behind. I think it's a big step but I don't really fear for my livelihood yet.
> I don't think GPT is taking the job of any engineer worth their salt anytime soon.
That probably depends entirely on their experience. As somebody fresh out of a bootcamp or a newgrad I‘d be somewhat concerned, especially if the company doesn’t want to invest in building up in-house talent because they know they probably won’t have enough retention to justify it.
I disagree that software engineering "happens in information space". I understand your point, and it makes sense, but coding just isn't the hard part of the job. It's dealing with people and requirements, and people who can do that are going to remain valuable for a long time (at least, until AI can just do it all without intervention from pesky humans).
Disagree because the answers and code snippets from humans are still vastly superior to AI and most questions have answers readily found on the first page of a search engine. A helpful human on the internet is more likely to rewrite all your code faster than you'd be able to cobble together some crap from a chat bot.
We need people in the trades, learn how to plumb is what I say.
I remember in the early 2000s after the first dot com bubble I was told “don’t go into computers, you’ll never have a job! That’s all going to be outsourced to India!”
Pessimists always find a way to convince themselves the sky is falling.
In 2023, everyone puts their personal data in the cloud.
Reality is not fractal. Signal attenuation exists in a variety of forms.
The difference between now and dot bomb is greatly improved computer, network performance, reliability, and many many more well trained people working on AI problems.
AI is generating rudimentary frontend code for me. I don’t need it to be Google scale. It may get complex logic wrong, but it can emit simple boxes and button code to cut-paste together just fine.
Horse and buggy makers did not vanish over night. The programmer signal of value to the economy is indeed attenuating.
I’m not talking about MBAs but younger people using AI at home now.
They won’t need you or Django in their future.
I’m booting a Linux from Scratch distro to an LLM and training it to normalize it’s initial code base and reboot itself. So far so good. Next steps are add a GPU rendered empty 3D viewport; think like a blank Blender project. Then add in NeRF libs and such to render my own content.
Constrained to a task and not used as a Hitchhikers Guide to the Galaxy, AI as-is does some mesmerizing stuff.
Reread the Google “no moat” memo; they and OpenAI screwed up with big models, said small tunable models are the way to go.
You go ahead an reminisce about 2005 and how much smarter you are than everyone. I’m going to iterate on new ideas with my kids.
You do realize that the complexity and necessary expertise doesn't go away just because some of the code does, right? Someone still has to untangle the human side of the requirements, specify what the software should do in technical terms, and configure it for the use case. Most software is concerned with its uniqueness and you can't train an AI to handle that part (where most of the time is spent). Seriously. Every single application that has ever been made is unique in ways that can never be reused and must be thrown away. Programming is creative and skilled labor, not mere routine tasks. By their very definition, statistical models cannot learn this. It doesn't exist in the training data and cannot be inferred. It requires reasoning skills from far outside the expected context. Humans use their lifetime of experiences in the real world to accomplish this. AI doesn't.
All that still requires a software engineer, and as soon as a project doesn't require code they'll immediately be occupied by another project that does. It's fascinating how clueless some people can be about the sheer amount and complexity of the work a software engineer does.
How can outsiders with little to no authority over anything within a business manage to get paid so well by that business? It's because there's no choice and the work is hard.
If an average software engineer spends 10-20% of their day doing creative work and 80% wrestling various build tools, writing semi-repetitive code etc., it’s not hard to imagine a world in which aggregate demand for these services still goes down.
We can get rid of junior engineers, but then there's no one to replace the senior engineers, not even the precious AI.
As it is, most businesses would love to hire more software engineers, not fewer. There's a shortage of money and talent, not work.
Who will be willing to pay junior engineers to learn the ropes when AI can do that part almost as well, with only a bit of senior engineer oversight?
There’s already a huge range of efficiency with programmers (ex. The concept of a “10x” programmer), and it’s not tightly correlated with head count. In most organizations, managers just pile more work on people who get more stuff done.
Additionally, so much of the day to day of being a programmer isn’t even about writing code.
I can understand having GitHub copilot write a snippet of code that you then use or modify but if you don’t understand what it’s doing, it’s not tenable. Which means you can’t completely remove a human worker from the process. What if it doesn’t fit your specific requirements and you can’t figure out how to tweak the prompt to produce what you actually need? Is it really that different than copying and pasting something from Stack Overflow?
What happens when your service gets hacked and nobody understands the codebase enough to fix it? You hire an outside firm to put the fire out but you’ve lost a ton of money, customers and are perhaps now in a lot of legal/litigation trouble.
What happens when frameworks and language change, and LLMs can’t train on new data because scraping has been blocked?
Creating good software is incredibly difficult, even for teams that are appropriately staffed with a good headcount of skilled developers and other support roles.
I actually think the opposite is going to happen over the next 10 years: I think software development is going to continue to get more and more complex and less efficient and more abstraction layers will continue to be piled on.
Programmers crave more subjective control over the code. But programmers do not lift their tooling and thinking to the level required, over a long grueling process to make it happen.
So instead we substitute in house-of-cards style abstractions that temporarily satsify the requirements. Destined to collpase under their own weight.
Experienced programmers say 'don't build abstractions' and instead we should compress code down into reusable chunks. To dig ditches instead of stacking a house of cards.
Neither make any real change to the art of programming and continuing the status quo, will forever 'incentivize' abstractions, because there is no tooling for squeezing in the subjective structures required in every program.
We so dearly love the ideal of mathematical certainty in code, but it brings a limit to our views on programming.
An abstraction is just a layer of indirection: https://en.m.wikipedia.org/wiki/Indirection
Frameworks are also abstractions. It’s basically, hey we are handling X for you so you don’t “reinvent the wheel”
Low/no code platforms are just another layer (could even say multiple layers) of this.
The idea of using an LLM to write code for you is conceptually similar. You’re leveraging code you didn’t write. Does it fit the rest of your codebase in style? In approach? But it’s worse because at least a framework or platform is packaged and versioned and you can update it. If your codebase has a bunch of LLM generated code in it, you’re fully responsible for that code. And the bigger that surface is, the more trouble you could be in.
I think LLMs and the recent jumps in that area are really cool and I do think some successful products and companies will be built on helping people use it, but based on what I know about them, I feel like calling them “AI” is a misnomer. There’s no actual intelligence or sapience, it’s still just pattern matching.
And if this is just a building block - the equivalent to getting synapses firing in the brain and they are able to scale this up to a point where something resembling real cognition is happening, all jobs are in trouble. I don’t see how it’d be unique to software development.
People use the word AI to refer to a picture, video or audio clip that (in effect) does an 'impression'. Like an actor doing an impersonation.
The abstraction thing is a big topic. An indirection, frameworks and LLMs are asbtractions that are 'flat' or expand outwards on the architectural blueprint of code(s). These are ideal, or semi-ideal code ideas that are understood objectively, built from a set of primitives that someone, somewhere chose.
The other 'abstraction' is the heirarchy of abstraction, from electricity, to binary, to machine code, to assembly, to C, to C++.
I think there is another "couple layers" of abstraction above programming languages as we have them. But there is a grueling No-Mans-Land of work to get to the 'next step up'.
If we can get above 'high level programming languages' then we can capture some subjectivity from the programmer.
I really struggle to think in flat abstractions or blueprints/maps of code, to my own detriment. But it does make sense as a concept.