5 ms·
There's a better strategy than making bets on particular languages and frameworks: get so good at learning that you can become proficient in any of them in only
by ef4 14y ago
There's a better strategy than making bets on particular languages and frameworks: get so good at learning that you can become proficient in any of them in only days, and reach mastery in just months.
The biggest bottleneck I see that prevents people from being able to do this is their code-reading skill.
With practice you can read and understand codebases much, much more quickly than most people (who are so intimidated they never even try). Once you can do this, you can very quickly pick up (1) the rich details about how the system works, (2) the ability to extend the system and fix bugs in it, (3) understanding of what is idiomatic and what is not.
- dmiladinov 14y ago> become proficient in any of them in only days, and reach mastery in just months. This! Could you please share your insights as to how to improve your code-reading skill? Besides the obvious, "read more code". For example, how to select which sources of code to read from, any tips/tricks you've learned in your process, etc?
- div 14y agoRead the source code of stuff you are already using. Dig into that networking library, or explore that templating plugin. This not only lets you read more code, but also lets you pick up knowledge in areas that are often taken for granted (no need to think about X, there's a library / plugin /framework for that).
- kaoD 14y agoLearn new paradigms like functional programming (the purest, the better). It'll teach you how to "bend" your mind around certain problems/structures.
- dmiladinov 14y agoThanks, I agree. Learning Clojure has certainly been a mind-bending experience for me so far!
- ef4 14y agoI want to second what div already said, with the added comment that it's better to have a specific goal than to wander aimlessly through the source. Every piece of software has bugs and limitations. When you encounter one, go figure out why it is the way it is, and maybe even fix it. If all your dependencies are so perfect that this never comes up (hah!), you can always pick a project you use and like and look at their open issues. Begin trying to solve one of them.
- dmiladinov 14y agoThank you so much for your reply! I like your advice, I think it's a great place to start.
- JackMorgan 14y agoI am the author of that post, and that is why I suggest this course of action. My post was not about "picking the winning language" but about getting moving actually practicing new languages. That practice helps us to get faster at learning. Once you have learned a few, you will be dramatically faster at learning new ones, and at programming in general. You will have seen the same concepts implemented a few different ways. It will be harder to be a fanboy of any specific one, because they all have pros and cons that have to be weighed.