Ask HN: Would you consider starting to learn a programming language now?
So my question to you is this:
Would you consider starting to learn a programming language now that ChatGPT is here? And what path would you recommend to young people who want to become programmers. Machine learning? Prompt engineering?
I would be grateful if you could share your thoughts and opinions on this matter. Thanks.
44 comments
[ 0.33 ms ] story [ 106 ms ] threadHas any of the AI ChatGPT generated code pass quality control or patched to prevent exploits? If not then code for quality and security built into your work.
Yes I am learning Python.
For young people learning to code and studying how computers work are the best skills to learn.
You can see that has proven to be 100% accurate.
LLM is another tool. Until it can talk to a stakeholders and build something it can be accountable for to a high standard that actually solves the problem and does well at the 1000 or so factors that make good software. I don’t worry about it right now.
AI is a threat to programmers precisely when it is a threat to civilisation. It may change the job substantially, but change is normal, so did the www, mobile, VC, cloud, Javascript explosion, functional programming and so on.
Become a software engineer and use the best tools available to you to learn and do your job. This means LLMs and everything that was available before them like search, stackoverflow, documentation, forums, books, courses etc.
You don't need to work on machine learning in order to take advantage of it.
"Prompt engineer" is a bunch of bs, stop trying to make it happen. The language models are a useful tool, they're not your job. It's as stupid as someone claiming to be an "IDE engineer" or a "stackoverflow engineer".
Agree if you're using ChatGPT to learn/generate/debug code for you.
But if you use an LLM to generate, summarize, or classify text from within an app then I think it is a skill just like being able to work with the Stripe API. Since the API takes freeform text as input and the output varies based on how things are worded, there is some extra nuance needed to use it correctly but I think that's basically it. Also, there are chances that the skill will grow stale quickly as LLMs improve.
I feel its the same with programming languages. This advice from Peter Norvig [1] was very helpful for me personally:
[1] https://norvig.com/21-days.html#:~:text=Learn%20at%20least,C...).chatgpt is really good at explanations for code
I'd be curious where it failed for you.
So perhaps if it builds the system it can build new few features just fine, but it struggles to problem solve when the original design doesn’t follow its expected pattern.
I've also been using it while writing Common Lisp, and I'm not sure if it's just because it's a more obscure language, but it commonly produces nonsensical code, recommends functions that don't exist or work differently than it thinks they do, or produces non-idiomatic weird stuff.
It also falls apart when writing z80 assembly, again just generating nonsense. It really is a cool tool though, and I use it to get me steered in the correct direction. I've seen other people mention that it can identify unknown unknowns, and I concur it's an amazing tool for that. We'll see if with more specialized training on programming-related datasets if it can get better, I wouldn't write off the possibility. It won't be stealing your job in its current state, though.
I've been using it for Common Lisp as well and have had the same experience. For example, when asking it to help me generate some simple CRUD operations using the cl-sqlite library, it just comes up with function names that simply do not exist in that library [0]: `sqlite3:execute-command` `sqlite3:with-query-results` `sqlite3:get-result`
[0] https://cl-sqlite.common-lisp.dev/
LeCun at least believes this is a fundamental limitation of AR-LLMs that can't be overcome (e.g. his "Unpopular Opinion" slide -- https://drive.google.com/file/d/1BU5bV3X5w65DwSMapKcsr0ZvrMR...).
And the practical reason why I'd recommend learning these now: you'll never have time to play with them when you're not young anymore. The whole domain of knowledge they represent will forever remain a missed opportunity.
In my book Geometry for Programmers (https://www.manning.com/books/geometry-for-programmers), I also advocate investing in mathematical education and a computer algebra system. Any system. I propose SymPy but it's only because it's free and ridiculously simple to get started with.
The reason for this is also simple. Mathematical knowledge is non-perishable. ChatGPT can write boilerplate for you, and it any language too. But to solve a real-world problem with math, you need a computer algebra system to solve your equations, and your own head to compose these equations. That's something beyond the reach of LLMs.
I've opened it to skim a few times, and here's what I've realized:
- purpose-built machines (and languages) are always better at their purpose than general-purpose languages/machines
- I don't know nearly enough math for APL to [fully] make sense
- a great deal of elegance and methods of thinking have been lost as languages (virtual (and physical)) disappear
- flexibility is a wonderful thing in languages and hardware
If you're interested and programming is something you like, yes go learn a programming language and also learn software engineering topics.
You learn to be a software engineer. Language is just one of the obstacles to overcome on your way of delivering value or a product.
Nobody not even most of the people (let alone ai) will do this job for you. And this is what you get paid for. Not for typing compilable letters.
Some of us do
>Nobody cares about the language anymore
Only kinda. Yes, strictly speaking, the "language doesn't matter" (only the frameworks and APIs do). But practically speaking, if you're in a room of Python programmers, and you're the lone weirdo trying to write in VB6 (or vice versa) ... you're gonna run into issues :)
Maybe I'd recommend stuff like healthcare since that's going to still need individuals for a long time.
Similarly, if you're doing something like generating medical/therapy notes, or generating SAT questions then GPT is great, but for transactions or cases where exact behavior is a requirement, then you sort of need a discrete set of instructions that only a programming language can provide. You're not going to see payments systems built by GPT in the short term at least.
I think ChatGPT could be helpful with things like: "please convert this function written in language X to language Y in an idiomatic way"