Self-taught
How to get good at programming without a CS degree
Getting genuinely good, not just employable, comes down to four habits: build hard things end to end, learn the fundamentals underneath them deeply, practice deliberately every week, and get feedback that you cannot argue with. A degree packages those for you. Without one, you have to supply the structure yourself.
1. Build things that are hard to fake
Tutorials feel like progress and are not. Pick projects where the result either works or does not: an interpreter, a database, a ray tracer, an emulator. Interpreters are an especially good first one because they touch parsing, data structures, memory and performance, and Crafting Interpreters walks you through two of them with a test suite. See how to build an interpreter.
2. Learn the fundamentals deeply, not broadly
The gap between self-taught and degree-holding programmers is usually not frameworks; it is algorithms, data structures, and the math to analyze them. You can close it, and go past it, with the deepest source there is: Knuth's The Art of Computer Programming. It is slow. That is the point. If you want broad coverage of every CS subject instead, see the self-taught CS roadmap.
3. Practice on a schedule
Skill comes from repetitions with feedback. Two algorithm problems a week, every week, for over a year adds up to all of NeetCode 150. One Knuth section a week with real exercises adds up to the whole series in about two years. A fixed weekly slot beats bursts of motivation.
4. Get feedback you cannot argue with
Tests that pass or fail. Accepted or wrong answer. A program that runs in an emulator or does not. Checkboxes are easy to lie to; external checks are not. cracked.guide verifies interpreter chapters with the book's own test suite on GitHub Actions, NeetCode problems from your public LeetCode profile, and MIX programs in a browser emulator.
What about getting hired?
Getting good and getting hired overlap but are not the same. For a job soon, portfolio projects and interview practice matter most, and a structured program can help (see bootcamps and the degree compared). For depth that lasts a career, you need the slow work above. You can do both: the cracked.guide path keeps two NeetCode problems a week running for 75 weeks alongside the deep work.
Questions
Can you become a great programmer without a degree?
Yes. Plenty of excellent programmers are self-taught. What they share is years of building hard things and learning fundamentals on purpose.
What should a self-taught programmer learn first?
Program fluently in one language, then build something substantial like an interpreter, then study algorithms and data structures properly.