Dear Student: Yes, AI is here, you're screwed unless you take action...

Dear Student: Yes, AI is here, you're screwed unless you take action...

Two weeks ago a student anonymously emailed me asking for advice. This is the reply and if I was in your shoes this is what I'd do.

So, I read your blog post "An oh f*** moment in time" alongside "The future belongs to idea guys that can just do things", and decided "fine, I'll go try cursor for myself and see how well composer does". I normally use copilot and some claude, but not much since getting the context of my 50kloc project into Claude is rough, and I didn't want to start paying for API use so I could start using i.e aider (I normally get copilot for free). I heard some claims about cursor and friends that I assumed were pumped up LinkedIn talk, so I really didn't think about it until now.

For example, I've been working on a little JNI module for my android app, but it has a bunch of weird memory errors because managing the JNI resources is borderline impossible and C++ RAII has piles of insane footguns. So, I planned to rewrite it in Rust so I could 100% isolate the memory unsafety. This was a tall order, it was a three-way integration between a bulky C++ library with it's own CMake setup, and the JNI code of my app. It required some really messy translations from a rust trait into a C++ abstract class. It would take a lot to integrate it into my app. I decided it was a good enough benchmark to see if composer was up to snuff.

First go around was not well, I gave the lump sum of all the work I wanted and it choked and went around in circles. Tried to go back to debugging the memory problems manually, but honestly I hate C++ and decided to another go around with composer and the rust module. Second time I sliced up the task into smaller but still pretty big pieces and fed them one at a time to composer.

This time, composer probably wrote 99% of the code. Porting the previous shell script, making the shims I needed to map a trait to a C++ abstract class, porting the manual JNI code, and the massive buildscript linking it all together. It debugged its own work  when I pasted error traces in (sadly since this rust module was shoehorned into my app composer agent couldn't really test on it's own). And it just worked. There was some stuff it couldn't do, mostly choking on big error traces and incremental build bugs (thanks gradle), and sometimes I needed to point it in a better direction architecturally, but otherwise I barely touched the code. All I did was direct composer to do what I was thinking of. I then just killed time while it did the work.

I'm at a loss now. I'm a student. Fresh grads and interns aren't seen as idea guys that can get stuff done, they're seen as useless ticket monkeys to be herded by seniors. Now Cursor Composer is the ticket monkey presumably to be herded by a senior, not me. And maybe even the senior isn't needed if a scaled enough reasoner model can do the task slicing. I've already felt like I've been shuffling chairs on the titanic, talking about projects and internships as if this threat doesn't exist, and honestly this confirms it. Is there literally any reason why I shouldn't just throw away the 10 years of my life and do...I don't even know what. At this development pace I don't even know if I have time to "pivot" before everything else gets solved by o4 or whatever. What do I even do anymore?

Thanks,
An Anonymous Student

that's a strongly worded headline...

It's just facts, I'm a straight shooter. I'd rather tell it to you straight and provide actionable advice then placate feelings.

The steps that you take now will determine your success rate with obtaining a SWE role going forward. If you are a high autonomy person then you're not fucked, as long as you take action.

it has all happened before

The Software Development industry works in cycles, this is the third bust after a boom that I've weathered through. Understanding what happened in the 2000 dot-com bust is important because it lead to the 2017 boom.

So, let's rewind time.

It's now the year 1998 and if you knew how to make a website using Dreamweaver, how to cobble some perl together and use RSH to connect to a Sun e4500 then you were guaranteed a role as a software engineer.

After a massive run-up of hype and an injection of too much venture capital money resulted in a talent market where there wasn't enough software engineers in the world.

Life was great. That is, until it wasn't. The bubble burst in 2000 and an engineer called Philip J. "Pud" Kaplan chronicled the downfall on a website called "Fucked Company dot com". To put into perspective of how important and meaningful this website was at the time - it's the equivalent of HackerNews (or Slashdot)

Suddenly all the jobs overnight dried up. Students who had just graduated and were looking for a sweet-sweet software engineering positioning were up shit-creek just like you are now (if you don't take action).

Seemly overnight the employment switched from a sellers market (ie. in employee favor) to be a buyers market (ie. in employers favor) because there was an oversupply of senior engineering talent desperate to find their next job. Why would a company hire a graduate when they could obtain someone with five years knowledge on the cheap.

It was a COVID19 moment in time, if you were born in the wrong year (ie. year 12 high school students disrupted in Australia) then your life was utterly turned up-side-down.

That generation of graduates simply missed out on opportunities and core life experiences…

it took many years to recover from the bust

but here's the kicker. Because there was an under-supply of graduates as companies weren't raising the next generation it lead to a shortage of talented software engineers in the market. The result was inevitable.

The market switched sides to where the employees had all the power and due to an another massive round of venture capital injection money was flowing freely.

Every company out there wanted to attract "google pedigree talent". Companies everywhere started offering perks and compensation packages to tempt them to come join their company.

L3 at Google is A$280,710 AUD/year. L5 at Google is A$592,734/year. L8 is A$1,655,874/year.

Word got out and suddenly everyone wanted to become a software engineer because the money was absurd. YouTube is now a thing, all sorts of grifters turned up selling courseware on how to get a job and boasting about their millions - which resulted in even more people becoming software-engineers (just for the money) because it was an easy path to fast retirement.

All you needed to do was get in the door, hold on for dear life and hop between the levels.fyi ladders.

It's now the year 2023 and after a strong 14 years of growth, the industry fell on it's face once again. Interest rates went up and parking money-with-risk at Venture Capital firms was no longer desirable place for investors because there were other alternatives now available at lower risk.

Whilst I managed to avoid the original dot-com dust, this one affected me personally. I was one of the software engineers caught up in the 219,709 layoffs and it took me (with my experience) six months to find a suitable replacement role.

If you graduated from university or entered the job market in 2023 then you were competing against me (and/or circa 219,709 qualified employees with experience).

ie. screwed…

it is now the year 2025

AI is at our doorsteps and the employment market has not recovered from the last bust. You're lucky in a way because you realized early what's coming and have time to take action. There are many software engineers that simply aren't gonna make it because they haven't had the epiphany that you have and haven't even started progressing through the people stages of AI adoption...

this time it's different

A brilliant co-worker penned together the following chart and the following words which explains the impact of AI for different levels of engineers...

Junior Engineer

You’re just starting your work in a new codebase and you’re still piecing together a solid mental model of how things actually work. Here, an LLM is a lifesaver. Stuck on an error? An LLM can give you an explanation that makes sense. Need to write some code for a minor feature, or do a library upgrade? All of this can be done much faster with an LLM.

An LLM can already feel like it can do a huge part of your job for you. That's why I believe there’s a real danger zone here. If you lean on an LLM as a shortcut to get unstuck in the same way as you’d reach out to your more senior colleagues when you’d otherwise have to ask – then fine. In the real world, chances are you won’t have the luxury of avoiding LLMs even if you wanted to. However, if you end up copy-pasting code back and forth between your IDE and the LLM without truly understanding what’s happening or why, then advancing your engineering skills will become a serious challenge.

Mid-Level Engineer

You’ve built up a fair amount of context and can navigate your codebase with confidence. You still find that LLMs make you write code much faster. You can ship features faster with copilot’s completion, use agents to write less boilerplate code, learn new frameworks much faster with ChatGPT.

However, you’re already bumping into cases that an LLM simply can’t handle yet. It won’t decipher what the customers actually wanted from the ticket you were given, it can’t use your debugger to pinpoint a dangerous race condition, and it can’t help you much when you’re responding to a midnight on-call alert.

Senior Engineer

You've got a great mental model of the whole codebase you're responsible for. You know all of its ins and outs. Hell, you probably wrote a decent part of it. Sure, you can code much faster, and you enjoy it, but how much time do you really spend writing code? When you work on the roadmap, it can’t really help you much. When you dive into a weird heisenbug, it can’t really help you—it gets confused. When you’re writing an extensive design document for the next project, it can only help you with the formatting and structure, not the hardest part – the substance. It just doesn’t have all the nuance and context you’ve accumulated in your head, and even if you wanted to, you couldn’t write it down.

Many of your friends and colleagues are excited, and you want to be excited, but you just can’t. The AI is simply not there yet. This is probably the level where the most scepticism about LLMs comes from, and the more technical or unique your domain is, the stronger the disillusionment.

Staff+ Engineer

While there are many staff archetypes out there, one thing is common between them all – your role is often to light the path for others to follow. And to achieve this, you have to experiment a lot.

Here’s where LLMs can start shining again. Writing proof-of-concept projects has suddenly become much easier. If you need to show the feasibility of taking an approach, an LLM can help create a half-baked, barely working solution much faster than without it. And the best part is that once the LLM gets stuck, you can very quickly get it unstuck using the extensive domain knowledge in your brain.

companies are closing their doors on juniors

Staff+, senior and mid-level engineers (whom invest in themselves) are now more desirable because they can use their expertise to a output a multiple factor more code and thanks to wisdom earned over the years (or tens of years) they are able obtain better outcomes from AI as they have experience to know when the AI is bullshitting and have developed taste for what does or does not look right.

No other profession trivialises their profession to the degree of software
Software in 2022 is overwhelmingly built with little to no consequence and is made up of other components which are overwhelmingly developed by unpaid volunteers on an AS-IS basis that are being financially neglected. Systemically, I’m concerned that there is a lack of professional liability, rigorous industry best practices, and

companies don't even know how to hire anymore

With hundreds of thousands of dollars at stake, all the incentives are there for candidates to cheat. In the video below is one of many tools that now exist today which hook the video render of macOS and provides overlays (similar to how OpenGL game hacks work) that can't be detected by screen recording software or zoom.

The software interview process was never great but it's taken a turn for the worst as AI can easily solve any thing thrown at it - including interview screenings.

Another co-worker of mine recently penned the blog post below which went viral on HackerNews. I highly recommend reading the comments.

AI Killed The Tech Interview. Now What?
How can we do better interviews in the age of AI

companies business models are in jeopardy

It's now incredibly easy to clone any SaaS company out there in existence if you know how to drive AI and have the expertise.

You've already read the article below where this was hinted at so I'll supplement with the following wisdom. I suspect the future of work is going to be lots of small 10 person companies operating similar to how a law-firm works - with profit sharing between the senior partners.

The future belongs to idea guys who can just do things
There, I said it. I seriously can’t see a path forward where the majority of software engineers are doing artisanal hand-crafted commits by as soon as the end of 2026. If you are a software engineer and were considering taking a gap year/holiday this year it would be an

so, when does this story get good?

If you graduated last year and are entering the workforce this year then it doesn't unless you take action. It's a COVID19 moment in life again.

If you are a student who has just started university and will be graduating in four years from now - there will be software engineering roles, although they will be different.

What's likely to happen is - if more companies close their doors to juniors then the next generation of juniors won't be raised - similar to what happened in the dotcom boom/bust - and we’ll get another boom - which will lead to the incredible perks and fat paychecks for people with the right skills because not enough juniors entered the workforce…

what would I do if I was in your shoes..

Understand that time is on your side if you take action. You have about a year, maybe less. Whatever do you - do not squander it. Your edge right now is a large majority of software engineers have not discovered what you have. When they do - it's game over unless you have an edge.

Learn the fundamentals that university typically does not teach:

  • Create an application (it can be anything, even a basic todo app website)
  • Learn how to do property based testing and learn how to craft code that can be tested.
  • Setup a CI pipeline (something other than GitHub Actions).
  • Learn SCM (source code management) such as Git from first principles (pdf).
  • Learn how to release software in increments using SCM+CI+Property Based Testing.

Find yourself a peer that pushes you to the limits of learning
The standard pace of learning is for chumps. If you are better than the average then you can fold space-time and outpace the competition. Read this blog post.

There’s no speed limit | Derek Sivers

Do not join a Startup
In the last VC boom and bust that happened before AI, many startups raised too much capital or engaged in outright fraud to pump their customer numbers up by cross-selling between each other. The AI bust that's about to happen is going to be brutal for them - there's many many living dead zombie companies out there.

Only join an existing startup if it pays well (ignore the equity/dreams of a jackpot) and if you find an operating environment which pushes your growth and learning to the limits.

Understand that most Startups fail and you could be out on your ass overnight. Ensure you have plenty of cash stowed away - it could take you +6 months to find a new role.

Don't get a job that has an ban on AI coding tools
You'll be doing yourself a huge disservice. Look for companies that encourage it.

Obtain skills that are going to be highly desirable by every employer
I'm going to call it right now - ignore commodity bullshit disposable knowledge like AWS - focus on what people don't know and what will be in demand.

Become a subject matter expert in MCPs. There is brand new territory open to you right now to be a prolific open-source author of MCPs as not many people are creating them at this moment in time.

Pull apart https://github.com/block/goose and https://github.com/All-Hands-AI/OpenHands. Learn how they work and then build your own AI coding assistant from the ground up - from first principals.

You want to be the employee that companies are fighting for because you have 6+ months edge on everyone else and are bringing new ideas/techniques to the table. Become the one that understands what all these tools do - under the hood - better than an engineer who's 20+ years into their career who hasn't been paying attention.

Focus on shipping with rust
Every programming language community and ecosystem has it's window in time where it attracts brilliant minds. Right now, that's the rust ecosystem. It's full of innovators - you want to be hanging out with the innovators.

If you focus on learning something commodity - such as typescript - you are positioning yourself incorrectly. Having said all of that, programming languages no longer matter but rust has a unique property where it's able to achieve better outcomes with LLMs due to it's typesystem that other programming languages (except haskell) lack.

Understand how your work directly translates to business value
The organizational abstractions layers are shrinking. Going forward it's incredibly important to think and act like an entrepreneur. You aren't a software engineer who types code into an IDE - those days are gone. Instead you need to understand how your work directly translates to business value and to achieve that you need to become a product engineer. Find yourself a product manager (or founder) who has immense domain depth and befriend them. Learn what are high value problems to be solved and discover their pain-points/research items by walking in their boots or in the boots of a customer. Be a doctor, not a waiter. Learn a little bit about business and finance.

Build a widget, not an aeroplane
When building, start small. As soon as you make the tiniest of things, share it with the world. Take an approach of building lots of small things that compose well that can combined to make something big. It's a marathon, not a sprint.

Build a public profile
I can't stress this enough. So many opportunities in my life which yielded fruits only happened because I manifested the luck. Once you have a couple MCPs under your belt and you are on the way to building your own AI coding assistant - start networking. Don't network to get a job. Network to share your knowledge with others.

In application this means:

  • Creating your own personal professional website (ie. name dot com) and regularly posting to it your learnings. Start small - build this - https://til.simonwillison.net/
  • Creating a GitHub account and start publishing all your work there
  • Publishing your MCP tools on npm and/or crates.io (recruiters scour these two)
  • Attend meetups - they are always looking for speakers. Public speaking is hard, no matter how good at you it always remains hard. Push past it and start sharing your knowledge.
  • Identify peers and build relations with them. Share your knowledge without asking for anything in return.

Play with the tools, develop edges and unique insights...

You are using Cursor AI incorrectly...
I’m hesitant to give this advice away for free, but I’m gonna push past it and share it anyway. You’re using Cursor incorrectly. Over the last few weeks I’ve been doing /zooms with software engineers - from entry level, to staff level and all the way up to principal level.

ps. socials @ https://x.com/GeoffreyHuntley/status/1895043009991032996