I'm at a career crossroads and could use the community's advice. Does anyone have books they recommend that teach the basics or the "base" of computer science and programming logic?
I've worked as the customer support specialist or technical documentation writer in SaaS companies for about 18 years now, and at every company I work at I tend to do sysadmin and/or engineering work as well, mostly when I'm bored or did all my tasks for the day. Recently, my manager pulled me aside and mentioned I should be pursuing an engineering job instead, as they think I've the skills to do so, and offered to move me from support to engineering. The thought has crossed my mind, but I have to admit, I'm scared.
I started computer science in college a few times, but left because the first semester was incredibly slow or boring (I recently found out I have ADHD), so I lack the basics. For example, I only learned what a "method" was a few years ago, when I started writing open source Go programs and libraries. I know my way around a server (I have a homelab and self-host most services I use) and can code following best practices and whatnot, but if the company gave me a project today I wouldn't know where to start. If I'm coding for myself and I find out I made a mistake after spending days on the project, no problem, I can start over if I need to, but things are quite different if you're doing that as your job.
Now that I'm medicated for my ADHD I thought about going back to college, but that wouldn't solve my problem right away. Now that my wife is pregnant, juggling work, family responsibilities, and college would be a bit much, so I thought reading a few books might help. I really want to accept this offer, as it'll come with a significant salary bump (which would help a lot with the baby), but also because I really enjoy programming and solving problems with code.
So, basically, I'm looking for book recommendations that cover CS fundamentals and programming logic.
Ideal resources would:
1. Provide a structured approach to fill knowledge gaps.
2. Cover topics like software architecture, algorithms, and design patterns.
3. Be engaging enough for someone with ADHD to read.
4. Offer practical examples or projects.
Has anyone successfully made a similar career shift? What resources were most helpful? Are there alternatives to books that you'd recommend for my situation?
Any advice on managing the transition from support to engineering would also be greatly appreciated.
I want to add a caveat that your manager and colleagues should be a resource for you when tackling projects at work, and not to hesitate to ask pragmatic questions about the project(s) you might pitch in on there. It's ok to not have all the fundamentals down, as long as you're working to be a net positive on the project(s).
I went through some of the books listed in the teach yourself CS resource. https://teachyourselfcs.com/
A subset of the resources listed there are probably the most pragmatic for the topics you asked, but you might discover that you're interested in other areas of CS as you slowly work through them. I think it's ok to nibble away at exercises while juggling your family and work obligations.
* Structure and Interpretation of Computer Programs - SICP. If the book doesn't necessarily click right away, doing a subset of the Scheme exercises are still worthwhile.
* Computer Systems: A Programmer's Perspective - CS:APP. Incredibly helpful knowledge about low-level programming.
* Computer Networking: A Top-Down Approach - You mentioned having a home lab, and more networking understanding will help contextualize some of your work.