A new developer can pick up any decent programming book or take any decent online course and reasonably expect to be introduced to many new concepts to chew through.
However, as time goes by and the new developer masters the common introductory concepts, such endeavors become less efficient.
What strategies do you leverage to overcome this challenge? Additionally, as a veteran developer, how do you use your self-study minutes most efficiently?
Repeat as necessary.
Similar process for new algorithms but typically less thrashing around.
When doing this for work I usually try to track down an accessible expert earlier in the process and ask them to explain it to me as if I am a complete novice.
1- I start with coding to learn not learning to code. This approach helped me to put my thoughts into actual code so for example I want to learn how to request data from database I started by learning how to create a database and the specific codes to print that request and from there you branch to different things along the way and after that you could look for basics course about that subject to to learn different ways and extra information.
2- I look for templates or things like that and deconstruct them and look through the code and to try it myself then you code start to re-code this template from start to finish by yourself.
3- I try find the source of pages I like and use inspection to learn how things were construc toted.
I organize my notes by topic (i.e. "node.md", "swift.md", "git.md", "statistics.md", "cpp.md").
In order for the above strategy to work, I need to make time for regularly reviewing all of my notes via spaced-repetition strategies so that I have a good understanding of what's in my notes and what isn't. (I use pandoc to convert my .md files into pretty html files.)
The above is definitely time consuming, so I'm eager to hear about how others tackle this problem.
1) books usually trump courses
books are much easier to browse through. pick and choose what you need. Do make notes, or in 6-12 months it will be like you had never read it at all.
Courses seem nice in that they offer varied learning - a lecturer, assignments, a forum for questions, a shiny certificate at the end.. but you have little control over pacing, and there just aren't enough solid ways to judge beforehand if the course is any good. Trudged through many hours of bad/repetitive content before I understood this :)
2) don't memorise specifics, understand design choices
if you haven't done so already, I can really recommend looking into how languages are built - what are the paradigms / design choices. I'll even recommend a MOOC: https://www.coursera.org/learn/programming-languages.
A focus on design makes it much easier, at least in my experience, to pick up a new language and become an 'expert' at it; nobody will turn to you for help writing a loop or grokking a few conditionals (I hope). But understanding, let's say, prototypal inheritance in JS and how this differs from other languages, or the effect of having (or lacking) functions as first-class citizens, figuring out what are the language core concepts and what is just syntactic sugar - this let's you reason about languages and problems on a whole different level.
3) if you have the opportunity; coach/teach
trying to teach stuff to a few interested souls is a stellar way to force yourself to order your thoughts. Pick something that's right at the edge of your audience's skill level, and explain it in the cleanest, concisest way you can. It's a win-win, in my experience.
4) create something
the hardest part about learning a new language is not the language specifics, but learning the ecosystem. What are the tools and libraries you must use or avoid, what is the right dev setup, how do you build/deploy, and in some god-forsaken cases, how do you even version control a project? The only way to really learn this imho is to just start building a small project.
These are only partial solutions; it still takes a lot of time and effort, and I probably haven't come close to maximising efficiency of self-study :). Don't forget to have fun though!
Looking forward to reading more about this.