HACKER Q&A
📣 nbzso

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.


  👤 textread Accepted Answer ✓
You could say that Google Translate etc has obsoleted the need to learn more than one spoken language. However, new languages also teach you new ways of thinking. Multiple studies have shown the benefits of being a polyglot.

I feel its the same with programming languages. This advice from Peter Norvig [1] was very helpful for me personally:

  Learn at least a half dozen programming languages. Include one language that emphasizes class abstractions (like Java or C++), one that emphasizes functional abstraction (like Lisp or ML or Haskell), one that supports syntactic abstraction (like Lisp), one that supports declarative specifications (like Prolog or C++ templates), and one that emphasizes parallelism (like Clojure or Go).
[1] https://norvig.com/21-days.html#:~:text=Learn%20at%20least,C...).

👤 JackOfCrows
Very few people remember this now but when outsourcing was starting to become a thing circa 1998-2000, it was "common knowledge" that learning programming or getting a CompSci degree etc. Was going to be pointless because all those jobs were just going to be outsourced to India.

You can see that has proven to be 100% accurate.


👤 superdisk
I think the current state of GPT-4 is overhyped when it comes to programming. It's novel and useful for steering you in the right direction and can reproduce simple hello-world like examples (even Pong and other common programs) but in my experience fails when things become even slightly nontrivial. Things might change but it seems like GPT-4 has similar performance to GPT-3.5 so there might be some limit to the scaling ultimately. Regardless, learning a new skill, even an obsolete one, is almost invariably a good and enriching thing.

👤 okaleniuk
For young people, I would recommend learning languages they would probably never use in production. APL, Forth, Prolog, Scheme, and one or few variants of Assembly. Unlike modern mainstream languages, these really expand your thinking vocabulary.

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.


👤 jstx1
> And what path would you recommend to young people who want to become programmers. Machine learning? Prompt engineering?

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".


👤 matt_s
ChatGPT is not here. Its certainly talked about, a lot, but for software engineering the proverbial answer to most questions beyond a beginner level is: It Depends. There are so many factors that go into building and maintaining a working, growing system beyond the text files that make up the code. The programming language is a tool. ChatGPT has potential to also be a tool. Humans still need to think through problems and constraints and come up with solutions.

If you're interested and programming is something you like, yes go learn a programming language and also learn software engineering topics.


👤 orionblastar
It reminds me about a story about robots trying to take over acrobats jobs. The acrobat did flips and when the robot tried to flip it damaged itself.

Has 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.


👤 BWStearns
You're not going to be able to assess the outputs of the LLMs if you can't program on your own. LLMs are definitely going to make us all more productive and maybe a bit cheaper in aggregate (supply and demand and all) but even assuming the current wildly impressive improvement curve keeps up it seems unlikely that programming will stop being required. It'll just change.

👤 richardjam73
I think the threat of LLMs (Large Language Models) is way overblown. They may even be helpful for beginners.

For young people learning to code and studying how computers work are the best skills to learn.


👤 lfciv
I've been recently thinking of this as similar to Data Warehouses vs a normal Relational Database. The Data Warehouse has a variety of usecases around analytics or marketing where it has replaced RDBs, but for other usecases – especially around your core application transactions – you still need your Database.

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.


👤 adamquek
You are still going to know how to code to troubleshoot and know when LLM is gaslighting you. You will also need to know enough to take advantage of all the new APIs that are coming out.

👤 giantg2
I don't even know what I want to do.

Maybe I'd recommend stuff like healthcare since that's going to still need individuals for a long time.


👤 aristofun
You don’t learn programming language for the sake of it. Nobody cares about the language anymore.

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.


👤 bradhe
Yes, of course. This is a silly question.

👤 mikewarot
I know a little Python... I'm considering taking on a fairly large refactoring job in Python because it's my favorite tool, and there were breaking changes made to the WxWidgets library that it depends on. I'll be using CoPilot to help.

👤 pawelduda
Absolutely yes and I would not rely on ChatGPT for anything more than simple snippets that can be quickly verified.

I think ChatGPT could be helpful with things like: "please convert this function written in language X to language Y in an idiomatic way"


👤 precompute
I don't think foregoing an education just because someone is better than you or that it couldn't make you any money makes sense.

👤 joshxyz
im learning rust

chatgpt is really good at explanations for code