Path to a free self-taught education in Computer Science
52 comments
·May 25, 2025iamleppert
You can definitely make the self-taught path work. I'm proof of that and have been working in industry for over 20 years. However, what I will say is the following: there are certain companies and roles which you will never be able to access. These are often times the best roles, best companies, have the most money, etc. A degree isn't just the time spent studying and knowledge -- you can do that part yourself. What's more valuable is the network and access to the alumni network of others who will hire you into their company just because you went to the same school as them. It's a big club and you won't be in it if you decide to self-study. That's the cold, hard truth.
So what's left for someone self-taught with no degree? You are left with all the jobs the others don't want. You'll be flipping through the crazies, outright scams, poorly capitalized companies, or places that are already in a state of distress. VERY rarely you will find a real job that you can plan to stay at for any length of time. You WILL be paid less, and you're more likely to get taken advantage of. You will have a harder time getting multiple offers at once, because your overall demand is lower. So that erodes your position in the market and over time it will feel like you're on a completely different tract financially. You will need to work twice as hard, because finding a new job is much harder, even if you're good. You will constantly be doubted, by first yourself and imposter syndrome and next by those around you who have degrees. Make one mistake and the consequences are that much more dire.
It's better than nothing, but if you have the opportunity to go to school (I didn't), do it over the self-taught route.
Scubabear68
I am most likely ADHD, probably in the spectrum to some degree.
Tried college three times and dropped out every time due to expense, boredom, and personal issues like my father passing away from cancer when I was 21.
I went into software development via tech support for a C compiler company, and worked up from there.
Worked for the NY stock exchange, two top tier brokerages, several prominent Fintechs and ultimately consulting into banks and payments companies.
It worked for me because I am largely an auto didact and do terribly in a school environment.
The lack of degree came up only a few times, and no one has cared.
At least in software development careers, degree matters very little to not at all.
electrolusty
I don’t mean to discount your personal experience, but I’m 100% self taught, and I’ve worked at some bougie megacorps, unicorns and startups of varying degrees of maturity.
I’ve never felt like doors have been closed or that others doubt me because of my lack of education. I’ve interviewed at Google and Citadel, had an offer from Meta, etc. It doesn’t feel like anyone has denied me opportunities outright.
I make north of $200k/year cash plus the equity and perks at an early stage startup. I’ve been through two exits so far. Nothing outrageous but I’m rich by most peoples standards. It doesn’t feel like lack of schooling has impacted me financially.
I did start programming and doing the startup thing at 19, so maybe the early start was an advantage. I could just be mind numbing lucky. But, from my point of view, warning the up and coming youngin’s off the self taught path is a disservice.
libraryofbabel
> from my point of view, warning the up and coming youngin’s off the self taught path is a disservice.
Hard disagree on this. It’s true there are a lot of successful people in the industry with no degree, or (like myself) with a non-CS degree. And I agree with you that the OP’s claim that there’s a ceiling for those people is overstated. But just because it was possible to have a successful start in the industry 10 or 20 years ago that way doesn’t mean it’s good advice now to tell 18 year olds that skipping the degree and self studying is a good idea. The job market is exceptionally tough currently for entry level engineers and not likely to get better, due to the end of ZIRP and AI productivity gains. Companies who have that rare entry-level position open can take their pick from a large pool of candidates. They will naturally prioritize people with a CS degree from a top school because without previous work experience that is the best signal they have to sort the deluge of resumes.
I still think software engineering is a good career choice for a smart kid, but it’s not the magic ride to prosperity it was 10 years ago. I would hesitate now to recommend any path into it except the top-school CS degree route. Sure, there will be exceptions, but you will have a vastly easier time if you follow that path.
zer00eyz
> due to the end of ZIRP and AI productivity gains.
I think you're missing the mark with this analysis.
If you go back to the original dot com bubble it was as much of a hardware bubble as a software one. Same thing with the mobile bubble. The AI bubble we are in has NOTHING to do with productivity and everything to do with hardware. I, as a software engineer am not going to come up with a product that can compete with any of the major players without a massive capital investment.
Meanwhile, the price to play as a software engineer is also driven by high costs. AWS, for better or worse is the model and the go to, and it is NOT cheap by any measure. Its pricing model looks more like the iPhone and less like an efficient market. AWS is MOST of amazons profit margins. It makes tech companies more like franchisee renting the location for their fast food joint and less like independent entities.
The thing is there are TONS of gaps in the software marketplace that need filled. These are companies that are going to be in the 2-3 million a year range and capable of being run by a small team (think ~5 people). Nothing that would appeal to the ycombinator set. You don't need Kubernetes, Kafka, or high performance bleeding edge Rust or massive Autoscaling to run these services. They are never going to get huge, and in fact they offer enough room to start another company of the same scale if one is ambitious and wants to diversify.
Does your average 18 year old know this? No, because most people who write code for a living don't seem to know where these gaps are. Do the math on what it takes to make 100k a year at 10 bucks a month... add a zero for a million, multiply by 3 for "small team"... The number is shockingly small.
Does your average 19 year old have the chops to figure this out? No, because 20 and 30 something laid off software engineers can't seem to figure it out either, even ones with "top degrees".
That doesn't mean that there isn't a path for the sharp young kid to "skip school" and go directly into industry. That path is open source. A history of strong contributions and being smart is going to build a better network than any CS degree ever would/will... However if you can do both, open source and a degree (from anyplace) you're even better off! The same could be said for working at Fedex, Walmart or Costco while you get a cs degree from anyplace and seeking a job in a corporate office after. You have a set of experiences that make you invaluable as a contributor.
Lastly, no one talks about the bad guys. There are plenty of scammers and thieves abusing technical skills who lack formal education and do well for themselves. If we're going to remove all the options and only have a narrow path, will we end up with more criminals and fewer contributors? This is sort of why "Russian hackers" is one of the givens in the industry (crime did/does pay well).
I still think software engineering is a good career choice for a smart kid, but you have to bring more to the table than just code if you want to prosper!
SaltyBackendGuy
As a somewhat accomplished self taught outlier as well, my perspective is slightly different.
While it's absolutely possible to no have a degree and succeed in megacorp, don't discount the randomness (luck) involved in getting the right experience and meeting the right people at the right time of your career (and aligning with market demands).
Please don't hear this as "you didn't work hard to get to where you are". I certainly believe that folks like us, self taught, are able to work hard and teach ourselves what's needed to get to the next level because we cannot rely on credentials to carry us. A lot of things still need to go right for us to be successful, more so than folks with formal education, especially in the early stages of our careers.
harrall
I know friends in a similar boat.
Ultimately you can get very far if you are naturally talented technically and socially.
But if you are normal like most of us, you are lacking in one or more areas and going to school (or attending conferences or maintaining a popular resource) can be one of those ways to shore up one of your “less natural” skills, but no step is strictly required and not everything works for everyone.
RHSeeger
Indeed, going to school for a degree in a programming related field (Computer Science, Computer Engineering, Software Development; whatever) is also much more likely to leave you with a broad knowledge about topics in the field (different algorithms, things worth considering when developing code/architecture, etc). Yes, you can achieve that same level of knowledge with self-study, but a lot of (most) people won't; because it requires going above and beyond for most self-study "curriculum".
"But if you are normal like most of us", you'll wind up a more well rounded developer with a college education.
coderatlarge
“The Federal Reserve Bank of New York released data on unemployment rates for recent college graduates (ages 22 to 27). The bank found that philosophy had an unemployment rate of 3.2%, less than computer science’s 6.1%, though computer science was more highly compensated.”
https://www.entrepreneur.com/business-news/college-majors-wi...
rxtexit
It probably takes the smallest amount of interaction with you to tell you are absolutely brilliant.
I am self taught and wouldn't hire myself to write anything software wise.
For the average person, a degree is to signal a person is at least not me.
At least smart enough to get through 4 years of CS.
If someone is upper level brilliant it is hard to not come out on top no matter what path they take.
That doesn't scale though for the average person and many are self deluded in their abilities.
zamadatix
I found there is some truth to this but it was almost all in the beginning and/or if you expect to be in ~the bottom half of your peer group. After those criteria pass it comes down to your overall ability to network throughout life (not just from a college) and general chance/luck (which remains a larger factor than most would like to admit).
What college can give you at the beginning of a career, beyond the premise of a guided education in the field of study, is a piece of paper that says "I really did learn some relevant stuff and have the ability to follow through" before you have a chance to prove these things in the field by already having had a job in it. It also gives you an initial chance to build a network but that's true of however you manage to spend your first 2-4 years getting into the field. After that initial in-field job or two the non-educational related value of a degree falls off a cliff (and the educational portion becomes an ever decreasing slice of job specific knowledge you acquire over decades).
My anecdote (that's all it is) comes from starting out without a degree and then getting a degree for the fun of it over a decade later. It's provided 0 value in any job, they've all come from references or recommendations from people I've worked with previously at this point. It was fun though, a chance to get involved with topics you wouldn't normally have a reason to touch.
rkagerer
I feel this take on it is a little over-dramatized. I empathize with the first part - connections are priceless when you're staring out - but in time you can and will build a reputation for your quality of work, interactions with (and then capability to manage) others, and achievement of results. All these can be developed at a no-name startup as well as at a FAANG.
I went to university but only apply maybe 5% of what I learned there in my day job. I founded and grew a company, also worked in senior roles at others. When I interview for engineering positions, I'm much more interested in other factors than what school you went to or who you've brushed shoulders with.
I recognize parent commenter's experience may be different, and give solid props for their self-taught journey. (In fact someone who can figure things out without having to be spoon fed is exactly the kind of person I want on the team).
ghaff
I'd probably argue that most people don't have (personal) connections starting out. Maybe, if they didn't go to the right school or school at all, someone they know is the foot in the door.
>but in time you can and will build a reputation for your quality of work, interactions with (and then capability to manage) others, and achievement of results.
That IS their network for a lot of people. OK maybe there are smaller companies that are 50% $SCHOOL grads. And there are other companies that tend to bias towards a certain group of schools. But I actually think that going to, say, Harvard is a secret handshake is overstated in a lot of cases.
I sort of suspect that my undergrad may have had something to do with a job at one point but the fact that I got in through a senior person who liked my work played a lot bigger role.
peterhadlaw
I've been personally involved in the hiring process of our startup and I give you my word the school you went to makes no difference. In fact one of my favorite coworkers that I had an honor to work with was self taught and had a philosophy degree. In fact I've seen big school degrees go straight to heads and egos and been actively an obstacle to those folks.
cedws
I also wouldn’t disregard the experience of university itself. I went the self-taught route, left school at 16, built a career for myself to get to where I am now at 24, but I do have regrets. Going into working in an office basically terminated my youth right there and I haven’t had a social circle since. Not having debt is nice but if you can afford university both in terms of time and money, and come from a family you can fall back on, I’d say just go. Once you start work there’s no going back. You’re in the cold hard world.
cortesoft
> What's more valuable is the network and access to the alumni network of others who will hire you into their company just because you went to the same school as them.
This seems completely untrue in my 20 year career experience. I have hired dozens of people for both large and small companies, and networks do matter… but I have never once seen the network be from school. It is always about people you have worked with before. Even my coworkers with degrees don’t have contact with their schoolmates anymore, it is always people they worked with.
brewdad
It depends on the school and often aligns more closely with something like a fraternity. I have definitely known people who got their job through a frat brother’s recommendation or literally knowing the secret handshake.
cultofmetatron
I'm somewhat sympathetic to this having been self taught myself. there was def a struggle in the beginning even getting low hanging jobs. It means you need to invest a lot of your off hours learning new stuff and getting ahead. a lot of university educated CS majors don't learn anything new after university and only put in just enough to do their job. being self taught means you need to be a lot more proactive about getting ahead of trends and being the guy on the frontlines where there isn't a whole lot of people that know a technology at all.
I myself was lucky enough to jump on the javascript train before javascript ate the world. 8 years in I switched over to elixir because i saw in it the potential to be the best stack to build MVPs in. These days, I'm maintaining one of those projects as CTO and we are interviewing candidates for a position. I can tell you personally, I value what you did at your last job and your side projects more than what you did in university 10 years ago. The one issue as someone from the interviewing side is that it takes a lot of effort to actually do an interview properly. I spent a lot of time putting together a coding test to test specifically for the tasks you'd be workin on as well as doing it with our applicants to make sure they aren't using vibe coding to do a half assed job. Its worth it though to make sure we make the right hire. when you're a startup, every hire can potentially make or break the company.
aardvark179
So several people in this thread have talked about academia giving you a network, and getting jobs via that, but have also conflated that with companies only hiring from particular schools.
The network of contacts you make through university and your careers is a mechanism by which you hear about jobs you might otherwise never get the chance to apply for. That’s a very real thing, but will tend to be dominated by contacts you make after university as your career progresses.
The other thing of needed a degree from a particular university, or a PhD, isn’t so much about a network as that degree being a shibboleth. The person reading your job application sees that and knows there are questions they don’t need to ask.
These are both things you can, and may need to, work around if you go down the self taught route. Depending on the work you want to do you may need to make sure you do work which either you can point to or other people will see so that you hear about those jobs, or get a referral to avoid the normal job requirements.
tomnipotent
> you might otherwise never get the chance to apply for
It kind of reminds me of the whole "luck is not a strategy, but increasing your number of attempts is". Having a network increases the number of chances you have to get lucky. I have a friend that joined a work softball league, and that network eventually led him to a role with another company participating in the league.
fzwang
I run a comp sci education program to help students self direct their education[1]. We sometimes reference the OSSU curriculum.
Althought there are lots of benefits to the self-taught route, there are some caveats which students should be aware of. You will have to work harder on the "signaling" and networking. There are definitely social benefits in being associated with a university. And a lack of degree will mean you're "marked"[2], which you'll have to overcome. A setback or mistake will be attributed to your lack of degree, whether justified or not. And some hiring managers can't take the political risk of hiring a non-degreed candidate. Not insurmountable, but this means we work on it from day one. If you do decide to self-direct your education, the benefits are that you learn faster and don't waste time spining the hamster wheel, so to speak, to grind out courses. Everything you learn is in context and relevant. If you realize you miss some fundamentals, you'll just go back and learn those concepts/topics. It's a different way of learning, which imo, is inevitable for technical professions. But it's not for everyone, and some students just vibe with it more.
What's sad is that many students are sort of forced into the self-taught route, because they don't have the financial resources to go to college/university. And if they're not aware of the trade-offs, they could really struggle.
[1] https://www.divepod.to [2] https://en.wikipedia.org/wiki/Markedness
Aurornis
I’ve followed and part-time mentored several people through their self-taught education. There are a lot of pitfalls and traps that can send people down the wrong path if they’re not careful.
One that I did not expect but that seems obvious in retrospect: It’s really easy to start reading Reddit or watching Twitch streams of developers ranting about the industry and think that actual skills don’t matter any more. There’s a temptation to think that you’re a fool to study and practice the job skills because what you really need to do is optimize for interview skills. So they drop everything and starting grinding LeetCode, putting unfinished “side projects” on their GitHub that have all the right things in the README.md (just hope nobody actually looks at the code) and memorizing S.T.A.R. format responses for the common behavioral interview questions.
This strategy actually worked reasonable well for a few years, but the game has changed and most companies are better at catching professional interviewers who don’t know how to do much else.
I should note that this mindset isn’t unique to self-taught people: There’s a parallel epidemic of cheating in college among students who see it as “just a piece of paper” and think they’d be foolish to actually learn the subject material. This also hits hard when they reach graduation and are faced with the current style of interviews which are not as easy as they expected to bluff your way through.
fzwang
This is something I had to deal with as well. It also surprized me in terms of how limited their information sources are, esp with younger students. One thing I found helpful is to actually introduce them to engineers in person (like a take your kid to work day), which I think grounds them a bit. But this box-checking influence is everywhere, including in the K-12 curriculum. In some ways I understand their perspective. Most schools/teachers do have a box-checking mentality, and I think students intuitively understand that what these "educators" are after is a metric. They don't actually care about real skills. But to your point, the rest of the world actually values competency and it's something students should strive towards for the long-term.
trklausss
What I’m missing is some math like differential equations (both ordinary and partial). Does anyone have a good (and free) resource on that?
theusus
A better alternative imo https://teachyourselfcs.com
ModernMech
Awesome collection of resources! Although:
After completing the requirements of the curriculum above, you will have completed the equivalent of a full bachelor's degree in Computer Science. Congratulations!
Is not strictly true. I've been part of CS program accreditation, for example:https://www.abet.org/accreditation/accreditation-criteria/cr...
The program outcomes for a CS degree accredited by ABET is:
Graduates of the program will have an ability to:
1. Analyze a complex computing problem and apply principles of computing and other relevant disciplines to identify solutions.
2. Design, implement, and evaluate a computing-based solution to meet a given set of computing requirements in the context of the program’s discipline.
3. Communicate effectively in a variety of professional contexts.
4. Recognize professional responsibilities and make informed judgments in computing practice based on legal and ethical principles.
5. Function effectively as a member or leader of a team engaged in activities appropriate to the program’s discipline.
Really, this list of resources only speak to #1 and #2. A little bit of #4, but it seems to be an afterthought in the list of resources. However, self-study is not going to get you #3 and #5 at all. Typically in order to fulfill these requirements, the curriculum would include much more than just the technical topics listed.Indeed, OSSU says that included courses must "Match the curricular standards of the CS 2013: Curriculum Guidelines for Undergraduate Degree Programs in Computer Science"
I'm familiar with this document. It includes this:
The education that undergraduates in computer science receive must adequately prepare them for the workforce in a more holistic way than simply conveying technical facts. Indeed, soft skills (such as teamwork, verbal and written communication, time management, problem solving, and flexibility) and personal attributes (such as risk tolerance, collegiality, patience, work ethic, identification of opportunity, sense of social responsibility, and appreciation for diversity) play a critical role in the workplace. Successfully applying technical knowledge in practice often requires an ability to tolerate ambiguity and to negotiate and work well with others from different backgrounds and disciplines. These overarching considerations are important for promoting successful professional practice in a variety of career paths.
The reason I'm saying this is because often times, an undergraduate I'm advising will come into my office with a schedule of 12-15 credits of tech/math/science. They will explain to me "I only want to take technical courses, I don't see the purpose of taking courses in English or History, they are a waste of time." And I get that, I felt that way in school too. I thought those courses were preventing me from learning CS, but it was only after I left school when I realized all those "soft" courses I had taken actually prepared me to face the challenges I would in CS.So I will continue to watch this resource, because I love a good compendium. But I would say they should not say what they provide is "equivalent of a full bachelor's degree in Computer Science" because even the standards they say they are trying to meet indicate they fall short.
fHr
Ah yes more people in CS are needed, let me check that chart with the most % of jobless people out of all fresh grad majors, cs is almost leading now.
mmooss
Don't try to be entirely self-taught. Everyone needs guidance and feedback from experts in the domain; otherwise you are certain to misunderstand things, have large blind spots (truly blind; you'll be unaware of them), not understand how things apply in real situations, and have no exposure to the latest knowledge.
It doesn't have to be via college; there is apprenticeship, even if usually unofficial in IT, at many jobs. (College can be fantastic in many ways if you have the opportunity - don't let the reactionary politics ruin your life-changing opportunity - especially if you are intellectually curious.)
Also, be very choosy about who you learn from; I'd be much more choosy about that then about what you learn, or even where I work or the job I do - do anything to work with and learn from the best people. The range of knoweldge and skill in the real world is almost impossible to conceive of, and a lot of it is so much BS. If you learn from C-level people, you will have C-level knowledge and skills and never know better until you meet someone who is B-level or A-level - there are entire organization and towns of C-level people. One big advantage of going to someplace like the Bay Area is the community of highly-skilled people, many on a level you are unlikely to meet in most other places, and being exposed to the newest ideas. Just being there can raise your game, if you take advantage of it.
selfselfgo
[dead]
If you're an experienced engineer that wants to give back to learners, OSSU is a great place to do so. This can look like:
- Setting a regular time that you'll pair (or mob!) program on a side project of your own with OSSU learners. - Developing familiarity with one or more courses in the curriculum and responding to students who have questions or are stuck. - Attending weekly check-in meetings, sharing what you are working on and listening to what learners are working on.
To do so - Visit our Discord server: https://discord.gg/wuytwK5s9h - And ping me @waciuma or the @tutor role
I'm one of the leaders of OSSU and we agree that community, networking, and projects are part of a complete education. That's why we celebrate not only the professors and universities creating free courses, but also the many engineers and practitioners that have volunteered with OSSU learners over the years. I hope some of you will join that group!