I'm a self taught software developer. I've consulted with startups for the past 6 years, and I have created a business that supports several engineers and other employees. I've used a variety of books, courses, and tools over the years that have helped me in massive ways, and I'm going to outline a few of them here.
Becoming a professional software developer is no small feat. It requires a lot of hard work and patience as you navigate an array of difficult subjects. However, it is definitely true that some resources will help you learn and make you better much faster than others.
A guy that I worked with told me that I should subscribe to Lynda.com, because he'd used it to learn 5 different programming languages in the past couple of years, and he said it had made the process dramatically easier. As a college kid, I was really put off by the idea of paying for an online class (despite shelling out thousands for college classes I'd never actually use).
A few years later when I got my first programming job, I stumbled back across Lynda and decided to give it a shot. After spending a few months flying through new languages and topics, I was super angry at myself for not trying it sooner.
I rank it as a "must have" for anyone who is serious about continuous learning and professional growth. Every time I have a new concept that I need to learn, I check there first.
LinkedIn Learning offers the clearest pathway to learning almost any programming language. They can also guide you through many related topics like design or math.
I don't personally find that much great content on Youtube for learning entire languages or frameworks from the ground up, but there are specific channels that create truly remarkable content related to specific problems that you might be interested in.
For example, Sentdex is a channel I currently watch a lot. He creates a lot of amazing content related to machine learning in Python. We also create a lot of videos that show you how to actually develop real projects on the Techmaker channel. As an example, we're recently put together an in depth series on web scraping with Ruby.
My typical learning strategy looks like this:
1. Watch a series on Lynda to get a decent understanding of how a topic works.
2. Read a book that goes much deeper into the topic so I get a good grasp on how everything fits together.
3. Watch topical videos on Youtube to see more real life examples and use cases.
If you want to develop true expertise, there is no getting around doing some reading. You can absolutely learn other ways, but in my opinion, reading will get you a more thorough understanding faster than anything else.
Creating a list of good books in every category wouldn't make much sense, so I'll just list a few of my favorites (mostly in Ruby). In case you're wondering, I have actually read all of these, some of them multiple times.
This was one of the first books that I read that goes super deep into how a programming language works. The big benefit of this book is that it exposes you to a wide array of things that a programming language is capable of doing. Once you do that one time, it becomes much easier to learn other languages because you have a pretty good expectation of what things to look for.
Metaprogramming sounded like an exciting idea when I first heard about it. This book will do a couple of things for you. First, it will teach you how to do things in Ruby that are pretty magical compared to things you can do in many other languages. Second, it will give you an in-depth understanding of how the Ruby language is put together. You'll learn exactly what happens when you call a method on an object. This is very useful in many programming contexts, because you know the right questions to ask and the right places to look when you have a problem.
If you write code, you should own this book. Sandi Metz explains OOP in the easiest to understand manner that I have ever seen. If you work through this book from cover to cover, you will develop a dramatically higher sense of what good vs. bad code looks like, and you'll see how you can improve on code that you aren't proud of.
This is a remake of the original Gang of Four book for Ruby developers. In excludes a few patterns and includes a few new ones. This is a great book to have as a reference and ocassionally skim a few chapters. Doing that is essentially like buying a set of power tools and learning to use them.
By reading Clean Architecture, I finally developed a clear picture of how to handle dependencies in code, and it helped me get a much clearer sense of how to plan out the components of a system. I recommend this book to anyone who has a bit of experience and wants to learn how to design systems at a little bit higher level.