3 ms·
I'm a self-taught web dev, and I want to further my CS education but can't go back to school for various reasons. I've seen various syllabi eg teachyourselfcs.
by syndacks 8y ago
I'm a self-taught web dev, and I want to further my CS education but can't go back to school for various reasons.
I've seen various syllabi eg teachyourselfcs.com and though they seem legit (and I've dabbled is some courses) I don't quite see the application/direct benefit professionally.
Let me phrase in another way; when I got started it was easy to see why I needed to learn front-end and back-end to make a web app (for a CRUD job). Now I want to go further, but where?
I think it would be helpful to see what jobs I could get by furthering my CS fundamentals, and not just "Senior Software Engineer".
So, as someone with your unique perspective, what do you recommend? Should I really slog through ye olde CS curriculum in hopes that one day I'll be able to apply some of it? Can you recommend another approach?
Again, put another way, some of these "top performing bootcamps" sharpen your React skills and whiteboarding skills, which have a career/market value. But they don't appeal to me because they don't seem academically/CS focused.
I hope this duality/constraint came across.
Any guidance appreciated.
- siscia 8y agoI always enjoyed teaching what I know. Why you don't send me an email (on profile) or a DM on twitter @siscia_ ? Twitter I believe is the fastest. Anybody else, feel free to do the same :)
- bhawks 8y agoNot OP but if you're looking for a way to learn CS fundamentals thru practice I would strongly recommend trying to write a Gameboy emulator. The project is challening but has a pretty rewarding feedback loop. Along the way you'll understand how high level concepts like grphics are implemented on top of hardware, computer architecture, cpu behavior, memory access, interrupts and timers and so on. It'll also challenge your software design skill and project planning. It might not be the best project if you are more interested in cs algorithms though, but I can't really think of anything that has a more enjoyable feedback loop. previous hn discussion: https://news.ycombinator.com/item?id=17134668 https://news.ycombinator.com/item?id=17134668
- tenaciousDaniel 8y agoI'm also a self-taught web dev, trying to learn more about the fundamentals. I've been trying to get through this course, and while the going is slow, it has been pretty incredible: https://www.coursera.org/learn/build-a-computer https://www.coursera.org/learn/build-a-computer
- arcsin 8y agoKnowing CS allows you to build unique solutions from first principles. In cases where you're tied to applying solutions that have already been decided there will be less opportunity to use your CS knowledge. I think the majority of the time for most jobs you're just applying solutions, so it's much clearer how this would benefit you professionally. Depending on the kind of work you do, the minority of the time where it would be beneficial to know CS might have a big impact both on the product and your reputation in the company. This could help you move up to higher, better paid positions, but it also might not. Teaching yourself CS is a big time investment and if you just want to maximize your salary there's probably better ways to do it. I think it's really only worth it if on some level you enjoy it and find it interesting. You can seek out jobs where they use more CS, but again this doesn't guarantee you'll advance professionally. But if you're the type of person who enjoys programming as a creative activity, I think CS can be very rewarding because it opens you up to what's possible.
- bena 8y agoIf you want to learn the fundamentals of CS (and then some), https://en.wikipedia.org/wiki/The_Art_of_Computer_Programming https://en.wikipedia.org/wiki/The_Art_of_Computer_Programmin... is probably going to contain everything you want.
- learc83 8y ago>I think it would be helpful to see what jobs I could get by furthering my CS fundamentals, and not just "Senior Software Engineer". This is going to difficult, because getting a job other than Software Engineer (or something related in management or sales) often requires credentials. However if you'd like to get a higher paying software engineering job at a company like Google, CS fundamentals can definitely help you get through the interviews. >Should I really slog through ye olde CS curriculum in hopes that one day I'll be able to apply some of it? Can you recommend another approach? Yes to the first, no to the second. CS fundamentals build on each other. It's difficult to understand algorithmic analysis if you don't understand calculus (at a basic level), and it's difficult to understand automata if you aren't familiar with set notation from discrete math etc... Learning on your own, it's tempting to avoid the boring stuff and focus on what's fun or seems useful to you right now. The problem is you don't really know what's going to be useful later on. You already know how to code, so If you are really interested in the learning the fundamentals, first I'd make sure you have a basic grasp of high school math through calc I. Then I'd go through a good discrete math textbook (I'd recommend one that's CS focused). After that I'd work through a data structures and algorithms textbook, then a programming language concepts textbook, a computer architecture/organization textbook, and finally a theory of computation/automata book. You'd have a decent grasp of the fundamentals by then. After that if you want to go further, I'd go through books on networks, operating systems, compilers, and functional programming.