Skip to content(if available)orjump to list(if available)

Self-taught engineers often outperform (2024)

austin-cheney

As a self taught developer who has spent most of their career in the big corporate world surrounded by computer science graduates my experience is this:

The self taught developer will eventually figure it out, if they are intelligent enough to approach the given problem.

The computer science graduate will generally not even try to figure out a problem in completely unfamiliar territory. Of course this varies by personality, so this is probably only true for about 85% of the computer science graduates. They cannot proceed in the face of high uncertainty.

What that ultimately means is that the computer science graduate is way more compatible in the big corporate world where they are an interchangeable cog that can be replaced at any moment. They operate in a world on known patterns just like their peers. The self taught developer, however, is constantly innovating and doing things in somewhat original ways because they have learned to not waste their personal time on unnecessary repetition, and that cavalier lone gunman attitude scares the shit out of people. Yet, those self-taught people tend to deliver vastly superior results.

Most developers don’t seem to care about superior code. They care about retaining employment and lowering anxiety in the manner that emphasizes least disruption.

brettgriffin

I'll concede that most CS curricula are so far removed from practical development (intentionally) that it is not an immediate indicator of performance, but to suggest that 85% of CS grads can't figure out a problem in unfamiliar territory seems ridiculous.

If there is a virtue to CS degrees, it's that most engineering tracks require an immense amount of coursework in hard sciences that require a high intellectual aptitude to complete.

I'm really struggling to believe that a majority of people can work through that material and then can't do the type of work that most developers do. And in the most difficult realms of development, I think you'd find a majority of the developers have advanced degrees in CS.

I think having a deep interest in software is more likely to yield traits you're describing (and described in the article). Some people who have that didn't study CS. A lot did.

kcplate

This mirrors my experience of nearly 40 years in tech as well. In the past when I was in roles where I was hiring SWEs, I would have definitely given an advantage to a self-taught dev over a CS grad provided that they were generally equivalent in all other aspects for the role.

wakawaka28

Are you self-taught? The only people I've seen who think self-taught is better are the ones that are themselves self-taught. A degree is like extra experience plus mentorship under your belt... Self-taught individuals don't understand what they're missing, in most cases.

nothercastle

Eventually figuring it out is not optimal in mega corp. If you are in eventually figure it out territory than you are using the wrong cog for the job. Find the right cog in the drawer and you will have the results faster in most cases

boricj

Sometimes, megacorp hits a problem and it doesn't have the right cog in the drawer. Maybe it's because no one in-house has the needed knowledge for it. Maybe because it's a genuinely hard problem. Maybe it's because everything's on fire.

I'm a hybrid of self-taught and formally trained developer, with a chaotic twist. Most of the time, I do normal work. Sometimes, the megacorp hits a problem that it cannot solve; when that happens, I'm summoned from high-up, summarily briefed and then air-dropped like a paratrooper into unknown territory.

I'm the one called in when there's no one else left to call. There's nothing I can't seem to solve under these conditions, but I tend to deliver Faustian solutions: I'll save the day, but it will cost you. I won't go into details here, but some of my unholy and heretical contraptions I've produced in those situations took years to subsequently defuse.

austin-cheney

That depends entirely on the business and the experience of the given developer. There is a false perception that inventing an original solution is high risk. Risk is accounted for by the prior practice of the person doing the work and the degree of testing upon that work. This common false perception is Invented Here Syndrome.

In some cases it makes more sense to the business to approach an original solution as determined by external constraints in the project, such as eliminating dependencies, achieving a superior performance target, or unique security constraints.

Usually the primary concern in the big corporate world is hiring and firing, everything else be damned.

nothercastle

Mega corp doesn’t care about quality of product for the most part. Shareholder value in the right quarter is the name of the game. Often that means predictable and low risk as opposed to better or cheaper

wakawaka28

>The computer science graduate will generally not even try to figure out a problem in completely unfamiliar territory. Of course this varies by personality, so this is probably only true for about 85% of the computer science graduates. They cannot proceed in the face of high uncertainty.

Generally, self-taught programmers make shit like this up to feel good about themselves. What are the odds that the article is also written by a self-taught programmer?

The truth is, most self-taught programmers don't actually learn enough to make it in industry. The ones that do make it pass at least some threshold of knowledge at some point to be able to stick with it.

There may be occasional gaps in "practical skills" like using particular tools and libraries among college grads. But these skills are easy to pick up on the job. The advanced stuff that really benefits from a bit of handholding is taught in school, which self-taught programmers skip entirely.

Quarrelsome

I want to ask just to ensure I'm not getting an unrepresentive sample; is it just me or are college educated developers often complete walkovers?

I've been in quite a few orgs now (and always the only self-taught) where business run roughshod over dev and people are seemingly unwilling to stand up for the big picture even just stand up for basic best practice. The absolute insanity of code I've seen, all maintained by degree educated engineers who don't seem to care that much about the long-term future of what they work on. I'm starting to wonder if academia also teaches compliance to hierarchy as part of the process.

I worked in a department of a fortune 500 org with a unsecured server where everyone was told to log in over http using basic with their org creds (i.e. the creds that give you access to everything in the org and are effectively your corporate identity) everyone merrily did this without question, except me.

Granted, it was on the internal network but they had that setup for YEARS, with a privilege escalation just out there waiting to be discovered. I had a workaround but that expired due to some network changes, so it came to a head, they refused to allow me to install a cert myself and then I was the only one putting my foot down about it. I got put on disciplinery and was then forced to reach out to the Corpo HQ security team (who did side with me) and then got shit-canned by my business unit as a result. I still cannot fathom how people in more senior positions than me, with apparently better educations than me, square that one in their head, like I was the problem. To me, its like the technological equivalent of not wearing pants, and it just baffles me that my demand to wear pants was framed as the problem.

IceDane

I think all this focus on degrees in your response as well as the others is misguided. I think the real problem is just that they don't give a shit. Giving a shit is the first step towards becoming competent.

This isn't really surprising and can hardly be unique to our industry. I think you can ask anyone in any industry if they have to deal with chronically incompetent colleagues who, despite of all external indicators (degree, education, background, etc) saying they shouldn't, still just suck at their job. They will all reply that of course they have to deal with such people.

For a lot of people, this industry is just a job like any other. They and their brain clock out at 5 immediately and do not think about programming or software engineering at all until the moment they are forced to.

And obviously, that's fine. I can't rewire their brain. I just wish I didn't have to work with them.

Quarrelsome

I agree and I don't mean to discriminate, its just one particular unique demographic I have and I'm likely over fitting it as a lens. I've worked with plenty of degree educated engineers who are extremely competent but it just bugs me that they all seem to fold in an instant when encountering resistence up the chain. Perhaps it is simply survivorship bias.

freshtake

The reactive ingredient is passion, not the learning modality. Low motivation is really limiting, no matter how you like to learn. Of course, this topic is hard to discuss in a quantitative way because the number of engineers you come across in your career is a minuscule fraction of the total. Hard to draw broad conclusions like this, but here are a few:

- Formal education is great for foundational concepts (math, hardware, operating systems, compilers, graphics, etc.). Self-taught approaches tend to be goal oriented (I'm learning X because I want to do Y), which can overlook fundamentals that are important. When you don't know what you don't know, having someone to efficiently guide you can save a ton of time, and for some topics, that mentor is a great textbook or teacher.

- Most engineers I know would consider themselves a mixture of formal and informal/self-taught. Again, if you have passion for engineering then you probably like to learn and build, which means you're complementing any formal training with your own tinkering.

I've met and worked closely with amazing engineers and have never found their education style a distinguishing factor. Their passion however, was obvious.

Also, the examples given in the post (Linus, Margaret) were incredibly academic :-)

louthy

> The reactive ingredient is passion, not the learning modality.

As a self-taught programmer I agree with this. I started teaching myself on 8 bit computers in the mid-80s and didn't go to university. By the time I got my first full-time programming job, at the age of 19, I'd already been programming for 9 years. By the time most people are leaving university I was already nearly 15 years into my programming journey. It's hard to ignore that kind of passion and drive.

I'm now four decades in and love it in the same way I did at the start. I'm a maker, I like making. I keep reading the papers and am constantly interested in where this thing is going ... and I write a lot of code!

However, I don't like the premise that self-taught engineers lack foundational concepts just because they didn't go the academic route. I think many of us find the academic aspects just as interesting -- it really depends on the field you're in I think. For sure, we don't normally have the time to do a deep dive of something, but by the time you're decades in you've probably got just as many if not more 'foundational chops' than someone who spent a few years at school.

Anecdotally, as someone who's hired and fired plenty over the years, I think there is something to the Self-Taught Engineers Outperform theory. But I think it's purely that they spend much more time doing. They do more in work and they do more in their free time. The passion brute-forces the learning.

danaris

I think that what most people mean is that with a self-taught engineer, you have no way of knowing whether they have the foundations. It's going to be much more common with self-taught engineers than with formally-educated ones to have areas of surpassing brilliance, and areas where they don't know their arse from their elbow, and no easy way to predict what those will be until you get to know the specific engineer.

With formally-educated software engineers, so long as the school they got their degree at is a reputable one with a decent program, you can be reasonably confident that they'll have a solid foundation, and if you're familiar with the institution you may even know what their strengths and weaknesses are likely to be.

louthy

> With formally-educated software engineers, so long as the school they got their degree at is a reputable one with a decent program, you can be reasonably confident that they'll have a solid foundation

Based on the 100s of candidates that I've interviewed over the years, I disagree. In fact I often wonder what on earth people are doing at these university courses, because they rarely seem to have even a basic grasp of computer science. I've had to personally mentor many (academic route) engineers over the years on what I would consider absolute basics.

Frankly, I don't consider a degree a useful barometer of quality at all. They're only useful if the candidate is applying for their first job out of university. After that, experience is much more important and I basically ignore the education part of a CV.

positron26

Yeah, being lead to some water does not create dependence on being lead to all water.

If there is a consistent argument, it's that self-taught people have all demonstrated leading themselves to some water.

zahlman

> The reactive ingredient is passion, not the learning modality.

Sure, but passion also drives self-teaching. It's less necessary in a classroom setting because there's always someone trying to keep you on track.

> Self-taught approaches tend to be goal oriented (I'm learning X because I want to do Y), which can overlook fundamentals that are important.

For some, understanding a system can be a goal in itself.

bevr1337

> When you don't know what you don't know, having someone to efficiently guide you can save a ton of time, and for some topics, that mentor is a great textbook or teacher.

A bit of a self insert, but I think you described the reality so well that I wanted to offer my own anecdote.

I'm somewhere between formally educated and self-taught. I did not complete higher level undergrad maths like discrete or linear. Because of this, my vocabulary is lacking. I don't even know what to google, even if I could teach myself!

Some subjects really benefit from instruction and direction. It's actually hard to find a math tutor to proof your vector math program in your late 30s. My colleagues either forgot or are using that energy elsewhere.

asgraham

> It's actually hard to find a math tutor to proof your vector math program in your late 30s.

They exist, if you know where to look and are willing to pay (source: me, or generally and probably more affordably wyzant.com)

edwardbernays

Have you considered trying to acquire the language by reading a textbook alongside a lecture series?

stronglikedan

> mixture of formal and informal/self-taught

That's me. Took plenty of college classes, but never tested well, so never got a degree. I learned most everything on my own, but those classes were a foundation for what I taught myself, and I couldn't have done it without them (as quickly).

nativeit

This is a good point. I think the structured curricula can be the only way to learn many technical topics, even if you aren’t being formally taught. I also found my time at university to be invaluable for the equipment, facilities, and resources that were made available to me for learning that I could never have provided to myself.

random3

They likely outperform for the same reason they are self-thought— i.e. it's most likely a confounder. If you have enough curiosity/pull, motivation, discipline to do it, you'll outperform in general, self-thought or not.

There's also a survivor bias at play, in the sense that the self-teaching attempts results that you see in professional environments are those that made it. So, the true question is, for those that tried this path and failed, would have they been better off with proper teachers. Sometimes it may just be a matter of time - taking longer to learn because of various reasons, that wouldn't be the case in normal educational environment.

With this said, I went through CS and math school and enjoyed it, but I don’t think I’m compatible with the format and prefer self learning.

sebstefan

University classes are great. They force you out of your comfort zones. When I was self taught I would never have pushed through learning the socket API in C, doing so many projects in bash, studying the academic side of distributed systems, data structures, common algorithms. Stuff like that.

I interview a lot of self taught people, or boot camp graduates, and their issues is often that they pigeonholes themsleves into a comfort zone, or they fall apart when you ask them about academic topics that are relevant for the job.

On the other hand, people who never taught themselves anything code related often suck at coding, or they've forgotten a lot of what they learned in college. Hell, for some of them, even while still in college they've forgotten a lot of what they were taught the years prior.

It's best to have done some code by yourself before university, so that you have faced the problems that arise naturally, and when the courses present you with clever solutions to them, you retain them. You don't just dismiss them as fancy theoretical stuff you need to know for the exam, then promptly forget. You've footgunned yourself with memory management enough times that it speaks to you when you get explained RAII.

SparkyMcUnicorn

I wouldn't group boot camp graduates and self taught people together. I'm confident there's skilled people coming out of bootcamps, but the people I know personally saw it as a cheaper shortcut into the field because they couldn't teach themselves and would have otherwise gone to a university or chosen a different field.

Coding bootcamps weren't really around when I started, but I avoided online courses and traditional learning methods. I would have also avoided bootcamps for the same reasons. I wanted to create and solve problems that were exciting, rather than follow through a textbook and take tests.

I'm self-taught and learned C in my early teens because I really wanted to do something that I couldn't find any code or preexisting solutions for, and I knew C was really the best way (for me) to solve it. I didn't want to learn it but I wanted the cool thing more, so I struggled through forum browsing, reading documentation, and trial/error and successfully got what I wanted while gaining more skills that led to where I am today.

The desire and drive to learn something matters more than the method, in my opinion.

skippyboxedhero

The culture of CS departments at some universities before the tech boom was also deliberately antithetical to almost all of the things that people now mention as being great about university.

* Courses designed to fail out many students * Courses designed to extremely theoretical and impractical because teachers found them fun to teach * Making the subject inaccessible to as many people as possible

When I went to uni in the UK I didn't study CS (now senior dev at a large US tech company) because of the above, the subject had the highest fail rate, had the most unpleasant faculty, and had the highest rate of unemployment after graduation of any subject (this was a top 5 CS uni that only took people with top grades).

It is great if people got something from their experience but this isn't how it goes for most people. And, from working with many people who have CS degrees, you do still see issues: poor communication skills, poor business understanding, often have significant trouble prioritizing work because of the previous two issues, etc. In other words, some can code (even there, grads come out...not great) but a CS course is usually not a comprehensive education to work anyway.

I am not sure what represents comfort zone more than the way most universities teach any subject.

whstl

This is gonna sound like an old man yell at clouds post but...

I also remember university being great. I built a compiler, a toy OS and interfaced with GPS.

But a few years ago I was invited to teach on another university and I was very disappointed. The curriculum was basically a modern bootcamp stretched over a few years with a lot of unrelated classes sprinkled in. (EDIT: I just checked it and: lots of business, management, humanities, chemistry, environment, entrepreneurship... and one e-sports class?).

Almost no fundamentals, except for an algorithms class, almost straight to React and a few backend frameworks that were popular in the startups in the area.

lapcat

> University classes are great.

I don't think anybody denies that, but getting into and paying for a university is very much a financial and social class issue.

> When I was self taught I would never have pushed through learning the socket API in C, doing so many projects in bash

You speak only for yourself though. I'm largely self-taught and have done these things.

> I interview a lot of self taught people, or boot camp graduates

These are often two very different types of job candidates.

> they fall apart when you ask them about academic topics that are relevant for the job

Yes, I do tend to fall apart in audition-style job interviews. But I can solve the same problems when just left on my own, with nobody standing over my shoulder.

sebstefan

College being a huge expense is an anglo-centric issue

It's important for those concerned, but most people aren't, so I don't like to include it because then the entire "value of college" debate shifts on the economics of it.

>You speak only for yourself though. I'm largely self-taught and have done these things.

I did say "often fall apart"

lapcat

> College being a huge expense is an anglo-centric issue

Ok. Well, the tech industry itself is rather "anglo-centric", don't you think?

> It's important for those concerned, but most people aren't

If you just want to ignore the United States, then fine, but in general, good luck trying to ignore the United States.

>> You speak only for yourself though. I'm largely self-taught and have done these things.

> I did say "often fall apart"

I'm a bit confused here. I was referring to the first paragraph in your original post, whereas you seem to be referring to the second paragraph?

dasil003

Your criticism of the specific details rings true, but I also liked the overall thrust of the GP which is that two common failure modes for working software engineers are either being overly academic and not efficient at practical application of that knowledge, or else being too superficial and direct about solving the immediate problem in front of them without recognizing or even being aware of the theoretical knowledge and concepts that can greatly improve their local solutions.

I think it’s fair to say those failure modes tend to disproportionately accumulate university graduates and self taught developers respectively. As long as we don’t use it as some kind of litmus test then I don’t think it hurts to call that out.

lapcat

I acknowledge that theory-oriented vs. problem-oriented would be a fair characterization. But I think the language of "comfort zones" and "pushing through" was unfortunate and unfair. It suggests that somehow self-taught developers are lazy, when in fact they often have to work harder than anyone else, because nothing is handed to them by a professor or university. (Not to mention that it can be a lot harder to get a job when you don't have any academic credentials.) I would say that teaching yourself a difficult, esoteric skill, with no outside help, is inherently breaking out of your comfort zone.

norir

I actually do deny that university classes are great. Many are actively harmful. When I went to university, the intro level cs class was taught in c. It took me decades to unlearn.

tensor

The idea that having knowledge of C is harmful is possibly one of the most anti-intellectual things I've heard today. I guess you don't value education, so you wouldn't know, but your brain doesn't have some limit. Extra knowledge is at worst unused, but often helps in various subtle ways. Never does real knowledge "hurt."

try_the_bass

> I don't think anybody denies that, but getting into and paying for a university is very much a financial and social class issue.

I mean... Not really? I got a BS in Computer Science from a cheap, small university (plus a bunch of it at my local junior college, for even cheaper!), and the quality of the education was better than I've seen out of "excellent" schools. It was really cheap, too! Easily paid off after a few years at software engineer salaries.

Hell, with entry-level salaries at places like Google or Meta, you could probably pay the whole thing off in a year.

I think people focus far too heavily on "Ivy League" schools and the costs associated with them, and forget that things like junior colleges and small universities still exist, and are still relatively affordable.

With a "commodity" degree like CompSci, cost isn't really a problem.

Besides, no one gives a shit where you went to school after your first job in the field. That first job might be marginally harder to get, and you might have to settle for slightly lower pay, but you're going to be far from struggling with the debt unless you really overpaid for that degree

bsoles

As a professional software developer who also teaches CS at a university, my experience with successful engineers all comes down to interest and passion. Self-taught engineers are obviously interested in the subject, but among engineers with a degree, you have a mixed bag. Some of them have no interest whatsoever in the field other than a diploma, but they are familiar with the terms of the art, which makes it difficult to separate the good ones from the bad.

howdyhowdy123

That's exactly what it is. Somebody who is self taught is _by design_ somebody who's extremely motivated and interested in the subject.

AnotherGoodName

Think of knowledge as a circle on a board. https://matt.might.net/articles/phd-school-in-pictures/ is a great example.

Everyone that goes through university learns within a pretty similar circle initially. That circle is surprisingly narrow in the broader field. Who has time to teach the dmc algorithm (used in all highest ratio data compression software) for example. Instead everyone's taught a pretty common curricula in all comp sci courses despite the field being much much larger than that.

Now some who go through university will go well beyond that circle of knowledge. These are the most amazing programmers you'll ever meet. They'll know algorithms that are mentioned in white papers, not taught in courses and they'll kick ass. Those who've been in the industry a while have met a few like this.

Likewise self-taught engineers. They may have humbling gaps in knowledge of that big circle of knowledge that everyone that went through a comp sci course was taught. This may be a constant source of imposter syndrome but also humbling motivation for them. What they'll also know is a whole lot of stuff outside any standard curricula. After all they have the same motivation that the super engineers who went through university and continued to self-teach had. Their circle of knowledge was organically created through passion and that passion is actually one of the best signals for performance in not just engineering but anything in life.

jcranmer

Recently, I've been trying to teach myself some numerical thing I don't have prior experience on (building a sparse LU solver, if you're curious). What I've found is that the single most useful resource I've found is not trying to build one myself (because where do you begin?) or by ripping apart the internals of existing solvers to see how they work. No, it's stumbling across the lecture notes of a course that covered that material, in no small part because by stepping up a level and looking at the other lectures, I can discover the other relevant things I didn't know were relevant. And this property has held true in my experience for other topics I've had to research on my own: the highest quality materials are invariably university lecture material.

If your main thesis is that university instruction isn't worth it, why is all the best material university instruction? Sure, there's an argument that learning how to build something is best done by actually building it... which is why university courses invariably have "build what we're teaching you to build" as a course project that is a significant portion of the grade.

bloomca

I fully agree with you, I have similar insights (deep technical texbooks are also great), but I have to say that the value you extract is not equal depending on how you approach it.

If what you are learning is purely theoretical and you see zero application, you likely won't be super invested, might skip a few things and will likely forget a lot of them soon.

However, if the problem is relevant for you, or even better if you are working on something related, all of the sudden it quickly moves from pure theory to a very applicable thing.

I think that's why people who tinkered for years before university if they keep the passion can build insane things during/shortly after the university.

XenophileJKO

So I think the answer is, theory is important.

However if you build things first, then study theory, you more clearly become aware of what the real insights are.

ecshafer

> Linus Torvalds built Linux by rewriting MINIX to scratch an itch. Margaret Hamilton debugged Apollo guidance code on-the-fly, inventing modern software reliability.

Their very first examples are Engineers with formal training. Formal training gives you the mathematical and engineering maturity TO tinker.

hn_acc1

This. We had to write a multi-process 68K assembly OS as part of an undergrad course. This helped immensely in having an idea of what the Linux kernel is doing. Without that - how do you even get started writing a kernel, if you don't know what it is or what it does?

sadcodemonkey

I've found that there's greater range among CS graduate software engineers. Of course there are some truly excellent thinkers who know how to bring their training to bear on all kinds of problems. But some of them, well, you wonder how they even graduated college.

Among the self-taught, there's less variation. If they've managed to land a first job, they're usually at a pretty decent level of knowing how to learn new skills and apply them to solving problems. They were born in the "real world" instead of in the classroom, and it usually shows up in their sensibilities.

Just what I've observed from my own experience. (I'm self-taught myself.)

Loudergood

Self-taught is a double edged sword.

It generally can't occur without some level of passion for the material. But you also tend to miss the boring details.

ARandomerDude

Self taught dev here, I completely agree you miss the boring details...at first. One day (hopefully early on) you realize algorithms, data structures, data alignment, etc. are actually pretty important when building larger or high performance systems, or when targeting underpowered hardware. At that point the self-teaching resumes and you pick up all these pieces too.

When I started tinkering with Ruby on Rails I never thought one day, in a different context, I would need to write a hardware-specific, custom binary (de)serialization protocol. Then it happened.

thisoneisreal

My experience as a self-taught dev too. I managed to get employed as an SE without a real computer science foundation, but then I just kept teaching myself details of networking, operating systems, memory architecture etc. and learned other topics as-needed.

empath75

I basically had a grab bag of shell, python and ruby stuff that I learned how to do over my first 5 or 6 years in the industry and then saw an article about Haskell, tried to learn it and realized, I don't actually know _what programming is_, and then spent 10 years teaching myself all the computer science stuff that I missed from not having a degree.

I still don't know Haskell, but it was a valuable learning experience anyway.

thisoneisreal

I got hooked in a similar way. Wrote an Excel macro to automate an operational thing I did in my real job, and then asked myself, "Wait, how did that work?"

bostik

I think I am technically self-taught, originally. I only learned about the theory after I had already applied the principles in practice.

Started in the 80's with a C64, then progressed through computers and time until began my studies in the university ... for chemistry. Turns out my head doesn't work that way. Began working or a logistics software company on the side.

In 2001, I wrote at work a literal bin-packing algorithm without any formal background or real CS education. I only later learned that it's generally considered a pretty hard problem.

Some time after that, applied to officially change my major subject to CS. The department head was quoted from the meeting, "about time". One of the first mandatory courses I had to take after that one was on data structures and algorithms, which to me was a properly fun one. It was also enlightening: I realised that at work I had independently come up with Djikstra's greedy algorithm for the bin-packing problem.

Ever since then I've followed a simple rule of thumb in hiring - aptitude beats raw talent. Anyone who wants to learn because they are genuinely interested in the field and its problems is in high probability going to be a better hire than someone with talent and education but without the internal drive.

Am I biased? Yes. But am I unfairly so? I don't believe that. And I agree with other posters that self-taught are likely to get more out of theoretical education because they can map the lessons into things they have already done, or things they have done in the wrong way.

rco8786

That was me. Self taught since I was 13ish. Landed a job on a team of "actual" engineers (think Stanford/MIT grads doing massive scale distributed systems in the 2010s) and became painfully aware of all I had missed in a CS degree. So I spent a year diving into CS fundamentals and whitepapers...turns out it was all just as interesting as learning to code itself.

astroalex

This is exactly right.

I taught myself coding, but struggled through some of my CS computer science classes because I hadn't learned some (important) boring details. My peers who hadn't coded before, but were otherwise bright, excelled in these classes and have had impressive career trajectories after school.

Based on my personal experience, I don't believe prior experience with programming before college is that predictive of engineering talent.

Tobani

I did full CS / Software Engineering curriculum. There was a lot that I taught myself because I was curious / passionate. I learned a lot about things not covered in classes. But the classes also taught the boring details of things like data structures that you can generally ignore until you hit some level of scale/success.

I've seen self-taught software engineers build great looking UIs and during the code review point out things like "data structure X" would work better. I get a response about "Premature Optimization," when in fact the right data structure would be less code and I have to show them.

I've also met self-taught engineers who read detailed research papers on topics on and sometimes made things perhaps more complicated than they ever needed to be.

passion & formal education definitely play interesting roles in what people produce.

charlie0

Being self-taught self-selects for those who enjoy it and those who enjoy it are way more likely to keep expanding their skill set.

jghn

I think one needs to be careful with statements like this. Is it the case that those who outperform tend to be self taught? Or that those who are self taught tend to outperform?

I can easily see why the former is true. The latter seems a lot less likely.

pknomad

I agree that the title can use a bit of work.

The author cites examples such as Linus and Margaret, but IIRC they studied CS and/or math as part of their educational upbringing... so I feel like they're almost counter examples of what the author is arguing for.

It seems like the author is really championing the "self-tinkering engineer" as the outperforming engineer.

fshafique

Is your opinion about the latter because the self-taught may not stay on task?

As a self-taught person on a lot of different matters, I find myself exploring rabbit holes that expand my knowledge, but don't progress the task I originally started doing.

0xfaded

My reading is that the statement wasn't an opinion either way, rather it was questioning whether survivorship bias needs to be accounted for.

To your point though, I think it doesn't matter so long as you've learned to deliver business value. Application of broad and diverse skills may deliver value at a start-up for example, but wouldn't get too far at a ticket shop.

jghn

The point I was raising is that I don't think it's the self taught angle itself that is the causal factor. As an example, there's lots of things I'm self taught at but also terrible.

However, someone who already has the talent to be really good at something and who has the inner drive and motivation to push themselves is someone who is likely to excel. So if you find someone who is excellent at something and self taught, it's not a surprise. They probably combined natural talent with a strong work ethic, and lots of exploration of the entire search space.

lokar

You could pick from many attributes and find that “many” people with that attribute do better.

Also, this (and other things I’ve read) always seems to argue against the strawman that “you need a formal education to do well in software “. I’ve never seen anyone say that (including during many years involved in hiring at big tech). The argument is that the pool of CS graduates are more likely to do well (and bigger and simpler to find) , so it makes sense to focus there if you need to hire a lot of people.

empath75

It could also be the case that you have to be better than average to even break into the industry as a self taught engineer.

bena

There's probably some survivorship bias in here.

Those self-taught engineers who don't even perform aren't going to be engineers for long. So of course you'll see a lot of self-taught engineers in the outperforming category, it's necessary for survival.