I've tried learning alone, but after 6 - 12 months it becomes really difficult. Being around a self-learning community daily makes a world of difference, I'm about to start my fourth year and I'm loving it.
Being part of a program also reduces societal pressure. Any program really, just to be able to give a simple answer when people ask you what you are doing. Otherwise, it's easy to be met with doubt and cynical questions.
Lastly routine, I see self-learning as a day job. You want to clock N hours per day and don't spend any time procrastinating. I've been building habits for 5-10 years, and I'm reaching a point where I can be productive, but it takes time and patience.
I've lost count of the number of times I've read a chapter in a book, felt I understood the material very well, but utterly and completely failed to reproduce anything when you take the book away and replace it with a blank piece of paper (or IDE).
Usually you can tell that you've failed to internalize everything when you try to teach it to someone else. You become aware pretty quickly where the gaps are. If you're on your own, though, it requires a lot more discipline.
It's like a stalking mission in LA Noire where I spent hours on a mission having not realised there was a car for me to use at the very start.
More practically: thank God someone was there to introduce me to an IDE and code discovery autocomplete when I was just learning programming for the first time.
- knowing what there is to learn within any topic and what order you should tackle things
- whether advice about what to learn in some topic, how, and in what order is any good or not
- when to quit or stick when a certain approach doesn't seem to work
- how to test your learning, and how to assess your efficiency
- how to sustain motivation while playing the 'teacher' (i.e. co-ordinator) role when you'd rather learn, and the 'learner' role when you'd rather teach.
- how not to make certain important things be associated with pain and boredom, when approaching them in a free, open, playful mode would make them stick much better
- how to avoid or undo damaging perfectionism about resources and approach and personal standards for outcome and ability
---
Self-learning is extremely difficult and I don't advise it to anyone, although I wouldn't discourage trying it either.
The traditional didactic models you already know are the best. The problem is getting the right people to teach the right subjects, and ensuring free and open access for all people of all ages.
Ultimately effective self-teaching tends to mean you implement the classical methods but in non-traditional formats.
I find it's usually only those with top percentile proclivity or motivation for a given subject can sit down with a textbook and notebook/repl and absorb information as effectively as the rest of us would with a good teacher and engaged classmates.
If you're like me and you're unable to go to Uni but want to self-teach programming/CS, learn the minimum required to get into a related apprenticeship-style position and throw yourself into it.
Currently I use Trello for this: https://trello.com/b/cu32qF3q
In future I want to build a website ala Goodreads/Google/Roadmap that lets you craft optimized learning paths for creating any idea. Sad this doesn't exist yet.
A lot of my mentors are sloppy. They don't look for the best tools. When I ask them for the best site to train programming skills, they point me to Project Euler, not a more fancy new thing. Some will measure progress by lines of code. Some, when stressed out, move faster or choose to pass out on the keyboard, as opposed to relaxing. Many seem dismissive of planning and insist that you have to get lucky.
80% of people are in the bottom 80%. Communities like HN are likely well in the top 20%, in terms of success, and have to look at the top 10% to improve.
What this means is that advice you get from 80% of people will be bad. There might be some viral article on Forbes about how you need to wake up at 4 AM or have a solid breakfast to be successful. When most people you meet give you consistent advice, it seems like it's true.
But you have to pay attention to who's doing this. If none of the people in top 20% are following popular logic, it could well be misguided. e.g. maybe lines of code are an important metric after all.
There have been countless times where I've come to resent my initial source after a few months of digging deeper on the subject just because they've positioned themselves as an authority without the ability to properly teach.
It may have been to my advantage that my senior peers quit & went on parental leave for months leaving me alone within the environments that I’m responsible for after only 8 months. Making it even steeper but also forcing me to apply the changes that I saw correct
Personally I'm a more visual learner and often while a book is busy with text syntax or misc details I will think I'm putting together a better understanding of what is happening / how things work....but the book goes on with details and I lose focus / get frustrated.
I so badly want to ask "Wait if a does b does that mean x is acting like this or that!?!?"
One thing great about the Internet and places like S.O. or H.N. or search engines, as well as other subject specific sites is it is much easier to find subject matter experts when you get stuck.
Self directed learning requires enough patience to recognize the best approach to learning it for you.
I rewrote my study plan at least 10 times.
Other than the self-discipline needed to sit down and study, it is hard to ignore the noise of contrasting opinions from Reddit, Hacker News and the rest of the Internet.
I'm still a self learner and going forward without proper guidance doesn't really help.
Things go much faster whenever there is someone there to help if not much but just to show a way.