This is good advice because talk is very very cheap and by actually doing something you stand out of the crowd. But doing something in a field that is new to you can be daunting and learning on your own is still very inefficient. That is why those Stanford PhDs are still worth something even if all relevant information is online - they had good mentors.
Here are some tricks that I find make learning process less inefficient (as applied to programming of course):
- Formulate specific questions. This is kind of silly but many times you will have a feeling of being vaguely stuck and will just zone out instead of making progress. Instead try to precisely and succinctly formulate the problem. You can then search the Internet, ask a question on stackoverflow (or ask a mentor :) or you can look through some good open source code and see how the problem is solved there. Formulating the question focuses you. It is important to condense the question as much as you can because this way people will have to do less work to understand it and the probability that you will get an answer goes up.
- Find a way to test your stuff. I don't mean specifically unit tests, it can be "testing in production" with the real users (it is standard startup wisdom to get user feedback as quickly as possible) or at least solving toy problems with your code, or creating a benchmarking harness and seeing where the performance bottlenecks are. First, seeing that your stuff is actually working is incredibly motivating. Second, your taste (what the Ira Glass quote in the sibling comment talks about) is subjective and can mislead you (especially if you are a beginner) and making your code confront reality is much more objective and is going to uncover problems with your work that you weren't aware of and maybe show that some problem that you thought very important is actually not a problem at all.
- Watch programming streams. This thing is getting more popular these days. Much of mentoring consists of you observing how your mentor actually does stuff - how they approach problems and what are those little tricks that help them do the work - and then copying it. Watching people programming sounds silly but it is the way to observe those tricks if you are not lucky to have easy access to someone competent.
Here are some tricks that I find make learning process less inefficient (as applied to programming of course):
- Formulate specific questions. This is kind of silly but many times you will have a feeling of being vaguely stuck and will just zone out instead of making progress. Instead try to precisely and succinctly formulate the problem. You can then search the Internet, ask a question on stackoverflow (or ask a mentor :) or you can look through some good open source code and see how the problem is solved there. Formulating the question focuses you. It is important to condense the question as much as you can because this way people will have to do less work to understand it and the probability that you will get an answer goes up.
- Find a way to test your stuff. I don't mean specifically unit tests, it can be "testing in production" with the real users (it is standard startup wisdom to get user feedback as quickly as possible) or at least solving toy problems with your code, or creating a benchmarking harness and seeing where the performance bottlenecks are. First, seeing that your stuff is actually working is incredibly motivating. Second, your taste (what the Ira Glass quote in the sibling comment talks about) is subjective and can mislead you (especially if you are a beginner) and making your code confront reality is much more objective and is going to uncover problems with your work that you weren't aware of and maybe show that some problem that you thought very important is actually not a problem at all.
- Watch programming streams. This thing is getting more popular these days. Much of mentoring consists of you observing how your mentor actually does stuff - how they approach problems and what are those little tricks that help them do the work - and then copying it. Watching people programming sounds silly but it is the way to observe those tricks if you are not lucky to have easy access to someone competent.