
Ask HN: How do non-traditional CS people close their knowledge gaps? - magtux
I&#x27;m an EE. I work on embedded systems and FPGAs autodidactically and have also mostly worked alone. I&#x27;ve since worked in software companies and now am back to an embedded role. I&#x27;ve noticed that there are significant gaps in my understanding of CS concepts. I&#x27;ve no intuitive understanding, I never failed to finish my work but don&#x27;t have mastery over the basics as I do over EE. I find that my code is not Idiomatic. I tried Leetcode but don&#x27;t see any learning.<p>How did you get over this issue?  What are the topics that helped you most in your work?<p>Any Books? MOOCs?
======
zelphirkalt
Don't worry, most if not all CS students and graduates have huge gaps in
knowledge. Be it specific domains where CS is applied or concepts of CS
itself, which they never heard about at university. There is simply too much
to learn, to learn it in 5 years of university lectures. So you might not be
as far behind as you think.

I've studied CS myself, but there is so much out there, if you are willing to
get in touch with it, that I read something I don't understand or don't know
what it is almost every day. Sometimes it is only new names for old things,
but often it is something I simply never had to deal with. This might not
happen at the job, but when I learn things in my free time.

I always recommend to look at and at least begin working on (doing the
exercises of) SICP. That book has given me so much and led me to write so much
more clean code and I am "not even" through the whole book. Well, it has 800
pages or so. So at least get to something like 40% and do the exercises, it
will be enlightening. I have yet to read another book, that teaches its
knowledge more to the point and gave me that many "Aha!" effects. Although my
guess is, that the book will make you love Scheme, the knowledge within is
applicable to almost whatever other language you use. I wish I had started to
learn with SICP, instead of whatever was used in school and university
instead. Reading and doing the exercises really helped me to get some concepts
straight and to actually understand some things, that I did not have a good
grasp of coming out university. Side fact: At least one of the authors taught
EE.

Regarding to idiomatic code, you can specifically ask for idiomatic code or
search for that, when you have a specific question. Over time you will absorb,
how to do things best in this or that language. On top of that there is a
certain amount of things that are objectively idiomatic, because they have the
best performance available in that language for the task you want to get done
_and_ have the most readable code as well. However, there are also parts,
where idiomatic becomes a bit of an opinion. So worry about it, but don't
worry too much about it.

~~~
magtux
Thanks for the book suggestion, I'll order one and start on it. One of the
lessons I learned this year is not to bite off more than I can chew, so next
year I want to pick one book and work through it, I'll try SCIP and see how it
goes.

