The more you learn, the faster you can learn
pranay.gp
pranay.gp
I also clicked through to some of the projects to find that they were team efforts, not independent projects that the author miraculously completed due to their own precociousness alone. This felt a bit misrepresented to me, although I understand the intent was probably just to show the breadth of involvement.
All in all I was happy to read the author's advice about learning but something about the intro rubbed me the wrong way. The author clearly has had quite a good number of experiences and I'm glad they're publishing these thoughts on those experiences. I just wonder if the post could do without the early hints of (forgive me) vaingloriousness? It felt quite academic and intriguing past the intro for me.
As the author may see this: please don't take this as anything other than a single individual's thoughts. I mean in no way to discourage you.
The point of this post for me is start trying to write (I think I'm pretty bad at it) so I'm extremely thankful for the feedback and glad you found the content itself academic and intriguing. :)
I feel like since I am working, I am just getting dumber. I miss the time in uni where I was learning new things every week. I'm thinking of taking a year off just to learn new things.
If your work doesn’t get more interesting you’ll adapt to fight the boredom by becoming dumber. You have to fight that somehow if you value your mind.
This matches my experience also. And is transversal to all fields.
If you feel like this is happening, it is time for a change.
Regretfully I've lost weeks and months to this mindless monotony over the last year. Thankfully Friday is my last day, and I start a post-graduate course in October which should be a splash of cold water for my brain. In short, I'm very much in support of your second point.
Startups allowed me to extend myself and tap back into that motivation and drive from my younger years to try new things and push myself to learn faster.
Domain specific knowledge (so I can talk to the customer) I generally learn on the job. But it's not generally applicable, to other domains, and thus other jobs.
Technical, generally applicable knowledge? Mostly on my own time. Companies don't want to pay you to learn. They want you to apply your knowledge. I suspect this explains in part why they can't retain employees: they learn nothing, they get bored, so they leave. Changing gig at least lets you learn a couple new things the first few months.
Even at the senior level I don't think you'll get what you're looking for. Unless you're leading new research efforts, it won't make much sense to move you away from a system that you only understand.
A friend convinced me to quit my job a year ago and I'd highly recommend it. If you can afford it, quitting your job to learn new things can be a really valuable investment. There are so many new fields and textbooks out that could each easily turn into an interesting OSS project and some income. You can write a book about all the new stuff you're learning which which will help raise your profile. It takes a couple of days to really to the gist of any CS/Math field if you have access to the right resources and the right amount of free time.
So taking time off doesn't have to be a career hit, you need time to explore new fields (all the interesting ones are initially hard to grok) but you'll have a unique skillset by the time you're on the other side and will probably make more money if you decide to get a job again. This has only really been true post-internet.
If you wanna chat, email me, it's in my profile.
My own experience has been pretty different. I took time off of my work to run a business. we even wrote a book [1] - Now, uh, I needed to run that business, on an emotional level, I mean. but it was a hugely bad idea financially.
When you show up to an interview after spending years running your own company? I mean, I'm sure it's different if you are management, but as an IC? Even though I had written a book[1] it was like I was unemployed for that time. There's no way my wages are anywhere near they would have been had I spent more of that time working for other people.
I mean, my own case would have come out differently if I was able to sell my company to someone big, which may have come down to a few obvious unforced errors of mine?
I mean, sure, sometimes it's still worth it to take time off of work to do something else... but don't say it's not a career hit. It is a huge career hit and you need to include that in the equation.
[1]https://www.amazon.com/Book-Xen-Practical-System-Administrat...
(When doing the "is it worth it" math on writing books, consider the shelf-life; that shelf life doesn't just apply to sales, it also applies to the reputation boost. My own recommendation to my younger self would have been to get a job while the buzz for the book was at it's height.)
I'll send you a mail!
I'm sorry you feel that way :(
> idiosyncrasies of their code
I've only had about 6 months of processional work experience, 3 months of which have been open source code, so even just learning _their_ code had a huge learning impact on me because I saw it as "wow, this is how code works in production". I think I learnt less about code itself though honestly, and instead learnt the systems and how those people thought about things. A lot of my code reviews on other people's PRs were "Could you explain to me why you did things this way" since I was just learning.
I don't know where I'm going with this. I'm less than a year out of uni and am still learning new things every week. Taking a year off doesn't sound like a terrible idea - though I know I personally couldn't motivate myself and would end up just playing DotA the whole day ️
I'd love to keep chatting if you'd like and talk about it and how we could learn stuff. Wanna DM me?
Bad move
* I've learned a lot about architecture and scaling * Maintainability of systems is something typically that people learn with experience * there's a lot to learn from code reviews * we have DataArch reviews, SecArch reviews, and I've got to learn so much from each of those (Akamai)
Apart from that - talking about Akamai specifically where I work - * there's a program I'm currently enrolled in called "Intrapreneurship" where we are trained on all aspects of the business - marketing, finance, product management etc. in which I have learned so much * I recently became a people manager - so there's a lot of training associated to that
So, if you feel you are not learning - it might be specific to your experience or a set of companies - but there are definitely companies which invest in their people - so actively look out for such opportunities.
If you want to learn, try to start at an 8 person company where you basically have to do everything yourself. Let's see if you still learn nothing when you get thrown in the water in all kinds of different topics.
CSS is a great example. Do I know everything about it, even after 10 years? Nope. But I know it well enough that a quick reference is all I need for any problem.
Programming in general, too. Took me a minute to grok fundamental things (data types, functions, etc). I don't care what language I use, it's all one, plus syntax. I want to use other languages, for fun and synthesis.
I found out the fun way this trait often doesn't fly in interviews when they ask about your best quality.. Scuttled a phone interview with a hiring manager at Cloudflare real fast and he condescendingly chortled that "Everyone says that". Thought I did an okay job rescuing the interview after that but.. Wasn't feeling the dude anyway after that so I guess the feeling was mutual :)
There is a hell of a lot more difference between the various programming languages than their syntax. Natural languages as well - you can render idiomatic English in any language, and if you don't care very much about getting your intended meaning across (and your listeners are both patient and fond of puzzles), you may well choose to do so. It may get you food and lodgings for the night. But the computing equivalent of getting by in a pidgin isn't quite the same thing as programming in the language you're using.
Syntax is a very minor piece of the programming language pie. If Python, Haskell, and Rust all shared the same syntax an expert Python programmer would still have a hell of a time getting anything done in either of the other two languages.
Face it, we all pretty much use the same 10 or so languages in industry.
My situation is this - people see my CV, see those languages, and immediately dismiss me for Java jobs. I think it's a short sighted decision, but it's the thinking that permeates the industry.
This are how you make objects, this are how you make functions, here's constants, here's variables. Use let instead of var for the scoping you're familiar with. Here's a standard library, it's a bit spartan but pretty much everything is familiar.
Later on I stopped using 'class' and 'this' and just used closures that return objects (I consider it more idiomatic, YMMV). I got a good feeling for when to use an object and when to use a Map.
My retention is a bit better too, even if I don't see that new thing again for a long time, but not nearly what I wish it was... At least now I'll remember having seen it and a general sense of the concept even if I have to re look up the specifics.
Unfortunately, most schools and universities take the exact opposite approach. While you can eventually get very deeply and thoroughly educated about a specific field via academia, it’s an incredibly inefficient way to learn.
Did this make anyone else flinch?
edit: I do want to comment on the Feynman Technique linked in the article. I've never actually written concepts down as explained, but it's very close to how I _actually_ learn (or at least, feel confident in my knowledge). If I can't explain something in plain language, there's a good chance I've gaps. The steps listed are pretty succinct - going to have to give it a try!
Suppose any rate of decay in the things you retain. If your starting point is already small, losing any of it comes at a high cost. At least when pursuing mastery of a subject, you are repeatedly faced with new ways of understanding the basics, to the point that they are innate and automatic. You might forget small specifics which you can later find in your known references, but without mastery you might instead forget the basics--and relying on a reference for those basics means it's much less clear when they are aptly applied.
I would hazard a guess that that's why people have always tended to master only one or a couple skills, but people congregate and work in complement with others who have mastery over other skills. The community is the entity with knowledge over many domains--not the individual who learns tons of surface material. And simultaneously, everyone does learn a little bit about a lot of topics from time to time. But that balance is important--so I wouldn't personally weight so heavily the cursory synthesis portion of it as OP did.
--
Also, a little advice to OP. Drop some of the grandiose introduction. 100% of the links I clicked in the first paragraph were more disappointing than their descriptions led me to anticipate.
That being said, I do think the importance of mastering one or two things should not be overstated, and was kind of ignored in your post. Let me elaborate: for me my deepest skill has been 3D modeling and rendering: it's been about six years of pretty consistent practice, doing motion graphics, general modeling, animation, color theory, and really just trying to absorb all the knowledge I can about this specific passion. This process has been super useful for a couple reasons, and kind of worked to snap me out of the "generalist" learning mindset. For example, I've found the learning curve over time for 3D modeling is pretty generalizable to other skills I learn: because I've sunk so much time into it, and have had to push through plateaus, and grind over hills, and realize when I'm just coasting, whenever I am learning other things, I recognize the emotion swing and know roughly where in the learning process I am. Similarly, the fluency I have with my 3D modeling tools (pretty much all the hotkeys burned into muscle memory) gives me something to strive for when learning other tools and skills. I know what fluency feels like now, and I know when I'm lacking in it.
For me though, the most important thing about pursuing mastery of one or two things instead of full generalization, is that it teaches you patience. Genuine patience. Something I feel is becoming a lost art in our modern time. Seeing how far you've come after six years of working at something, and then looking at your inspirations and seeing how far you still have to go, is a feeling that can either break you, and make you give up, (if you are impatient), or can help you, as you have the choice to just keep grinding away and choosing to be patient. 3D modeling and animation is a ten year (minimum) goal for me, and it's served as a wonderful learning experience for me in many, unforseeable ways.
To tie it back to your post, I take this "ten years" mentality to almost everything I choose to learn nowadays: I try to stay away from the fancy new frameworks and toys, and try to learn fundamental things that I can spend ten years learning and still have space to grow.
I hope to write a follow up post to this when my own thoughts on this topic are more clear.
But when I wasn't working somewhere, I had to find my own resources and trust my own instincts. I didn't know who the best teachers were, so I had to decide for myself, what the best resource for me would be. Often, I got it wrong, but I got better and finding the diamonds in the rough.
That said, I’ve gotten “lucky” enough times that I think I know how to optimize for finding it.”
Pro tip: No, you don’t.
I’m game to explain it over coffee to the author, who seems to be in the Bay Area, but this writing reads a lot like someone who just started to scratch the surface on abstract learning and metacognition while thinking that it’s a wildly new discovery.
It’s hard to hear/read the reenforcing recitations of new-to-the-(speaker/author) concepts and not see it as a slow-motion replay of a common thought process, akin to sitting in Dolores park listening to musings on democracy and governance in the age of automation... thirty minutes after a batch of pot truffles has sold out...
As a generalist/multi-whatever, let me say this: expert engineers hate the knows-enough-to-be-dangerous guy who thinks he’s god’s gift to learning that can just walk in and be conversant after reading one book. That guy is a pain in the ass know-it-all that spoils conversations, derails projects, and digs bottomless pits of technical debt.
How do I know? I was that guy when I was younger, and I’m sure I drove people nuts.
No doubt there are times when I’m still that guy, but I try to hold my tongue more now until I’m confident in what I know and openly disclose where I think I fall short.
If you can’t take that mechanism for learning and flex it down to the bottom of the rabbit hole, or if you always fall back onto the crutch of relating a complex topic to a comfortable imperfect analogue, you’re aiming to be the engineer that gets handed non-critical work or the manager that nobody wants in a meeting... Or maybe a successful founder of some kick-ass mega unicorn... sigh... whatever.
In the big companies (and Silicon Valley) I hear/see this type of thinking and self-congratulation all the time among engineers with 1-4 years of professional experience. On occasion, those engineers have the horsepower to back it up, but it’s rare. Some of that write-up resonates with how I’ve learned/worked over time, but I’d never write something so stridently confident.
Me 20 years ago?
* ask questions that probe your point of concern, instead of pointing out flaws. This allows the other person to reveal his expertise with a solution and also enlighten you in the process or admit their mistake.
* Never claim to know everything. Always be cognizant of the fact that other people ("newer" people) will show you up. Always be willing to learn from anybody who makes a concise argument.
>I’m game to explain it over coffee to the author
I'm game. You make some great points and I feel like I could learn a lot from you. DM me :)
I'm responsible for hiring in my small department, and the OPs blog post would be a red flag.
We appreciate if candidates show they can learn quickly, but it's not useful to us in isolation. You already need to have a good base set of skills (CS, physics) but more importantly the humility to accept that with 5 years of experience you probably don't really know the thing you claim to know.
Some bay area tech companies like to hire more riskily, so it might be a good strategy after all though.
I generally find myself being a little more brutal with people who sound/read like me 18-20 years ago, partly because I think that being hit over the head can actually do some good. It certainly helped me, and I’d have done better to listen more quickly rather than having the echoes of those much wiser than me take decades to sink in.
I strongly favor raw learning ability over knowledge when hiring for most positions. It’s incredibly valuable to be able to transition from one space to another over the span of 3-12 months (depending on the domain). Some badges are harder to earn (e.g. mathematics, physics, hardware, distributed design), but I generally feel okay taking someone who is an expert in one space and pointing them at another space that relies on the same fundamentals if they seem like they can learn.
I do, however, prioritize two things above learning proficiency when hiring:
1. Accurate self-assessment. If you can’t understand where you are, you’re going to be a constant headache. 2. Not an asshole. An asshole can destroy a team, even if they’re brilliant.
I want someone to be able to learn deeply quickly, though. Generally, if they have that ability, they’ll have real depth in areas of prior learning. For candidates at the Senior Engineer levels and above, I’ll spend at least an hour or two before the interview reading their publications or digging in on their areas of stated expertise so I can ask questions probing to their edge (or mine). Sadly, I hit the candidate edge first for roughly 80% of candidates, and it strongly correlates to no-hires.
That said, I can see how the first paragraph (with it's the self-congratulatory tone) could have primed you with these feelings.
I'm a firm believer that there is nothing wrong with re-explaining a well known topic (learning how to learn).
After blogging for the last 10 years, I find it amazing how my writing on a topic which I find elementary could be such a great resource for someone else in their research and problem solving.
Since you appear well versed in the topic of metacognition, you likely just proved the authors point. You spent time on a beginner/intermediate level resource on metacognition...
It is not the authors fault that you experienced diminishing returns on your time and effort.
The author started with "I amaze people with how well I can learn", bridged with "here's my method", which could be reduced to the mixed-media version of the stereotypical programmer who "read one book about that once" (which drives experts crazy), and closed with "I think I've optimized this! Behold!"
So it easily reads as hubris, possibly mixed in with some raw horsepower, with a dash of Dunning and Kruger giggling in the corner at invocation of their work in what is likely a demonstration of their work.
So it's not the musing on a well-trodden topic that bugged me. It's the tone and subtextual (and, at times, overt) assertions...
Two more things, one of them important-ish:
1. I haven't experienced diminishing returns on my time and effort. I learn much more quickly now than I did when I was a fresh-to-industry voracious hot-head, in large part because I've learned how I learn, a mechanism that doesn't map well to all (or, really, many) other learners. My scoffing at 1000X comes from having thought the same sort of thing 20 years ago and having been dead wrong at how much more ceiling there is.
2. I'm in no way well versed in metacognition, proving a different point: One needs merely know more than the others around at the time to seem like an expert, and slinging some language around can buy one a false sense of expertise, for others and oneself.
I use HN to find the best programming and math resources by using their search function, looking at the most upvoted learning resources or by scouring the comments and finding a consensus in a more qualitative manner.
On the top of my head: it led me to places such as Gilbert Strang for linear algebra or Eloquent JavaScript for a good introductory textbook and JavaScript The Good Parts for a more advanced textbook. 3Blue1Brown was a good channel for mathematics. And it is also thanks to HN that I discovered vimtutor. There are also a lot of references made her to Coursera course Learning how to Learn.
It is long form text, which is an automatic -1 for me, and I dismissed this for a while, but over time it's seemed to come out as one of those "great" resources in a different domain that I muse read. After starting, I noticed
1. It reads more like vimtutor than an article; i.e. you pick your own adventure, which I can bite
2. Many people I look up to as experts have directly recommended this to me
3. It's relevant to me now - I'm working on a startup
I still dismissed the guide for a long time and wasn't convinced it was the best resource out there - but it's starting to seem like it's atleast a local maxima for me.
I hope that made sense into how I think about resources when learning. I don't yet have a coherent system in place to determine how valuable a resource is to me. I usually only know months or years later
1) The author proposes learning _everything_ under the sun, so that one has enough dependencies to learn new topics. This is like downloading most of the packages in aptitude to speed up builds.
However, I prefer to go about it in a different way. I focus on patience and normalizing myself to long and deep build chains. Learning a light topic in a new domain can take hours, if not days, to understand it deep enough to successfully use it to learn other concepts.
When there is something I need or want to know, but when I pull up Wikipedia and see a bunch of foreign vocabulary, I will create a dependency list of vocabulary, and learn everything I need to know to read that article and flawlessly understand it. If it is a new topic it can sometimes take a week of slow learning to quickly learn. It seems painfully slow, but it's learning a large chunk of a new domain in a week. This could be something a college class takes months to go over, so the rate is quite accelerated even if at the time it doesn't seem like it. Slow and steady really does win the race.
2) >I keep trying while following a breadth-first-search approach to domains and resources as described above.
and
>Stop. This is counter-intuitive, but unless you want to become a master at something (besides learning), you really just want to know everything at an intermediate level.
When recursively learning prerequisite concepts, usually understanding 100% of every prerequisite concept is necessary. There are no short cuts. In this scenario a depth first search is ideal, finding the root and starting there.
Likewise, a dependency chain of concepts is a chain of abstraction. When learning a prerequisite concept, no matter how abstract it is, it must be thought of as concrete. It must be understood as if it is concrete. This is the minimum bar to using a concept to build up other concepts. This is can be thought of as an intermediate level of understanding, but I suspect for most people this means mastery. Don't stop short.
3) What is learned will be forgotten within a couple of weeks, unless it a) has been pondered about a minimum of 6 seconds, usually by making up a story to describe it to yourself. The 6 second rule is a neurological limitation that is required to move the memory from short term to long term storage. And b) It is strongly beneficial for what is learned to leave the mind and come back into it on one way or another. This can happen by doing something with your hands, talking out loud about it to someone else, or note taking. This is important and without it details will be lost. I write in a condensed mind-map list like format for this reason. Likewise if I forget something or remember something wrong, I can go back with a ctrl+f and figure out what I did wrong.
4) Etymology is massively important when it comes to learning. The history of why the concept is called what it is called, as well as understanding why it was invented or how it was discovered. I try to visualize what the world was like before the thing I am learning existed and how things used to be done. This teaches me of it's power and when and why to use it. When etymology is done right, the mind will record the concept into spacial awareness which is the strongest and longest lasting kind of memory we have.
There is a lot I could say, but by understanding where people are coming from, you can apply what technique is ideal for that specific task. Learning is no different. One can master it, and from that the gains are innumerable.
You seem to know a lot about doing rapid learning well.
Any recommendations on what to read if I want to understand more about how learning works ?
I learned everything about learning by reviewing my notes. I take notes in a condense and highly abstract format that is quick to write, yet simultaneously gives something close to a one-to-one map of my mind. This way when I review I can learn better ways to study.
How I learned my technique:
I do Data Science / Data Analytics. When it comes to programming a Data Scientist can get by not knowing how to write a function. Many are horrid coders, and that's okay because they specialize in research and analytics, not writing code. However, if a DS' day to day is writing code, and it's the most painful part of the day, then would my life be better if I knew how to program flawlessly?
In response to this question I took a job as a Software Engineer for a while, doing hard core C++14 at the time. (The company gave me the hardest project they had to incentivize me to go back to doing DS for them.) I had learned C many years ago but when it came to C++ I struggled with making a class. I struggled at knowing what the difference between a copy and a move was. I struggled with multiple inheritance. I struggled with smart pointers. I even struggled with reference collapsing rules. It was painful!
In response, I developed the learning technique mentioned above, and decided to learn C++ at an accelerated rate. I learned over 250 concepts in less than a half a year, while being productive in a code base, and not just 250 concepts, but I learned the etymology of every concept. I learned how, why, and when to use them. I became a master at C++ and now it is my favorite language. C++ was a great use of this learning technique, because when I learned something it would come up again maybe weeks or months later. I wanted to know C++ so well I never had to google for anything ever again.
Long story short, C++ is a great candidate for meta-learning. That's how I learned what I know.
Also, the article mentions how subjects cross domains. This is a key aspect of my learning too. Inspired by Hofstadter, isomorphisms between domains has been a hobby of mine too, and I find both Data Science and Discrete Mathematics to be useful when it comes to the study of intelligence and the study of communication. I highly recommend doing the same. It's not only fun, but it can change your life.
However, for test prep, through school and college I have read and tried a lot of guides on learning including simple index cards, the Leitner System (https://en.wikipedia.org/wiki/Leitner_system), coming up with mnemonics, transcribing content from a source medium to some other medium, the Feynman technique, etc.
What I learnt about myself was that any technique involving writing didn't work for me. I would never go back to read something I wrote. I hated writing. I often walked into lectures without a notebook and just listened instead. Don't memorize. Listen. Understand. I have friends who were brilliant "test takers" - which to me meant they could quickly memorize a lot just before an exam. That's something I'm bad at, so I took tests primarily based on what I'd understood over lectures, or follow up discussions I had with professors or classmates.
This also means I wouldn't practice math questions or work out physics problems before a test - I'd sorta just read over solved problems and make sure I understood them.
In retrospect, I actually think this isn't a great way to study for an exam and I always got very nervous just before a test because I feel grossly underprepared, but I saw passing them as a formality and usually just worked on other things I found fun (for instance, I built CSS Peek during finals week of sophomore year).
If the course moved from a set of rules to a set of principles and a philosophy, imho the course would be more useful.
One of the few things that blew my mind in the course was how they interviewed someone who went around the world learning different languages at an accelerated rate. His method is to learn enough to ask questions, then he only spoke in that language slowly picking up the language the way a kid does.
Most of the class comes down to differentiating between a focused and diffused state (though it's really a spectrum) and how to get into each mental state and the benefits of doing so.
imho, if you want to accelerate learning, learn how to meditate. It will increase awareness and reduce distractions. Though this is a bit more advanced than the class' recommendation.
One critical way to become a better learner on a team (that is, a far less annoying learner) is to recognize when to ask a question of someone else and when to just Google/Portal/XPlore/etc it. Interactive mentors will be far more welcoming when they feel like you’ve earned the roadblock that you’re up against.