Jonathan Blow on computer science curriculum

Поделиться
HTML-код
  • Опубликовано: 30 июл 2024
  • If you have questions, you can come to one of Jon's streams:
    / j_blow
  • НаукаНаука

Комментарии • 227

  • @edwardteixeira480
    @edwardteixeira480 3 года назад +475

    For those interested:
    - Time Complexity;
    - Understanding different programming paradigms;
    - Understand recursion;
    - Understand boolean logic (very well);
    - Algorithms:
    - Sorting algorithms;
    - Popular Algorithms;
    - Operating Systems:
    - What it is;
    - How it works;
    - What a File System is and how it works;
    - DataStructures:
    - Understand how they live in memory;
    - Some basic datastructures;
    - How to build, navigate and isnert into a binary tree;
    - How floating points work;
    - Databases:
    - What it is;
    - How it works;
    - Concurrency;
    - Normalization;
    -Data races;
    -Implementing Malloc;

    • @DmitryRomanov
      @DmitryRomanov 3 года назад +9

      Data races, implementing malloc

    • @edwardteixeira480
      @edwardteixeira480 3 года назад +2

      @@DmitryRomanov thanks

    • @kloa4219
      @kloa4219 3 года назад

      For posterity

    • @Mike-uk2oq
      @Mike-uk2oq 3 года назад +5

      That's just a part of the curriculum in Germany. Is it different in every country?

    • @23CAREMUCH
      @23CAREMUCH 3 года назад +15

      It's also nice to point out that if you are studying CS and your course covers these topics. It's very handy to learn mathematics. It's not a "must" but it helps you train your brain in solving problems.
      I studied Physics for my undergrad and when I took a conversion master's course. I found that I was at a huge advantage because of my background in physics.

  • @mfalk6263
    @mfalk6263 3 года назад +18

    Thank you for making these videos!

  • @Muskar2
    @Muskar2 11 месяцев назад +16

    We had a teacher so bad that one day he was saying something like "to do X we have to do Y" and the next slide shows "to do X we can never do Y" in huge bold letters, and we weren't even surprised he had made this mistake. At the time I figured he had just downloaded some slides and did a poor job rehearsing them. He barely understood what he was talking about and nobody ever asked him for help, not even those who struggled with the absolute basics. He was the husband of the headmaster, so we figured he was only employed because of nepotism. That was in 2011.

  • @HelloThere-xs8ss
    @HelloThere-xs8ss 5 месяцев назад +7

    i like how the list just keeps growing as he goes on

  • @brianviktor8212
    @brianviktor8212 6 месяцев назад +17

    I want to emphasize: Learning by doing is by far the best way to learn programming. Learning endless theory first and applying it months or years later is a waste of time. One needs to accrue experience, and the actual meaning of it is, beyond learning how to do the craft, learning all the little things that cannot be conveyed, because they are numerous.
    For example it's one thing to learn how sorting algorithms work, but it's another to create your own algorithms AND do them right. One time I made a web crawler that had algorithms for decision making (quite some math + fine-tuning formulas and parameters). As I worked on it, its efficiency went from ~30% up to ~90%, and ultimately to ~99%.
    Just today I created a checksum algorithm to create 2 bytes (ushort) as an output from an array of bytes. It went from ~1.5% failure rate to 0%. I use it for quick checksums in UDP packages btw. I didn't want to "waste" more than 2 bytes for it, because I think that's sufficient and I want to minimize package sizes. Doing that is crucial for what I do.

    • @N7sensei
      @N7sensei 5 месяцев назад +3

      Learning by doing is probably by far the best way to do anything. Most theoretical "CS" or IT trainings make no sense at all.

    • @PimpofChaos
      @PimpofChaos 5 месяцев назад +5

      What makes you think you are learning theoretically for 4 years then for the first time, applying it in your job. Nearly all of the programming courses have lab classes accompanying them where you hammer your fresh knowledge into a stone. In fact, I have written/tested more complex algorithms than my job(ofc I know every job is different in every time range but still)

    • @matheusmoreira7724
      @matheusmoreira7724 5 месяцев назад +2

      @@PimpofChaos I think there are many classes where the teacher fails to elucidate use-cases in favor of showing off how to derive methods. Sure, its partially the student's job to be able to think critically and apply the concepts, but that would be discrediting the amazing professors that actually incorporate labs and practical knowledge in their curriculum, which from my experience is not all of them.

    • @PimpofChaos
      @PimpofChaos 5 месяцев назад

      @@matheusmoreira7724 Yes, but by design, Computer Science departments should never be training ground for the newest, hippest domain of the time. Academy is not a bootcamp for coders. They need to learn about math, algorithm, theory behind NLP and other ML domains, network design, operating systems etc.

  • @jacob8949
    @jacob8949 5 месяцев назад +3

    People act as if getting a degree is solely about what is on the curriculum. But having access to a more collaborative learning environment, networking on easy mode via something like an industrial liaison board, and the employability you gain just by having that piece of paper are all invaluable tools for getting on in life if leveraged properly.
    Not to mention higher education has massive social/health benefits, it's a safe route to independence, it gives you time and space to try things out in a low-risk environment...
    The debt is an absolute bitch and there is for sure an opportunity cost with regard to work experience, but for all the reasons above it's still the best option imo. I don't get why people are _so_ anti-degree now, just because there are a few drawbacks.

  • @elbowjuice2627
    @elbowjuice2627 Год назад +3

    Thanks for this. I’m completely new to all of this. I wanna give it a shot because it’s something I really want to learn. Saying you only need a semester to a year to learn makes it seem practical/doable to me

  • @KilgoreTroutAsf
    @KilgoreTroutAsf Год назад +61

    I learned most of CS by myself while trying to solve real problems in other fields and doing small passion projects. I have done everything from implementing concurrent zobrist hash tables for GPUs to writing modular synthesizers on Arduino.
    IDK, you just have to want it and do what is cool and interesting, instead of reading the "list of top 10 most sought after computer languages in 2023"

    • @user-uu5xf5xc2b
      @user-uu5xf5xc2b Год назад +1

      nice

    • @samarthtandale9121
      @samarthtandale9121 Год назад

      You are Legend 🔥

    • @legion_prex3650
      @legion_prex3650 6 месяцев назад

      i studied CS and it's just bullshit most of the time. I've learned programming as a 9th ager by myself (commodore 64) and learned all that stuff.

    • @codecaine
      @codecaine 4 месяца назад

      @@legion_prex3650 💯

  • @catsby9051
    @catsby9051 Год назад +83

    He basically just described the computer science curriculum at most schools. If you get a computer science degree you will learn about all of the things he said + some additional math classes (linear algebra, calculus, etc.) + some gen ed classes which aren't really relevant but make you more well rounded. And that pretty much sums it up.

    • @zacharychristy8928
      @zacharychristy8928 Год назад +12

      Yeah, I'm wondering what the "mostly bullshit" part is. A cs degree has maybe 2 or 3 gen ed courses that don't apply to programming. Maybe fixating on data structures you never really have to implement? Even then it's good to be aware of how they work.

    • @stugeh
      @stugeh Год назад +10

      There's probably some variance. In my programme we had at least 3 classes heavily focused on agile, several business classes, and an inordinate amount of effort was dedicated to usability including a class on psychology.
      There were so few useful classes that i had to do a bootcampesque online course to stand any chance of being employable. The useful nuggets couldve easily been crammed in to a year, 2 max.

    • @TheArrowedKnee
      @TheArrowedKnee Год назад +4

      100%. I'm a bit baffled considering he mentioned pretty much everything i learned, with a little bit being on the outside of that(i took Systems Development, which is essentially just a group project over an entire semester).

    • @atcharaphunsanson7956
      @atcharaphunsanson7956 8 месяцев назад +3

      @@TheArrowedKneeok you might of learned some of these in your CS program but how highly skilled are you?

    • @nitroyetevn
      @nitroyetevn 7 месяцев назад

      Yeah I think the time is the issue. I think if you examine what you did in 4 years you'll find lots of fluff, despite covering a lot of good stuff too.

  • @danight33
    @danight33 Год назад +8

    linear algebra done right by sheldon axler is a banger. That whole line of yellow Springer books on math is solid.

  • @malusmundus-9605
    @malusmundus-9605 2 года назад +22

    I feel like if I had a better grasp of what was going on with computers and programming when I was younger I could've compressed 15 years of study and practice into 2 or 3. So many times in my life I started a game and felt I had all the puzzle pieces/money I needed only to find out some idea doesn't scale 2 months in, or that I really hadn't planned as well as I thought I had. All the prep in the world can't prepare you for something you didn't foresee. Just code!

    • @Mimicry161
      @Mimicry161 Год назад +2

      Absolutely! That's why mentors are so invaluable, unfortunately not everyone has access to one.

  • @lobovutare
    @lobovutare 3 года назад +136

    I used to be in contact with a guy who was a PhD computer scientist who worked with a bunch of other computer scientists at a large financial institution who showed real disdain for programming. He said something to the effect of "once we've figured out what to do, somebody else can go and program it, because that part is really not interesting". At the same time this team of elite PhD computer scientists did find something interesting to program, which was a self healing system written in Prolog which was supposed to replace any manual labor involved in restoring systems to health. It was so entirely unrealistic that I wouldn't even know how to begin to address what an enormous waste of time that project was.

    • @keeganbeaulieu4135
      @keeganbeaulieu4135 3 года назад +13

      lmao once the solution is done i absolutely dread implementing it. and the sad part is, solution is like 10% of the time spent

    • @azngoku666
      @azngoku666 3 года назад +51

      I can't believe all these phd electrical engineers don't want to sit around soldering together resistors all day!
      So unrealistic!

    • @notnullnotvoid
      @notnullnotvoid 3 года назад +34

      @@azngoku666 Sorry to ruin your dreams buddy, but even if you get a phd in electrical engineering you will still be expected to at the very least do actual research, which involves building and testing things. Same goes for a computer science phd, or any other research degree. If you're very lucky you may find someone foolish enough to pay you to sit on your hands all day doing nothing, but I would not advise counting on that as a career goal.

    • @azngoku666
      @azngoku666 3 года назад +7

      @@notnullnotvoid sure..but do you know what phd level research actually looks like?

    • @azngoku666
      @azngoku666 3 года назад +11

      just to want to reply one more time here because i'm re-reading the original comment about self healing systems etc
      what do you think the tooling that powers every data center looks like? like, you know, the stuff that keeps youtube running so you can post here
      people who just program all day didn't come up with the ideas behind that stuff

  • @Marienkaeferisback
    @Marienkaeferisback Год назад +25

    In germany we have a kind of apprenticeship, that does pretty much, what you say. You work for a company and get lots of programming experience there while simultaneously going to school every few weeks where you learn about all that theory stuff. They don’t dive too deep, so you have a good starting point to know what to look for, when you need it. The hole thing takes 1.5 to 3 years depending on your prior education and your progress. Also you earn a little money as you are doing real work on the way.
    The quality changes from employer to employer and from school to school. Also they changed the system up a little last year. But I had a great experience with that system

    • @ilyaselasri3352
      @ilyaselasri3352 Год назад

      Can foreigners apply to that DualStudium thing? It is like a combination of Studium and Ausbildung but u study at the uni and get a uni degree instead of an organization

    • @user-uu5xf5xc2b
      @user-uu5xf5xc2b Год назад +2

      that's why germany is the least affected country in youth unemployment crisis. not a shocker

    • @creatorofimages7925
      @creatorofimages7925 Год назад

      "Every few weeks"? That's not University studies then, right? Duales Studium would be the thing here.

    • @johannes6362
      @johannes6362 6 месяцев назад

      ​@@creatorofimages7925 no it is an on non academic system

    • @masterofIich
      @masterofIich 5 месяцев назад

      U don’t learn shit in apprenticeship. U learn something in the 3 days work (depends on company) but school is a waste of teachers and students time

  • @DanTrue
    @DanTrue 6 месяцев назад +2

    One thing I found weird was that I was past my master degree and into my first job before I got a proper understanding of things like HTTP protocol and how the web works.
    As I've spent most of my career getting server applications to perform better in one way or another that's quite a thing.

  •  3 года назад +2

    Sheldon Axler is amazing, it covers both real and complex.

  • @CianMcsweeney
    @CianMcsweeney 3 года назад +35

    Nand2tetris is a great book/course that covers many things he's talking about here, including learning by actually programming

    • @raidoung4100
      @raidoung4100 4 дня назад

      whats that?:0

    • @raphaeld9270
      @raphaeld9270 День назад

      @@raidoung4100 Also, Turing Complete on Steam is really good and is heavily inspired by the Nand2Tetris online course.

  • @twostepRMX
    @twostepRMX 7 месяцев назад +4

    I literally learned everything he mentioned here while getting a computer engineering degree, not sure what “other bullshit” he’s referring to. You can’t learn all this in just one year unless you immediately understand all of these topics without effort. He probably did, so good for him, but 90% of people can’t.

    • @nuudul7639
      @nuudul7639 Месяц назад

      i think he mentioned that he studied cs at berkeley but dropped out 1 semester before graduation

  • @laughingcorpsev2024
    @laughingcorpsev2024 3 года назад

    The Quality 😍😍

  • @monawoka97
    @monawoka97 3 месяца назад

    My undergrad covered all you mention + a ton of math (mostly linear algebra) + lots of "go code" classes (I took about 5 classes that were just "go make a game"). When you combine all that four years genuinely felt short. But I also had to take a bunch of liberal arts classes for my scholarship so that really stretched me thin

  • @perfectionbox
    @perfectionbox 6 месяцев назад

    Teaching design patterns and architecture would be useful, huge productivity boost

  • @Olodus
    @Olodus 3 года назад +32

    A really good list, some which I only realized was needed after spending too much time at uni. There are some more things I would add though, but that could be because my specific interests. For example I would add learning the network stack and some general security if you want to work with networks instead of games like Jon.

    • @CianMcsweeney
      @CianMcsweeney 3 года назад +4

      Yeah throw in a couple of Schneiers cryptography and security books combined with some decent networking resource and you're pretty much set

    • @niewiadomy241
      @niewiadomy241 2 года назад +1

      @@CianMcsweeney Unfortunately there aren't many decent networking sources. At least I don't know any.

    • @tdrm
      @tdrm Год назад

      Understanding security is critical for networked games. Even many AAA games ship with completely client based authority. The server does no bookkeeping, just trusts the packets. That approach would fail security thinking 101.

  • @big123lak
    @big123lak 5 месяцев назад

    I learned to code mostly first then went and did the theory and math after and it made it a lot easier and faster I’m self taught too I just learned a lot of it to make sure I’m as smart as I can be

  • @SETHthegodofchaos
    @SETHthegodofchaos 3 года назад

    This was a good one!

  • @Mike.Garcia
    @Mike.Garcia 3 года назад +6

    good clip!
    Thanks!

    • @swifton
      @swifton  3 года назад +2

      Glad you liked it!

  • @drxyd
    @drxyd 8 месяцев назад +1

    A lot of computer science can be googled as and when needed, I'm happy with having a big picture understanding of most things and taking a day or two to level up when I need to.

  • @Sibicle
    @Sibicle 3 года назад +8

    i want an online JB programming crash course

  • @redhawk3385
    @redhawk3385 5 месяцев назад

    My university had this exact problem local companies loved the technical skills the graduates had, but writing and soft skills were poor. All they did was introduce some classes that had stronger soft skills being required and it fixed the problem.
    Most people would mark those moments as bullshit, but it was what employers requested of the school. If the school doesn't produce good *enough* graduates the school can't survive, and the program would collapse.

  • @zacharychristy8928
    @zacharychristy8928 Год назад +11

    The "mostly bullshit" part really depends.
    Most of the chuff in a computer science degree is going to be math, mostly calculus, which you don't REALLY need, but it's useful to not shit your pants when you see an integral sign.
    Besides that, having access to professors, and companies not having to roll the dice on whether you know your shit is the reason for getting a degree. If you're self-employed it's not that important.

    • @FiloVFX
      @FiloVFX 2 месяца назад +1

      Joke's on you, I still shit my pantds when I see an integral sign...

  • @mitchellschoenbrun
    @mitchellschoenbrun 2 месяца назад

    I went to school in the 70's. Very few schools had computer science departments or degrees. Exceptions were places like MIT. Science classes used computers but programming was something that you figured out on your own.
    My own experience interacting with CS professors is that they don't seem to know the important stuff needed to create good code. They know a lot of abstract things, some of which you mention are a waste of time. Even time complexity is not important in the way it is taught. You don't need to know that your algorithm is O(N^2 log N ) if there is a better algorithm that is O(N). All you need to know is that the latter is much better, and you don't need to evaluate the time complexity to figure this out.
    I've also had a couple of incidents that suggest that CS professors are intimidated by people who do know how to program well.

  • @VladyVeselinov
    @VladyVeselinov 3 года назад +15

    It feels kinda sad watching this as a JavaScript programmer

    • @Zealotux
      @Zealotux 3 года назад +11

      I'm a JS developer and I picked Rust just to get back to that kind of programming.

    • @brunovaz
      @brunovaz 2 года назад +23

      Why? Nothing is stopping you from learning these concepts

  • @blackpanther6389
    @blackpanther6389 4 месяца назад

    I'm surprised any networking topics weren't included. Good information though

  • @teaganjohner4051
    @teaganjohner4051 5 месяцев назад

    So... yes. The answer is yes.

  • @moussadotco
    @moussadotco 2 года назад +2

    As JavaScript programmer is love and approve the slander .... ,😂

  • @macfive4597
    @macfive4597 3 года назад +27

    "You need to take linear algebra from Sheldon Axler, and you're good."
    This is the truth.

    • @andrewfeng3403
      @andrewfeng3403 3 года назад +2

      My favorite linear algebra book. But also make sure you learn the determinant and be good at computation too!

    • @zxGHOSTr
      @zxGHOSTr 3 года назад +2

      I like how Axler puts always Cats in his Books. He is like a memester professor.

  • @Talk378
    @Talk378 Год назад +13

    Really understanding all of those topics takes closer to 4 years than 1 semester.

    • @eesaaphilips9271
      @eesaaphilips9271 Год назад

      Not really man. I'm almost done with my degree and I knew most of this before I entered college through codeforces problems and youtube videos which took about a year to learn. College degrees are a scam

    • @Vitorruy1
      @Vitorruy1 Год назад +1

      not really

    • @Talk378
      @Talk378 Год назад +3

      @@Vitorruy1 for most people it absolutely does, in practice.

    • @zacharychristy8928
      @zacharychristy8928 Год назад +4

      ​​@@Vitorruy1 you're saying this from the perspective of someone who already knows all of this stuff. It might not be 4 full years (since there are a good amount of unnecessary classes) but from knowing little to nothing about programming, it is absolutely not ONE semester to learn this stuff, lol.

  • @rightwingsafetysquad9872
    @rightwingsafetysquad9872 Год назад +3

    All of this was taught when I took a CS minor. First semester was simply learning a language. Students majoring in any engineering took Matlab, C.S. majors learned Java. Second semester was data structures and time efficiency of algorithms. Third semester was everything else he mentioned except operating systems. How OS work was its own class.

    • @creatorofimages7925
      @creatorofimages7925 Год назад

      And then there is Saabrücken (Germany), where you learn 3 1/2 programming languages (MIPS, Java, C, offshoot of C) in one semester (Programming 2), with 6 big projects and no time in your life for normal things, because you also have Linear Algebra, Systems Architecture and Statistics. (All very heavily theoretical in nature). Say goodbye to your normal life and potentially say hello to the first Burnout of your life.

    • @rightwingsafetysquad9872
      @rightwingsafetysquad9872 Год назад

      @@creatorofimages7925 That's kinda ridiculous. Even if students wanted to work at that pace, I doubt it'd be any more effective at teaching actual computer science. Programming is not computer science, it is one tool used.

  • @magnuswootton6181
    @magnuswootton6181 8 месяцев назад +1

    Yeh but so your good but how do you finally get your success out of it. (need gap in market)

  • @youtubeenjoyer1743
    @youtubeenjoyer1743 Год назад

    I took some combined version of CS and EE, and from what i heard in this video, it allowed me to skip most of the CS bullshit (probably replaced by EE bullshit, but i wouldn't know if it was bullshit or not)

  • @jameshamann465
    @jameshamann465 3 года назад +2

    Lol the JS shade

    • @youtubesuresuckscock
      @youtubesuresuckscock 2 года назад +2

      It's just cringy tribalism, really. Why would anyone call someone else or refer to themselves as a [language] programmer? It's weird.

  • @DagarCoH
    @DagarCoH Год назад +11

    I know this is most likely never going to be read, but I just feel I have to spill my can of beans about this. I have the equivalent of a Master's in CS, and I had aimed for doing a PhD, which did not happen due to multiple circumstances.
    I feel there are two things people on either end of the "mandatory" - "useless" spectrum fail to acknowledge is that a) there are two 20 - 80 split to any formal eductation, meaning you will most likely only need 20% of what you are taught, and also 80% of the most useful stuff is taught in 20% of the time. In that sense most of what you will be taught will be useless to you specifically, but the thing is that the useful 20% will be something else for everyone involved. b) is that yes, you can self teach everything if you are determined and know how to do that, but you will be faster (all else being equal) at that if you were exposed to that concept before and thought through it, even if it was 20 years ago, and also your ability to contextualize the thing you are learning / refreshing will be much easier, also yielding you more solid results.

    • @jesperpersson9388
      @jesperpersson9388 Год назад +4

      Yeah, and also to add to that that if you expect to be a programmer for 40 years then spending 4 years hammering down the basics is not a crazy long amount of time. Whether you go to school for 4 years or self-teach for 4 years you will not be a productive developer for those years anyway so it doesn't really matter how you spend your time (as long as you're learning) as that time is much less valuable than the time later in your career when you have become an expert.

    • @Vitorruy1
      @Vitorruy1 Год назад +1

      Then why can't I get a curriculum that's going to be useful for me instead of wasting time with stuff that's only useful for somebody else?

    • @DagarCoH
      @DagarCoH Год назад +2

      @@Vitorruy1 most likely because you have a very narrow scope of "useful". Either that or you are working on incredibly niche technology and look towarf keeping it that way for your entire career.

    • @leonardonovara9348
      @leonardonovara9348 Год назад +2

      @@Vitorruy1 More classes, more time, more years, more money. It's simple, universities are becoming businesses.

    • @Vitorruy1
      @Vitorruy1 Год назад

      @@DagarCoH That's me and every programmer in the world, Im not gonna develop a website, then an embbed system, then a low latency system, then a real time system, then a graphics system and neither will you.

  • @zhangzhao4133
    @zhangzhao4133 День назад

    u only need 1 semester so true😭

  • @N7sensei
    @N7sensei 5 месяцев назад +1

    "The average programmer is worse now than they used to be, just because how much the field has grown"
    Orrr, also mainly due to disgenics and men checking out of society.

  • @MrGuitarMix
    @MrGuitarMix Год назад +4

    If you want to be a webdev you probably won't need a cs degree. But some examples where a cs degree could be useful.
    - implementing emulators for a console
    - graphics with OpenGL: You need at least fundamental knowledge in linear algebra, know rotation matrices and so on.
    - implementation of synthesizers. Just as these which are used in Virtual Instruments in Fruitly Loops: A lot math is needed if you want to do stuff like that
    - Data Science, AI: here you need math fundamentals about probability theory
    - Microcontrollers/Embedded Systems on high level: you will need fundamentals in electro engineering, knowledge about bus systems.
    Robotics: you can't program a Boston dynamics Spot robot if you don't understand all the theory behind it.
    And so on...
    I feel sad that here a lot people are saying that most of their studies were crap and they never needed anything of it. I guess it is a personal thing. During my bachelor/master I have learned so much about the topics mentioned before. I don't know how I could learn all that if I had started on my own.

  • @johnhammer8668
    @johnhammer8668 3 года назад +9

    surprising that grammers does not matter from a guy who is creating a language

  • @magicsmoke0
    @magicsmoke0 3 года назад +17

    What you need to know depends on what job you're doing. If all you're doing is webdev, then you don't need more than a few months in a bootcamp. If you want to work on Linux or Windows Kernal, you should know Operating systems. Want to work on any of the popular languages teams like Go, Rust, C#? You better know NLP / Grammers / Compilers. Same if you want to work on Google search team. And the list goes on.
    Abstracting this a bit, I think what's being missed by people like the author is knowledge you need to use a technology vs what you need to build the technology. For example, databases, he's right, you don't need to balance a B-tree to use an Oracle or Sql Server database, but if you want to make next Mongo DB, you're going to need more theory.

    • @MrValsung
      @MrValsung Год назад

      If I wanted to start learning 'Operating Systems' as you and OP are referring, what resources should I read/watch/utilize in order to properly do so.

    • @uipo1122
      @uipo1122 Год назад +3

      Grammars are complete bullshit. Waste of time. You don't need one to work on a compiler.

    • @magicsmoke0
      @magicsmoke0 Год назад +2

      @@uipo1122 really? So you don't mind not using that regex library when writing your lexer, right?

    • @uipo1122
      @uipo1122 Год назад +5

      @@magicsmoke0 Why would I? You don't need regex for a tokenizer.

    • @Vitorruy1
      @Vitorruy1 Год назад

      What's your background? I dont feel you know what you are talking about...

  • @lerssilarsson6414
    @lerssilarsson6414 Год назад +1

    CS just sounds sexier than applied mathematics.

  • @LucidVisions
    @LucidVisions Месяц назад +1

    Who else would buy a Johnathan Blow CS course?

    • @SnakeEngine
      @SnakeEngine 28 дней назад +1

      He literally just explained that he is bad at CS, lol.

    • @LucidVisions
      @LucidVisions 28 дней назад

      @@SnakeEngine I know but, It would be John.... it would be John.....

  • @omprakashnain3508
    @omprakashnain3508 6 месяцев назад

    What about Computer Architecture ??

  • @loabrasumente2283
    @loabrasumente2283 3 года назад +8

    Where is this clip from?

    • @swifton
      @swifton  3 года назад +7

      It's from Jon Blow's streams on Twitch. This exact stream has already expired, so you can't find it on Twitch, but there are some similar streams:
      www.twitch.tv/naysayer88

    • @loabrasumente2283
      @loabrasumente2283 3 года назад +1

      Oh but thank you

  • @darkfuji196
    @darkfuji196 3 года назад +1

    If you're done with "Linear algebra done right" I'd recommend at least skimming "linear algebra done wrong", it provides a good counterpoint

  • @luigidipaolo7148
    @luigidipaolo7148 6 месяцев назад +1

    My data structures and algorithm professor told un on his first day that arrays start indexing at 1. How detached from the real world are many of these phds is insane

  • @magicponyrides
    @magicponyrides 10 месяцев назад +3

    Blow is complaining that CS education teaches CS, and not software development practice. This is a weird criticism, because there are educational pathways like "bootcamps" and other paths that are designed to teach software development practice.

  • @marcotroster8247
    @marcotroster8247 Год назад +10

    For me, the part with the "serious programming practise" is really the key point. Most of those students don't know anything useful when they're dropping out. Mathematical proofs and a correct computer program are two different things. And teachers at university encourage their students to be very arrogant about the act of programming as some minor activity that's carried out abroad by some poor guys working through tons of faulty waterfall specs. I mean we all know that waterfall doesn't work, so why still teach it at university? It takes technical excellence to write great software. I live in Germany and CS universities don't seem to be any different except they fortunately don't cost so much money. But really that's about it 😅

    • @zacharychristy8928
      @zacharychristy8928 Год назад

      Thankfully you do a lof of programming in university, and it's not just writing math proofs.
      The most arrogant people I remember from university were basically just like Jon but with none of the insight, talent or accomplishments, lol.

    • @marcotroster8247
      @marcotroster8247 Год назад +1

      ​@@zacharychristy8928 Haha yeah, talking arrogant BS is a common pitfall when you don't have any idea 😂

  • @ohdude6643
    @ohdude6643 3 года назад +7

    How about networking?

    • @azngoku666
      @azngoku666 Год назад

      that's a solved problem (hint: search for something called "linkedin")

    • @leeoiou7295
      @leeoiou7295 Год назад +2

      @@azngoku666 He means the field of networking, not "networking" with other people.

    • @azngoku666
      @azngoku666 Год назад

      @@leeoiou7295 classic jblow fanbase autism, love to see it

    • @ohdude6643
      @ohdude6643 Год назад +2

      @@leeoiou7295 Exactly -- computer networks

  • @James-mk8jp
    @James-mk8jp 6 месяцев назад +1

    almost none of that has anything to do with computer science

  • @HenrykSzlangbaum
    @HenrykSzlangbaum 2 года назад +7

    he just described a basic vanilla CS undergrad curriculum tbh

  • @mntalateyya
    @mntalateyya Год назад +2

    So basically do everything a cs program teaches but in one semester smh

  • @MrMastrsushi
    @MrMastrsushi 4 месяца назад +4

    90% of developer jobs don't require any of the concepts he's listing.

  • @alpotato6531
    @alpotato6531 Месяц назад

    man just desribed a 4 year degree

  • @platin2148
    @platin2148 3 года назад +6

    For all that you don’t need a uni.

    • @SuperSampling
      @SuperSampling 3 года назад +6

      No, you don't. If you want to be a programmer all your life, you don't need to go to university. But to be honest, if you go to university for a CS degree there is more expected from you. That's why you learn _"mostly bullshit"_ from the perspective of a programmer.

    • @shashanksharma5022
      @shashanksharma5022 3 года назад +2

      @@SuperSampling You're absolutely right. Application level software development is only a very small part of what constitutes CS. There's the entire field of Theoretical Computer Science research, making computer systems - operating systems, compilers, DBMS, computer architecture and computer engineering, computer networks etc. There's also Machine Learning, AI, Computer Graphics, Robotics etc. The list just goes on.
      Sure, if you've already decided to work in a very specific narrow domain, you can make do with learning only a small amount of the total stuff. But CS is actually quite vast
      Even if you don't use all of it, it sure does feel awesome to understand how the entire compute stack and network stack works; how computers work in general
      It helps you write better and more optimized programs too

    • @shashanksharma5022
      @shashanksharma5022 3 года назад

      So it actually makes sense to have two separate undergrad degrees - one that gives exposure to all areas of CS and is theoretical in nature, and the other that only focuses on application level soft dev and is vocational in nature. The vocational course also does not need to have any math requirements - the entire degree can be completed in 1 year tops. Taking the full CS degree should however be required for a MS/Phd in CS

    • @SuperSampling
      @SuperSampling 3 года назад +1

      @@shashanksharma5022 Not sure if we need a degree for programming. A lot of degrees at my university demand a course in programming, nowadays. From Management, over the natural sciences to the social sciences for statistics. Almost everyone that doesn't find a job in their field of studies ends up in some generic app factory to churn out the next crappy app.
      Well, regardless. I wonder why people ask a college dropout about his opinion on the CS curriculum. The guy feels like a bad influence ... especially for people who might be more capable and are asking for genuine advice.

    • @jigartalaviya2340
      @jigartalaviya2340 3 года назад +3

      @@SuperSampling "why people ask a college dropout"??
      Unlike you with fancy degree...that dropout actually accomplished something.
      And people saw that.Easy.

  • @David-gj6dc
    @David-gj6dc 9 месяцев назад +2

    "You don't need a 4 year in CS cause it's mostly BS"
    Goes on to explain what we spent about 3 of the 4 years learning at my school (not counting gen ed and last 1 year worth is electives). Then again I went to a public university and I'm sure if everyone was more motivated we could have went much faster.

  • @joedillian
    @joedillian Месяц назад +2

    Impressive what this guy achieved but I really hate this mentality and it's not what I would be looking for in an engineer in industry. Especially his views on databases. BCNF and relational algebra is the core of the most popular database systems in the world. Just if you're taking this guy's advice keep in mind that really you're only option is to be your own boss and selling software that you build directly to consumers. So if you want to go into indie game dev take his advice otherwise I would discourage it.

  • @ifstatementifstatement2704
    @ifstatementifstatement2704 Год назад +3

    90% of what he mentioned I've never heard before. I have been coding for the past 25 years though.

  • @KleptomaniacJames
    @KleptomaniacJames 6 месяцев назад

    Sounds like a 2-3 year deal ngl

    • @sagitswag1785
      @sagitswag1785 3 месяца назад

      I'd say 1-2. Most of these are compressed into single classes at most universities, and Berkeley (the school he went to) expects 3-4 classes per semester, so 8 total classes seems enough to cover all of this

  • @BloodnutXcom
    @BloodnutXcom Год назад +2

    I disagree with Blow's view.
    A degree is for scientific research so ofcourse you learn a lot of esoteric stuff to broaden your knowledge in all of CS. It's not meant to find you a job. This is mainly the fault of the businesses. They are the ones that require a degree with little correlation to the actual job. Once bootcamps and coding schools will teach what Blow said you need to know at a sufficient level, businesses will pick candidates with just a certificate.

    • @Vitorruy1
      @Vitorruy1 Год назад +2

      Between a CS grad and a bootcamper business always pick the grad, cuz they think it minimizes risk or something

    • @mennovanlavieren3885
      @mennovanlavieren3885 Год назад

      @@Vitorruy1 Their fault and their loss. You don't need a CS degree to implement a few scrum requirements for the UI of an app or website. Adding some entities, some properties, screens and workflows. Calling an API to get some data. All the boring stuff.
      There are lots of other things you need a CS for, but not for these thing above. Although those other thing involve a lot of programming and can't be done without hands on programming. But the programming part is not the essence of it, just the result.

    • @nodaxxing
      @nodaxxing 6 месяцев назад

      @@mennovanlavieren3885it is literally like this in the year 2024 😂😂😂

    • @nodaxxing
      @nodaxxing 6 месяцев назад

      I GOT A COLLGE DEGREE TO GET A 9/5 TO DO WHAT I LEARNED IN MIDDLE SCHOOL

  • @skateboarderlucc
    @skateboarderlucc 2 года назад +6

    dude is missing the point of a CS degree: its not a fkn bootcamp.

  • @azngoku666
    @azngoku666 3 года назад +15

    normally i like jblow stuff but i kinda don't buy any of this..
    the world he's mad at in some of the other clips (people who don't know how computers work, javascript cargo cultists, people focused on "the stack") comes directly from people who want to ignore all the boring fundamental topics and spin their wheels with programming forever
    it should be a pretty big hint to people when most of the important historical figures (who created all the big concepts and tools that still make everything possible today) didn't like programming or think it was anywhere near as important as thinking/understanding computation deeply
    the real answer is that everything is important and useful to someone... if you're not in grad school, chances are every class you're required to take will help you again and again throughout your career (if you give it a chance and actually take what you can away from the experience)

    • @azngoku666
      @azngoku666 3 года назад +2

      the educational practices have stagnated (for example, you can give people a lot more opportunities to program if their data structures class isn't done via paper and pen), but the curricular content isn't too connected with that
      the part about grammars/automata is interesting - he mentions that it was "formalized" .. this is the exact reason all your professors want you to learn about it
      it's the same reason lots of schools teach using FPGAs and other non-software things: they actually have formal processes to achieve correct systems unlike all the bullshit in the software industry (you know, the stuff that's leading to a complexity collapse and the end of the world if the other jblow stuff is to be believed...)

    • @notnullnotvoid
      @notnullnotvoid 3 года назад +8

      I struggle to think of a single person who has actually contributed significantly to computing who "didn't like programming". What a stupid claim to make.

    • @azngoku666
      @azngoku666 3 года назад

      @@notnullnotvoid you struggle to think of dijkstra? do you want me to name a few more? should i chew your food for you too?

    • @notnullnotvoid
      @notnullnotvoid 3 года назад +15

      @@azngoku666 Dude, what? Dijkstra was a programmer. Like, a prolific one. I genuinely don't know how you could possibly have come to the conclusion that he didn't write code, or didn't like programming. You seriously need to stop sniffing your own farts, man.

    • @Vitorruy1
      @Vitorruy1 Год назад

      ​@@azngoku666 burned

  • @bobweiram6321
    @bobweiram6321 Год назад +1

    Whiteboard interviews are the reason why software sucks. Software companies no longer care about experience.

  • @fennecbesixdouze1794
    @fennecbesixdouze1794 Год назад +5

    He just listed off EXACTLY the standard CS curriculum, literally point-for-point, all the while claiming the entire time that the standard curriculum is bullshit. 🤦‍♀

    • @zacharychristy8928
      @zacharychristy8928 Год назад +1

      Maybe he's bitter at the one english class you have to take, lol.
      Even humanities are good for CS people to take so they can learn how to properly express themselves in prose and write some good goddamn documentation for a change, haha.

    • @user-kj6kq9lp2l
      @user-kj6kq9lp2l 5 месяцев назад +1

      considering he completed all but 3 classes in his double major at UC berkley he probably has an idea of what people learn in school

  • @DudeWatIsThis
    @DudeWatIsThis 2 года назад +20

    As a computer scientist, let me offer my take in these:
    _"Time Complexity of algorithms"_
    >1 day to understand in theory. Months of work to understand correctly. Permeates all the work you do with algorithms. It is a concept as central as understanding how yeast works if you want to make cakes: you can know how yeast works, but still fuck up your 10 first cakes.
    _"Understanding different programming paradigms"_
    >Months of work. No kidding. This is also a super-broad concept. For instance, you don't truly understand how powerful object orientation is until a few years after you start using it.
    _"Understand recursion"_
    >Fair, a couple weeks. Maybe a couple months to master well.
    _"Understand boolean logic (very well)"_
    >Couple weeks. No biggie.
    _"Algorithms"_
    >OH- HO HOOOO. This is a huge field. Months? At the very least.
    _"Operating Systems: What it is, how it works, File Systems..."_
    >Months for a basic grasp; over a year to understand fully
    _"DataStructures: understand how they live in memory, main types, and how to navigate a binary tree"_
    >A year. This is a huge field as well.
    _"How floating points work"_
    >1 day.
    _"Databases"_
    >A year.
    _"Implementing Malloc"_
    >Or not. Use a modern language and stop fucking around with memory.
    ================
    My advice: stop screwing around. Yeah, college is useless if you do gender studies or whatever. But us computer guys do very practical things. It is a useful degree. Don't drop out, don't skip it. Most self-taught programmers have huge knowledge gaps that come to bite them in the ass later.
    Jonathan Blow is successful because he makes good games as a solo dev. As a programmer in a team, he would not be good. His code is a mess, and the only reason it works is because he is the only one who has to work with it.
    If your kitchen only worked while your shower was on, you'd be able to cook, no problem, but that's because you know the quirk. No one would figure out how to use your kitchen by themselves, ever. You need to learn how to code properly, in a clean way, and within a team.

    • @Vitorruy1
      @Vitorruy1 Год назад +2

      So you think knowing every nook and cranny of database theory is important but knowing how to allocate memory is a waste of time?
      You're like the steriotype of the CS grad that obcess over algos that are optimum only on paper but have tons of jumps, page misses, poor cache locality....

    • @Vitorruy1
      @Vitorruy1 Год назад +2

      And where did you took that Blow is a solo dev?? He has been working on a professional team for years by this point.

    • @Vitorruy1
      @Vitorruy1 Год назад +4

      OOP is garbage, classes are good sometimes but pretty much the entire programming industry has moved from OOP to multi-paradigma since there's no point into turning everything into an object when you dont need it and it makes the system slow just to follow a dogma.
      Dont believe me? Try making a game where every single rock and blade of grass on the map is a separetely allocated instance. The FPS will be so low you will feel you're playing a powerpoint presentation.
      And let's not even talk about OOP gurus and their absurd idea of what "clean code" is. 5 lines that only do what you need? bad code! An AbstractFactoryPresenterStrategyInterface? great code! If read java code made between 1998 and 2005 you know what following those guys advice will give you.

    • @nutcracker6746
      @nutcracker6746 Год назад +3

      >Most self-taught programmers have huge knowledge gaps that come to bite them in the ass later.
      Most CS grads have huge knowledge gaps as well. A CS degree is basically a speedrun through the vast field of computer science. If you write basic web apps for years after you graduate, you'll also have huge knowledge gaps. People actually think that, if they went through a degree but then they don't use almost any concept learned during their years of study, they still have the knowledge years later.
      Btw, what's your contribution to the field as a computer scientist?

    • @DudeWatIsThis
      @DudeWatIsThis Год назад

      @@nutcracker6746 I don't know about your country, but in mine, I studied computer engineering and got an AMAZING baseline knowledge on everything, plus full expertise in object-oriented programming.
      And I'm not about to tell you my contributions, as that would reveal my identity. Keep telling yourself that "DeGrEe BaD". Cope.

  • @Fozzedout
    @Fozzedout 3 года назад +4

    Computer science, as it is taught at the moment? Is not needed. I dropped it after my second year and went working instead

    • @Fozzedout
      @Fozzedout 3 года назад

      @@grougrou7902 lol easy, I found a junior dev position and then asked for $2k under the minimum wage offered. Managers are suckers for being cheap! Once you're in the industry, stay in a place for 1 year at least, preferably 2+ years. Learn what you can as fast as you can, and then move on to a better paid place.

    • @Fozzedout
      @Fozzedout 3 года назад

      @@grougrou7902 that was a software dev in the UK. The hard part is getting your CV/resume not being rejected. Once you're in an interview, be honest with your skills (and I did have the skills - real working examples go a long way), and then undercut all other applicants with pay. You go from being "ok" to "top tier" because you will be paid less.
      For me, i was in a very low pay job, and even undercutting everyone still was a 4k payrise for me.

    • @burrybondz225
      @burrybondz225 Год назад

      ​@@Fozzedouthow do you bring up that you are willing to under cut the competition

    • @josephp.3341
      @josephp.3341 7 месяцев назад

      That's because you work with trivial stuff such as web applications and games. Reminder there are people who work with high scalability and fault tolerant systems.

  • @lllevokelll
    @lllevokelll 3 года назад +10

    This is nonsense. Time complexity is relevant to a tiny minority of jobs, sorting algorithms are done by libraries and a waste of time to fine grain analyze or memorize (unless that's your geeky jam). The advice is uppity academic nonsense. You can go years without having a practical need to pull out recursion, and given the choice, you shouk arguably avoid it to keep your code simpler and easier for novices to maintain, because in the real world, you will have interns and junior coders rotating in and out of teams for 6-12 months. You can definitely skip floating point academic details, which are rarely relevant and easy to Google on demand. You do not need to ever code malloc on 99.99 percent of jobs, short of being a compiler writer you could be learning more practical useful things.
    Half his list is relevant, the other half is ludicrous acedemia with nearly no occurance in real life development work.

    • @tomkarpiniec9118
      @tomkarpiniec9118 3 года назад +4

      Half agreed. Writing a memory allocator is kind of obscure outside certain fields (like gamedev, i.e. this guy). Time complexity is very useful though, much more than sorting. Many devs will write multiple layers of for loops with an expensive call on the inside without thinking clearly about how much work that's creating and how badly it will perform on real data sizes. Very common patterns like permissions checks run into this problem.
      And people should learn as much about floating point representation as possible, if only to catch dumb bugs in code review, and hopefully avoid using them where an integer will do. Any cross-platform-or-language dev team needs one person who understands floats well or bad things will happen.

    • @qqqqqqqqqqqqqqq67
      @qqqqqqqqqqqqqqq67 2 года назад +7

      Time complexity is too academic? Lmao. He's talking about CS not glorified computer technicians. Sure when you are an electrician you don't need to know electrical engineering but one making any design does. Most web developers or if you work at an office making small helpful programs you are not doing any engineering so it's obvious Computer Science it's not necessary.

    • @Vitorruy1
      @Vitorruy1 Год назад +9

      Tell me you are JS dev without telling me you are a JS dev

    • @Muskar2
      @Muskar2 11 месяцев назад

      I've never seen a developer job where time complexity wasn't relevant, and I have difficulty imagining what that even looks like. I immediately think of 2021 Twitter where they're basically just going sunbathing and chit chatting most of the day, discussing arbitrary concepts that have very little to do with solving problems relating to delivering a service or product. Maybe you're right that this somehow represents the majority, but then jobs like those are all ripe for disruption, I think that much is given.

    • @josephp.3341
      @josephp.3341 7 месяцев назад

      Honesty, Jonathon blow mentioned the bare minimum regarding CS knowledge. I thought his list was not exhaustive enough. Computer networking? Ai? Distributed systems?

  • @thargyyy
    @thargyyy 6 месяцев назад

    This is just a bad take sorry