DEV Community

Discussion on: A laundry list of things I never heard of from bootcamp

Collapse
 
johncip profile image
jmc

There's a nice-looking book for gap-filling called The Imposter's Handbook. I haven't read it yet, but I did read something similar years ago called Theoretical Introduction to Programming (that Goodreads review is mine).

I think these topics mostly divide into: pure-CS, practical computer skills, and knowledge of specific tools.

IMO the best reason to learn CS is that it's awesome. Someone who's interested in it for its own sake will probably likely become a better and more versatile coder than the person who always asks "is this gonna be on the test?"

There's also the Blub problem, which I'll argue is real: once you need a thing, unless you've seen it before, you won't know what to look for. I've spent some time helping high schoolers learn how to do this work, and I see that play out often. We learn much faster when we already understand a related topic.

As a specific example -- my understanding of git went from murky to crystal clear the moment I read that git just traverses a directed acyclic graph. I'd coded up DAGs before, so that realization was all it took to end 6 months of fumbling. What's worse is that, if you'd asked me during that time, I would have said that I understood git.

Re: practical computer knowledge -- you need it, full stop. I worked as a sysadmin before programming and that comes in handy constantly. More than once, in my last web application job, knowing how to build from C source, for a specific architecture, including customizing the build, ended up making a difference in what I was able to accomplish. None of that is terribly difficult, but these days a large number of people have never even attempted it. Computer networking is very important too, assuming you deliver your product over a network.

The specific tools are what they are. It mostly comes down to reading the docs. But that combo of CS concepts and practical computer knowledge will give you a much better starting point for understanding what a particular tool does, and why.