Where can I fill the gaps?

Hi everyone,

Very new to coding - I’ve only just started learning the basics of HTML although I’ve wanted to learn for a few years now but I’m glad I’ve taken the first step and hopefully I’ll make steady progress. My aim is to get a job in the industry. Not entirely sure exactly what (web or software etc) but I’m the kind of person that wants to learn EVERYTHING and not leave any stone unturned which means that I keep thinking about people with Computer Science degrees and how there is so much that (even after completing all the fCC courses and certificates) I won’t know i.e. the theories behind everything, things related to working in the industry, all the buzzwords, different kinds of systems and programs and definitions of so many words etc.

So my questions is: is there a book or a resource that I can use to fill in all these gaps so that I can eventually reach that level that someone with a Computer Science degree or is there no need and I’ll be able to pick that stuff up through experience/work etc?

What kind of job are you aiming for?
For eg. Do you want to write a new programming language?
Do you want to work on optimization of queries for large databases?
Do you plan to develop the next advances in artificial intelligence and pattern recognition?

Identify the goal, then work backwards…

1 Like

A CS grad usually goes to school for a few years and takes multiple classes on different topics software engineering, core fundamental programming skills, computation theory, data analysis, statistics, physics, hardware, security, database, web development, calculus, data structures and algorithms.

There isn’t one book, each of these classes usually has their own book that is issued for the class, and the classes themselves go over the book, along with extra materials.

To reach the same level you more or less have to follow the same “path” one would go through. You could easily do your own legwork and research curriculum and colleges for CS degrees and “shadow” their curriculum yourself. You’d at least get some high level resources such as the books issues and maybe even the class structure. But you wont get the professor, or in-class material.

You kind of need to know at least some of it, but probably not all of it depending on what you want to do.

A CS degree will go primarily over the underlying fundamentals of what you’d end up doing, along with gloss over a number of high level adjacent topics. Something like knowing how a computer works at a hardware level isn’t important if your working in high level situations, such as developing software using Java (a high level language that abstracts away low level details such as memory management) but its good to know and helps in other ways regardless of what you end up doing.

The one area where a CS degree usually doesn’t focus on is the practical application, as this is more specific to a given job and thus is more up to “the domain” of what you’re doing.

Taking web development as an example, a CS grad might not know what HTML is or know exactly how the web works, as knowing how HTML works is only relevant to the web domain. However a CS grad would instantly recognize that HTML creates a “tree” of tags making up the DOM, and know how to leverage JavaScript as a programming language to manipulate the DOM pretty quickly as they would already have some experience learning to program with other languages.

Generally a “self-taught” developer usually leans into their practical skills and experiences more and learns about the fundamentals indirectly, where-as a CS grade starts with the fundamentals and learns the practical skills more on the job.

The key difference is there are some problems “already seen” by CS grads, but self-taught developers have to learn both the fundamentals and practical skills directly themselves at the same time. A self-taught will also be able to focus or “hone in” on a specific domain and usually can have more practical knowledge within that domain, where as the CS grad has more general fundamental knowledge, but less practical experience.

Simply put, college grads don’t go to school for a few years to learn nothing. But they also will learn a broad subject of things that may or may not as important depending on what they end up focusing on.

As Brad said, there’s no single resource that will give you the equivalent knowledge of a 4-year CS degree, basically because that would be ridiculous to expect. People who get CS degrees put in a ton of time, money, and effort to get those degrees. You can’t expect to ever reach that knowledge through books, online courses, and/or experience & work. The domain of knowledge gained in a CS degree is only attainable at a university or college.

That said, you can learn the basics of computer science through Harvard’s CS50X, which is their freely-available-online introductory first-semester course on computer science.

Thank you for all your replies - apologies, I know there isn’t just one resource or book that would teach me everything lol, probably should have made that clearer. All of the information is very helpful and essentially I need to figure out what exactly I want to do and then take it from there - it may be that I don’t have the overall basic background knowledge that a CS grad will have but I guess it shouldn’t matter if I know my own chosen field really well which I’ll only figure out the more I learn/code/practice.

Thanks again, really helpful :slight_smile:

EDIT: Also thank you to @astv99 for mentioning the Harvard CS50X course, I think that’ll be good to check out.

Others have addressed other things, I’ll take a stab at this…

Yeah, that’s tough. I would suggest taking a look at blogs and podcasts on dev work. If you encounter a buzzword/phrase, maybe google it to not only get a definition, but see what else is there. Look for books like “Agile for Dummies” or “DevOps for Dummies” or whatever. Heck, watch Silicon Valley and write down every word you hear that you don’t know. I’d also suggest googling “books every programmer should read”. Have you read “Clean Code”? “The Pragmatic Programmer”?

Thank you for this! That’s what I meant, stuff that you pick up through the process of working through the degree, being in the field etc. because, of course, being self-taught means there’s so much I’m missing out on in terms of a tutor’s experiences, advice and the fact that I’m learning such a specific part of the entire thing. I guess it also goes back to what I actually want to focus on. As much as I want to right now, I can’t be an expert in every field.

Yeah, those are a two different things - what you learn in CS and what you learn about the office/process. I was/am in the same boat. But there is some good advice here.

I think some of it you just take in as it comes at you. I was working with a couple of guys that were really into OOP and high level design patterns. So I did some searching, found some recommendation and bought and read Head First Design Patterns: Building Extensible and Maintainable Object-Oriented Software. After that, I understood what they were talking about. I wasn’t as good at it as they were, but at least now I could follow the conversation and contribute.

On my first job, I’d never done unit testing. So I read the jest documentation, a few pages each night and checked out articles on unit testing theory and practice. I ended up becoming almost the go-to unit test guy there.

It’s about continuous learning.

That is so cool - exactly, never stopping learning. Thanks again :slight_smile:

1 Like

I forgot to point out one resource I usually give at least to have a starting point.

This site has a list of resources that cover the usual “core” subjects a CS degree covers.

There is a direct overlap with the Harvard course linked above as well.

Fantastic - that’s exactly the kind of thing I was looking for. Thank you so much!