The plan 6 months ago was - get good grades, go to a good uni, get a CS degree while doing programming to pay for uni/do a degree apprenticeship, and go into a CS career. Without LLMs messing the world up, I think it's a pretty good plan. I'm a good programmer for my age and I'm academic.
However, with recent developments, that seems borderline foolish. I'm interested in physics and engineering, I think I could enjoy a career in either, and I've still got time to pivot to either. I might be able to write better code than GPT-10 - might - but there would surely be increased competition. I also just don't find asking a LLM in the "correct" way and having it spit out code trained on millions of other programmers interesting in the slightest. I worry that actually knowing how to write code without a LLM will go the way of knowing assembly and having intimate knowledge of a computers internals.
I'm frankly tired of hearing about LLMs, but I know that I can't just pretend they don't exist. I have less than a year to make a decision on which uni courses I apply to and I don't know whether I should abandon a sinking ship or hope it's alright and it stops here, as an aid but not something which ruins programming.
I've seen people saying "But we'll still need to translate client requirements to prompts" - 1. I doubt that'll pay well, and while that's not my primary motivation it is something to consider before committing myself, 2. I'm not interested in being a human-bullshit to AI-bullshit translator.
And yes, there's more to CS than programming, but not in a way that pays the bills. If I pivoted I'd still write code "The old fashioned way" for fun.
So: What do I do? I'd appreciate some advice.
Thanks :)
Not gonna lie, as an experienced engineer I'm also worried and anxious about ChatGPT (combined with the economy, tech layoffs, inflation...). But what else can I do? If my job disappears due to LLMs, I can't think of anything else I could do to pay the bills that wouldn't also be at risk.
So being pragmatic the best thing to do is to continue doing the best job I can. If that involves using LLMs to increase my productivity, so be it.
Now, if you want to go to CS just to get a programming job at some company and you are doing this for money, I would indeed ask you to reevaluate. If you like programming as a hobby, a good way to kill the passion is to turn it into a boring 9/5 job. Physics and engineering may use programming as a tool and that may be more interesting to you?
That said, LLMs will not make a dent anytime soon. Yes they will plagiarize code and spit it out in a way that's similar to what you have requested – and for this very reason, have been banned at my Fortune company (Intellectual property is tricky). But they have no reasoning capabilities, there's still demand for solving actual problems. These days, writing code is a fraction of what I do, a lot of work goes into syncing with other teams and figuring out _what to write_. When I actually sit down to write code, that usually takes just a few days. That pales in comparison to all the architecture and coordination work that had to happen to reach that point.
Even if we assume that computers will write the code for us and it's no problem, that would only save a few days for most of my tasks. And any task where it would save more than that probably isn't worth my salary at all.
This might heavily affect pure programming outsourcing companies that only write code and require detailed specifications. That might be a true concern for them. Everything else will just adapt to the use of a new tool.
Like you mentioned, few people program in assembly these days (although some still tweak and plenty more read assembly) but I don't really see anyone complaining about that.
All of which says: 1) you don't need a CS degree to work as a programmer 2) you aren't going to be able to predict the future well enough to know what's happening ten years from now anyway, but... 3) you don't need to, you just need to keep being able to learn new things and adapt
Many people who got physics degrees in the early noughties ended up working in finance. Many people who got engineering degrees ended up working as programmers. If you get a technical degree of some sort, it demonstrates that you can handle technical work, but you shouldn't expect it to turn out to be the "right" major, regardless of which specific one you pick. Things change too fast, and rarely in the predicted way.
We might end up using LLM's a lot in programming, although this sounds a lot like lots of previous hype, both around "AI" and around various other methods of programming without programmers. But I wouldn't advise choosing your major based on your ability to predict whether or not it will pan out, and if so whether or not that will increase or decrease demand for CS majors.
In my experience, in both business and academia, bullshit intolerance is a severe career limiting trait.
With your aptitude for physics and mathematics, have you considered some other field of engineering? In all fields of engineering strong programming skills are a strong form leverage for your core work. A friend of mine was in a similar situation to yours many years ago. He choose surveying and he is now the owner of a substantial company, making a comfortable living.
Once school winds down and life picks up, you'll have less time to sit down and deeply read anything.
Build your mental toolkit while you have the luxury of time.
At least, that's what I'd tell my younger self.
I'm not saying not to study computer science, but a lot of it is free and its applied foundations are in the open (free and open-source software).
Novel ideas come from the synergy of thinking and implementation.
Mathematics is the baseline.
From what I've seen, GPT isn't architecting systems. It writes code snippets--basically the stuff you can copy/paste off stack overflow. The only difference is now instead of Googling and searching for the code snippet, GPT will sometimes just give it to you. But once you need something unique, or something that's not just one little piece of the puzzle, it can't do it.
I suspect once you know how the sausage is made, you'll understand how short sighted this question is.
Also if you want to make the most money, get the heck out of CS and into finance.
Decide based on what interests you most.
IMO, taking programming classes in college is a waste. It’s nearly all the type of thing you can learn on the job or in an online course. The real reason to take CS is if you’re interested in applied math, because most math departments lead you into pure theory, but this depends heavily on the school.
So, as someone who was also unsure of things once, and also have an interest in physics and engineering at your time: Chances are, even if you pivot to one of those focuses, you'll end up in programming anyways. A lot of physics majors end up in programming, many computer and electrical engineers end up in programming. There's just more of those jobs available. I should know, I was a computer engineering major, I worked in embedded firmware for 2 years before I was pulled back in to web development. I wanted to design processors.
Don't worry about GPT. It's like saying VSCode is going to replace software engineers because it has autocomplete. It's going to make you more productive, it's not going to replace you.
A lot of the articles you see floating around about "the end of programmers" are written by people who think software is designed by managers, which is only true in workplaces that you would not want to be in. If you can independently design and implement software, then you can work at a company that treats programmers like craftsmen, which is more rewarding both mentally and monetarily.
That said, the tech industry tends to move faster than undergrad currriculae. It's likely that any specific technologies you learn in school are already obsolete[0]. Focus on the fundamentals (CS as a subdomain of mathematics) and you'll find your knowledge has a much longer shelf life.
[0] When I was in university, the more "vocational" classes offered by the CS department tended to teach libraries and languages that had already fallen into disuse outside. Things like OpenGL immediate mode when the world had moved to shaders, or CVS when everyone used SVN and Git had been just released.
Go broad, things are changing fast it’s better to hedge your bets.
AI, computers science and robotics will completely change our world in this decade.
But personally, if CS is your passion and top choice, go for it and don’t doubt yourself. It’s true the field could be changing, but someone is still going to need to understand something, even if the LLMs do a lot of the lifting. And if you think programming is at risk, there are 100 other roles in the office that are much worse off. The Office 365 demo from this week has got to scare the pants off middle management and anyone who’s job is responding to emails, attending meetings, taking notes, interpreting simple data in excel and summarizing a project status in a PowerPoint deck. And by the way, that tends to be most people in most offices. Actual knowledge work is rare and usually rests on a few shoulders.
Personally, I am betting that the impact is large, but will be spread out over 15 years and create a ton of work for technical folks in the meantime.
GTP3 was a breakthrough. We’ll figure out how to integrate this level of AI into our lives, and there will be incremental improvement, but who knows when the next breakthrough will be. What you’re predicting, with GTP10 being able to write large amounts of code is just not possible with incremental improvements. GTP has no internal representation of the world, and so it struggles with novel problem solving that would be trivial for a human.
2) no, LLMs are not taking dev jobs anytime soon so you shouldn't worry about that. I know this is probably boring to hear to the point you don't believe it, but LLMs don't and can't replace actual good devs, and yes, someone still needs to translate requirements to code. You may not understand this until you get into some real projects with some real dumb people at a position higher than you for a while to realize that.
You seem to have the same misunderstanding most CS/programmer students have - Your job and your skill is likely not going to be writing code. Writing code is the easy part.
I would love to see a test where a company hires fewer devs and the managers/product teams try to supplement using AI to write the code. It'll never ever ship.
You won't be a "human-bullshit to AI-bullshit translator"... you will be a problem solving human. It's up to you if you want or find value in using AI to help get you past some boilerplate code, but that is a small part of the job.
If you don't think it will pay well, that's maybe a fair gamble, but not one I would take that bet having been in the field for 20 years... even face to face human interactions struggle to do this job well, this IS the job in many ways, not the code itself. AI is pretty far off from filling any gaps besides giving a good answer to a great questions IMO. I have used it in my day job, and it kinda sucks, you have to know what to ask and have to recognize what are bad answers based on experience. It's basically just stackoverflow++ right now.
You should consider majoring in something other than CS, not because of LLMs or anything like that but because there is tremendous value in having an intersection of trades that you are good at. I went for Electrical & Computer Engineering in school for this reason (and the fact that I didn't want to waste my time&money taking formal classes for the vast majority of things I've already learned before entering college).
Electrical/Computer Engineering is a sweet spot because you get to learn hardware very intimately but also usually take upper-level CS classes. Learning the hardware also makes much better software engineers. I've yet to run into a single employer in the tech space that doesn't treat the degree as the same or better than a CS degree.
1. There has always been competition in CS. If not LLMs, there are international developers and bootcamp people and just regular engineers. However, good software engineers from universities are still finding good jobs. Generalists are common, specialists are hard to find and companies will pay the specialists what they are worth.
2. Modern software engineers reply on networks similar to LLMs all the time. Think StackOverFlow or google. LLMs will just be able to generate better responses that will be quicker to find.
3. If there is a LLM that can program as good as a well educated SWE, many more jobs will be replaced besides programming. I reckon a LLM will have a much easier time understanding physics, which changes a lot less than CS.
4. Don't concentrate all learning in one place! You could do a double major with physics or a minor. You could do computer engineering or you could do a business minor with CS. Nobody knows the future, we can only guess. However, in the case that CS becomes totally replaceable by LLMs, it will be good to have other skills.
5. Remember that your major does not define you! I know many people who studied physics in college and ended up in the banking industry. Many others who studied engineering ended up in a software development role. Just because you chose a major now does not mean it defines you for the rest of your life. You can always pivot careers, go to grad school, or shift departments within your company!
It is more about becoming a specialist in a subset of CS where
think you may be thinking about it
1. Programmers will always be needed for maintaining and upgrading LLMs.
It’s not really about what you choose but how you do the thing you do. How well you can apply yourself to it. You want to find work that gives you flow state.
My 0.2c as a cinema studies/filmmaker turned PM - there are so many soft skills I acquired pursuing a totally different dream. And yet they all turned out being exactly what I needed.
HN is filled with squares hyper-optimizing for sensible logical choices. Advice is older folks give each other is more conservative and about capturing trends because that’s the safe thing to do. We have kids, deteriorating bodies and brains. At 17 you should do opposite: maximize risk for the next few years - you will regret not taking advantage, not developing character, not using your youth to it’s full potential (especially spectacular failure).
If building things on computers is what you want, no new trend will change the fact that you will build great things.
When I was young, people told me that if I didn't study engineering or medicine I risked a life of poverty or suffering in dirty, dangerous, or degrading jobs. So I studied computer science (and was lucky to find I do enjoy it).
Well now that LLMs can write code I can tell you that if you study CS you might still end up unemployed. I doubt it, but the possibility is there and it's real.
If I was 17, I would want someone to tell me the field that is so challenging and in demand that no AI could ever master it and my future will be secure. I don't have know any off hand.
So I think you need to look inward and read more about these fields you are considering, reach out to current students and/or professors, and see which one will make you want to get out of bed in the morning and be your best self even if you had to do it for minimum wage because AI has destroyed the labor market.
(But I don't think will happen for a couple decades at least.)
This, to me, is all the information you need (even though you are making this statement as an argument for the opposite viewpoint). You are studying an in demand field that you love. That makes it highly likely that it will pay your bills and then some.
The field will change. So will the tools. Possibly interfaces. You might leverage LLMs as your trade tools. They may replace google search for finding answers to well-formed queries the way google search replaced comp.lang.x . But unless humans stop having ideas we will always need human engineers that will transform them into an actual thing.
As a last thought, I would pick a decent knowledge in an adjacent domain that sounds fun (aerospace, biology, chemistry, mechanics, economics, EE, whatever). This will make your core CS skill even more in demand. My 2c.
My two cents: If you’re interested in engineering and physics, you should explore that. Does your university have a CompE or EE program? At mine a lot of the classes between different eng programs overlapped so it wasn’t difficult to switch.
But you could also just pivot because no one in the tech industry really cares if you have a CS degree, and it sounds like you’d still enjoy coding anyway so you’ll keep learning on your own. The CS curriculum is going to feel painfully old fashioned compared to what you’re learning on your own, though there are some useful fundamentals in there.
You could also take some classes in AI in addition to the run of the mill CS stuff.
> And yes, there's more to CS than programming, but not in a way that pays the bills
I'm curious what bill paying career you think is readily obtainable with a physics degree.
Moreover, while the GPT/LLM stuff is very exciting, it is coming out of the CS field. If you truly think it's transformative, that shows you the potential of CS and programming and is all the reason to pursue a CS degree.
Stick with CS if you like it—the career prospects aren't going anywhere. However, if you're just trying to get paid, there's always finance.
So even in that pessimistic world view we will need smart problem-solvers, and CS is as good a training for this as any. Enjoy!
And if we don't not even need people to run it, then I hope we enter the glorious future where we don't need to do anything thing anymore. AI will build and run our powerplants and our farms, provide healthcare and brew our whisky, and we can all collectively retire. Somehow I don't see that happening.
Edit: another thing to remember. To be able write code better than gpt10 you need lot more rigor than going to a coding boot camp so folks like you will be even more valuable!
I asked it to do something a little more complex. In three tries, it got about 75% of the way there, then just...ground to a halt. Each time I asked, it took a completely different approach. I mean completely, ranging from wrapping native APIs to spawning a process to run commands.
If you like to write code, keep going with it. I look at ChatGPT like Jarvis from Iron Man, or SolidWorks for mechanical engineers.
Schmidhuber says that between one key innovation to the next, the time interval is divided by 4. We have entered the most noticeable part of the exponential growth where each year from now to 2040, you will be seeing very noticeable progress.
By 2030 your life as a software engineer will be very impacted.
So if you want to stay in engineering there are not many options.
I subscribe to the law of contrary public opinion: if the man on the street is saying one thing, bet the other way.
It's very hard to say what fields will be less affected or will be affected positively by AI. I will say some of the best programmers I've known didn't study CS.
People used to say that computers themselves were going to cause mass unemployment.
If you don't do CS what would you do?
If for some hypothetical reason you were forced to do something for the rest of your life for 8 hours a day without getting paid, what would that be?
If you want to make money, the picture is less clear - hopefully LLMs will reduce the demand for code monkeys which is skewing dev salaries to such absurdly high levels (though admittedly this is less of a problem in the UK).
If you want to feel some sense of pride or accomplishment in your working life, I'd advise engineering instead. I work for a FAANG company but my friends all have real jobs like "teacher" and "engineer". I'm much wealthier, but they are much happier.
For now, don't worry about it and just go to a good uni and enjoy the 4 years (definitely do an undergrad-masters course, not just a BSc). Keep an eye on the economic climate in years 3 and 4 - if you think you have it in you and no obvious better options are available, do a PhD with the intent of ducking out of academia immediately afterwards.
Good luck!
In practical terms, LLM will open more doors for programmers. Not less.
if you are in it just for easy faang money, maybe not.
https://twitter.com/ID_AA_Carmack/status/1637087219591659520
nothing stops you from enhoying both industries though.
Think broader.
Right now our only interface to these powerful models is prompts, but this is an artifact of how we discovered them.
Future you will not be (paraphrasing) "finding the right prompt to have an LLM spit out the right code" nor "translating client requirements to prompts".
Instead you'll be letting an LLM fill in the basic details of code, syntax, systems, and propose algorithmic approaches that you pick and choose from, while you think bigger and write programs with with substantially more complexity and capability.
How this could become a less-remunerative activity I have no idea!