I have been freelancing over the last few years. Moving from a full-time job to freelancing, the thing that struck the most was the amount of self-discipline that is required when working independently. At the same time, I like to learn new things and keep up my skills, and mostly learn new languages and theoretical CS stuff like algorithms, data structures etc. And this requires self-discipline too.
I prefer learning from books, but sometimes refer to video courses, MOOCs, and blogs. When facing entirely new and difficult concepts in a book, my brain tends to push me into searching for video courses, blogs, and I usually get distracted after that, because of the zillion different resources found on the internet.
How do you approach learning new and difficult subjects?