Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

One of the much-downplayed things that degrees are more likely to indicate than personal projects is foundational knowledge. When you work exclusively on Wordpress sites, this is irrelevant. When you work on distributed systems or cryptography, then foundational knowledge gets pretty important.

It is completely possible for any person to learn foundational knowledge outside of a formal instructional setting. I personally know excellent developers who have done so. It's unquestionably possible. I firmly believe that given sufficient time and determination and help, it's possible for any person to learn any subject to any level.

It is, however, possibly true that not all people learn discrete mathematics, relational algebra, and computer architecture in an ideal manner when entirely self-directed. Or perhaps even all developers.



You don't know what you don't know.

This is what struck me about my formal education. While I also believe you can learn anything with enough material and dedication on your own, having the structure to ensure that you cover a set of subjects that constitute "foundational knowledge" can be invaluable.


What is it about formalized schooling specifically, that you believe makes it uniquely capable in teaching people what they don't know?

When I was 18 I spent dozens of hours pouring through a university course catalogue, looking at the required courses for each degree, the prerequisite trees and the requirements for graduate degrees. It felt like a bird's-eye of the entire fractal structure of human inquiry.

Later, I realized how much sharper the view is to people who do that today. Regardless of whether or not they're a student, they can see the course catalogues online and, in the case of MIT (and many top institutions), even see lectures of those courses recorded in previous years. If you're reading this now and you don't have a very high idea what kinds of knowledge are out there, it's probably your own choice.


I think one factor is that Universities are usually involved in research, so they're in a good position to continually identify what's important out of the existing body of knowledge, and keep their courses up to date with new ideas.

Another factor is that you can't skip over topics that don't immediately interest you. Some self-taught people can have that discipline as well, but it's not universal.


> What is it about formalized schooling specifically, that you believe makes it uniquely capable in teaching people what they don't know?

The teacher. Teaching/learning was always about the teacher, who knows what and in what order to teach.

You can have the same effects with the same effort as with formalized schooling if you have a private teacher, but how many self-taught developers had them? And then there's this small thing that in formalized schooling you're taught by several people, each for their own discipline. It's hard to come by a tutor that knows seven different fields and it's hard to come by seven tutors for each of the fields.


>who knows what and in what order to teach.

Plenty of courses have their general outline publicly available. Some colleges even share older lectures [0]. There are more-than-enough resources available for self-directed learning. Have questions? StackOverflow exists.

The #1 criticism against self-directed learning is how self-motivated the autodidact is. Most people suck at staying motivated to teach themselves. If they aren't 100% passionate about learning the subject and can keep their interest going, they will fail.

[0] https://www.youtube.com/user/MIT/playlists


I totally agree with you -- staying motivated, especially if you are learning alone from home, it's incredibly difficult. I have a thesis that I have recently started to validate which is that you can considerably improve motivation in self-directed learning environments by introducing online collaborative learning. I just wrote about it and launched a little course/workshop to test the idea: https://medium.com/@arielcamus/learn-to-build-a-backend-with...


> Plenty of courses have their general outline publicly available.

Yeah, something like educational videos we have since the VHS era, and even before that, handbooks. It's still nothing like having a real teacher.


This is an excellent point. A lot of what I learned in university was things I didn't know before, and didn't learn either, but I learned they existed.

When faced with a problem now, I can often identify at least what area of my non-knowledge it belongs to. In that sense I knew a lot less after university than before (in a relative sense).

The ninja skill you get from a very broad education isnt solving problems by applying knowledge, its solving problems by identifying them (then Googling)


Don't forget the part where you had to do things that you didn't like (possibly hated) and only much later, truly appreciated.


> You don't know what you don't know.

Self-taught developer with the mentioned "foundational knowledge." I'm very strong so far as any university-level CS subject goes. One area where I have recently learned that "I don't know" is anything beyond high school calculus - having started to play around with Tensorflow. You are most certainly correct and now, instead of immediately having that expertise at my fingertips, I have to self-learn it over a month.


> in an ideal manner when entirely self-directed

With all the resources available these days, including MOOCs, textbooks, syllabi, and recorded lectures from the best schools, there's a middle ground between "degree" and "entirely self-directed".


You're completely right! Those are all amazing resources.

I would posit that using textbooks, syllabi, recorded lectures from the best schools and greatest professors, and documentation is still a form of self-direction. The learner is left entirely to their own direction, discipline, and environment. Perhaps the only thing that's changed in that list of wonderful resources since the 1960s is MOOCs. I thought of and considered these resources when writing my previous comment.

Perhaps I would have been best-advised to use a turn of phrase such as "self-directed with use of readily available non-instructor instructional resources". I thought such a phrase excessively clunky and unnecessary to make the point, but perhaps I was wrong.


> The learner is left entirely to their own direction, discipline, and environment.

I think this is one of the main problems of self-directled learning and why, in average, is not nearly as effective for most people unless they are incredibly motivated.

I just started playing with the idea that online collaborative learning can considerably reduce that pain and I just wrote and launched a little experiment to test it:

https://medium.com/@arielcamus/learn-to-build-a-backend-with...


It's a great idea! I would consider being careful with peer instruction, however. In software it runs the considerable risk of encouraging and inculcating bad practices, which is something an instructor is often used to mitigate in classroom-style environments.


Well now we're opening up a can of worms. Are not those with instructors also partially self-taught?


By that logic, everyone is self-taught. So perhaps that line of reasoning proves too much, rendering it potentially suspect.


What do you think of this curriculum? https://github.com/open-source-society/computer-science

I'd say that these days it's easier to gain all that "foundational knowledge" without attending a university.


A person with a strong grasp of the subjects described therein would have excellent foundational knowledge.

I would say that you're right! These days it's easier to access all the required instructional material for foundational knowledge outside a university. I would also say that this has probably been true for multiple decades. I would say that a list of MOOC courses is possibly not the same as a strong grasp of core materials, however.

Such a curriculum, while strong at first blush, likely suffers from many of the flaws of self-directed learning. It is perhaps not access to information or instructional material that is the problematic part of the educational process.


You sure can gain all that knowledge, but my experience is that without a formal setting with defined expectations and specific goals, few people will actually have enough motivation to spend few hours every day for a few years doing this.


Yes, but if you are a dropout because of e.g. financial reasons, you don't have the degree but can have the knowledge.


The best I've found is to find any university and look at their recommended course calendar for a CS degree and go to those course homepages to get the lecture notes/slides or vids if they are public. This will be a course structure made by professional educators to give you the intuitive ideas for a subject. Then look up the same foundational material in The Art of Computer Programming or other academic text with enough challenging problem sets so you remember the material. Unfortunately many universities require campus accounts to get at homework or tests so the only other way is get it from TAOCP.

While you do this apply for entry level support engineer somewhere and work your way into development from within the company or find open source projects and write requested features, debug them when problems arise, repeat. That plus being helpful on the mailing list and stackexchange for whatever project it is almost always leads to email job offers coming in. When you have enough experience you can directly apply to developer ads and hopefully survive the initial screen for not having a degree as you have real experience, plus all those problem sets you did will help pass a whiteboard interview.


Not having a degree, this was of the biggest issues I didn't know I didn't know. I encountered it after about 6 years on the Job.

I landed a role in a blue chip and had get a great boss who taught me the foundational theory I was missing.

I didn't ask him to, per-se, but I think he just sensed I needed it.

It made a huge difference to me as a developer. So I do agree, foundational knowledge is kind of a big deal.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: