2/3/2026 at 7:10:37 AM
My two cents as a university teacher:In my view AI tools are a sort of super-advanced interactive documentation. You can learn factual information (excluding allucinations) by either asking or looking at the generated code and explanations of it. But in the same way documentation alone was not a sufficient learning tool before, AI is not now.
What AI cannot give you and I suggest you to learn through other resources:
- algorithmic proficiency, i.e. how to decompose your problems into smaller parts and compose a solution. You don’t necessarily need a full algorithms course (even though you find good ones online for free) but familiarising with at least some classical non-trivial algorithm (e.g. sorting or graph-related ones) is mind-changing.
- high-level design and architecture, i.e. how to design abstractions and use them to obtain a maintainable codebase when size grows. Here the best way is to look at the code of established codebases in your preferred programming language. A good writer is an avid reader. A good programmer reads a lot of other people’s code.
- how programming languages work, i.e. the different paradigms and way of thinking about programming. This lets you avoid fixing on a single one and lets you pick the right tool for each task. I suggest learning both strongly-typed and dynamic languages, to get the feeling of their pros and cons.
That’s an incomplete list from the top of my mind.
You can still use AI as a tool in learning these things, but good old books and online resources (like Coursera) worked really well for decades and are not obsolete at all.
And the last thing is the most important: curiosity about how things work and about how to make them better!
by gignico
2/3/2026 at 10:22:12 PM
This is great advice and will give a good background in programming that mirrors what you would learn in a CS program.I'd also like to suggest studying the practical side of building software that many university programs don't spend much time on. To help address this gap, John Ousterhout wrote A Philosophy of Software Design. He has retired from teaching, but captured the hard-won lessons in the book.
This type of book offers the perspective I wish I had developed more before working in software teams early on, as it would have made me a more valuable developer right off the bat. Instead, I went deep on architecture patterns and language theory, becoming somewhat insufferable to my peers (who were very tolerant and kind in return!) for the first few years. 20 years later, I can see that I was trying to hammer a CS "peg" into a business-software-shaped hole :)
by fancy_pantser