When you are young and inexperienced, you don't know the difficulty of a subject. So as long as each step you take to advance your skill is achievable, and the feedback loop is good enough, you'll keep going. But as soon as you realize that you've only scratched maybe 1% of what is needed for mastery (when prior to that realization you felt like you were 90% there), it can be difficult to keep going.
As you get older and more experienced you get exposed to many things that appear to be "easy" but you then find out how much work it is (after you've sunk a bunch of time and effort into it). After enough of this exposure you realize that any skill that isn't realized by a majority of the population takes an immense amount of dedication and opportunity cost. So after a while you tend to stick with what you already know (sunk cost).
Of course your life satisfaction can improve with more skills you have, especially if they are skills that don't become too obsolete. For example being able to do some maintenance on your car (brake job, oil change, tire rotations, radiator flush...) can save money at a mechanic. And being able to take apart a sewer trap under a sink to clean out the hair clog is better than pouring a strong alkaline solution down the drain and hoping it works.
So it is really important to learn enough life skills while you are young to help build up a health and satisfying life later.
This comment really resonated with a feeling I’ve had over the past few years. When I was younger, especially at the beginning of college, I loved to build things by programming. I learned new languages, new patterns, wrote an OS, a website with all the front end complexity, etc. I could hack something on the weekend outside of schoolwork.
For a few years it has felt so difficult to start something - perhaps a curse of “experience” is that you see the failure modes ahead of time. I think I’m overall more efficient, but my motivation to just strike out there and try something has been wrung out of me.
Lately I’ve been trying to trick myself into working through that feeling and learning on the side. A desire to “finish” (i.e. write up as a blog post, publish software, send to a friend) is what gets me to overcome this bias to inaction. But it still shocks me how much more creative energy I had as an 18 year old than I do now.
My trick for avoiding that feeling is to intentionally set out to do projects in a terrible way, just to see what that'd be like. So for example I might write a project all in a single file, or entirely without classes, or with wildly too many classes, or with weird fp-trickery for no reason. There's a million weird ways to write a project badly, and in practice you'll discover it's almost never a real hindrance to progress compared to best practices.
“The passionate state of mind is often indicative of a lack of skill, talent or power. Moreover, passionate intensity can serve as a substitute for the confidence born of proficiency and the possession of power. A workingman sure of his skill goes leisurely about his job, and accomplishes much though he works as if at play. On the other hand, the workingman who is without confidence attacks his work as if he were saving the world, and he must do so if he is to get anything done.” - Eric Hoffer, The Passionate State of Mind
Well the counter-argument to that is: why do you need to achieve mastery? You can be happy with the slow progress you make along the way. You don't need to be Picasso to enjoy painting.
I don't think most people strive for mastery. But many things just aren't that fun or satisfying if you don't at least achieve competence.
A lot of hobbies, crafts, and activities really only start to become fun (rather than "rewarding but tiring") when you start to get good at them, because you have to think/work less hard to achieve basic satisfying outcomes.
>I don't think most people strive for mastery. But many things just aren't that fun or satisfying if you don't at least achieve competence.
Learning how to play the guitar was frustrating for me, but my stubbornness to be able to play the music I listened to is what kept me going. I'm constantly listening to music and I knew I would enjoy it in the long run so I'm glad I stuck with it, but man, the first hundred hours or so of learning honestly wasn't enjoyable to me. I love it now but it felt like a chore at the time.
I always laugh when people remark that some dancer "makes it look easy". Because it is easy when you've trained enough. And the more you train at it, the funner it gets.
I think this "making it look easy" is probably most relevant for ballet, where high level dancers still train very "basic" movements or use a lot of muscular effort to create the illusion of lightness etc.
For me any style that has decided on moves. Salsa, Swing, Ballroom. I can jump around at a club to pop/house/techno/etc... but once I have to follow specific steps with a partner I have a huge hurdle.
I tried taking salsa classes once. Was going to 4 classes a week. The instructor told me it would be a year before I'd be able to lead. Of course that was one instructor's opinion. I stopped after 4 weeks and feeling like I was making zero progress. It was not fun to feel like I was in everyone else's way not being able to keep up or not being able to transition from one move to the next. Also not really a fan of salsa.
I've taken maybe 10 swing dance classes as well but zero progress. Bad teachers maybe.
As a swing dancer / salsa dancer, the best approach I found is to stick with one dance, and practice it repeatedly ... say every weekend for a month. You need to get to the point where you're not focused on your footwork in order to be able to focus on the arms/leading.
Also, find a place where the partners swap / dance around, ideally during the lessons as well, you'll learn more and won't feel like you're boring everyone. You'll also recognize more people and possibly be more willing to ask people to dance.
I did much better when sticking to one style, getting it down, then starting the next. I found that mixing them just got them muddled.
I also found I greatly preferred swing, both the music (former sax/clarinet player) and the crowds. Swing dancers seemed more focused on having fun and generally less snobby.
As for leading, I improved greatly when I:
1: found a few partners who could back lead to show me what I was doing wrong. Its generally poor technique, but it greatly helps with getting the strong connection needed to telegraph the moves.
2: Understood the connections and flow enough to vary the patterns on my own.
It's a great way to make up for all the time stuck sitting a computer.
Thanks for the advice. I did stick to one style while learning. You say a month every weekend but that's just 4 lessons. I had 16 salsa lessons over 4-5 weeks and made no progress. The swing lessons were later.
Pretty much any style that has prescribed technique to it (not just random movements). Partnership dancing comes to mind. It takes years of training to make it look effortless, and it is (for the dancers). Even the best regularly go over the basics again and again.
Yea, the counter to mastery is the realization that you can get to a useful place in most areas with 100 hours or less of effort.
It’s nowhere near enough time to become say a short order cook, but plenty of time to learn to make bacon and eggs for breakfast in whatever specific way you want it.
Learning when to stop at a satisfactory level is equally hard as learning when to floor it and push against some difficult goal.
I think even 100 honest hours learning something will get you further than you probably need to go, e.g. basic home maintenance stuff that is just 1. find the right youtube video, 2. have the tools, 3. don't be a moron.
god knows that my far beyond satisfactory level of dotfile / config tweaking has probably paid fewer dividends than I'd like to think...
Your first sentence stands well on its own. I suspect if you shadowed a short order cook for 2.5x 40 hour work weeks, you would be able to function as a short order cook yourself. The entire point of that job is to prepare food that takes a short time to deliver. This means lots of rote tasks which can be performed rapidly.
Cook doesn’t only cook by the way. The fact that you can remember a recipe doesn’t mean you will be able to easily adapt to the lack of certain ingredients on the market and/or optimise the cost of the finished product.
Even Picasso was a jack of many trades. I am in no position to decide whether or not he was a master in every field by the end of his life, but I know for certain he was mediocre at all of them at some point.
I find this is true for the handful of multi-talented people I know in my personal life. They truly have innate talent/ability in at least one area. Sometimes they have a remarkable ability to learn new things quicker than most people, other times they have to work hard for everything else, but they always have their natural talent to fall back on, in times of duress or limited energy. I'd be interested to see some research in this area.
I know a lot of seemingly "talented" people. How do they pick up a new instrument in 2-3 months? Or be able to balance on a skateboard after just a little while? Or get kills better than me with only 200 CS GO hours clocked?
The answer is always that they spent a lot of focused time earlier in life, or that they spend a lot of time that I wasn't aware of -- like I find out that they have 2500 hours in CS:S on another account... yeah that makes a lot more sense.
I don't believe innate talent exists. Other than that some people are mentally quicker, or have faster reflexes, or are physically more capable -- "general" things. But talent exists only from both hard work and time, which for many things can start at age 2 or 3.
>I don't believe innate talent exists. Other than that some people are mentally quicker, or have faster reflexes, or are physically more capable -- "general" things
I don't understand how this distinction is supposed to work. If someone has exactly the 'general natural inclinations' that fit to a certain activity, it seems asinine to not call them talented in it. Sure, they won't be skilled in it unless they actually put in the work, but they'll comparatively have an easier time with it.
They might be thinking of the tendency for people to assume talent in a particular task is something you are born with, not the general aptitudes for that task.
Like when one person says "A natural born musician" they are usually not just suggesting the person has general traits good for music. They often just believe the person was born with musical talent pre-programmed somehow.
"I don't believe innate talent exists" - This, in light of 100 years of (mathematized quantitative genetics) and thousands of years of empirical observation, is a profoundly wrong observation. There is variation in, broadly speaking, traits and (almost) all physiological and behavioral traits are heritable. Do you believe that taller parents tend to have taller offspring? I guess the answer is yes; then, it is not any different for other traits that are less-observable, for example control of motor functions.
There is a time, early in life, during which traits are more plastic, for a variety of reasons (for height, nutritional interventions are more likely to be successful early in life than during the teenage years), but you won't make a genetically slow phenotype into a top 1% 100-m specialist.
> truly have innate talent/ability in at least one area
How are you assessing that?
In the Picasso example it seems you are confusing "practiced extensively since early childhood with extraordinary external support and training and unusual personal motivation" with "innately talented" (whatever the latter is even supposed to mean). I would imagine that some of the people you know have some similar (probably less extreme) background.
What kids find easy or hard has substantially to do with past experience.
Watching my 2 small kids learn and grow, they can over the course of a few months go from not wanting to try something at all because it seems impossible or scary to performing competently, with the only thing in the middle being occasional short attempts (like 10 minutes at a time), spaced weeks apart. Then once they feel basic competence, they can continue to improve very rapidly, while having a better and better time.
Just before the pandemic we had gathered 4 3-year-olds together. Kid A was embarrassed at being a beginner riding a balance bike and refused to even try because kid B was already skilled at it (kid A is now also a pro 1 year later), neither of kids A and B wanted to try going across the monkey bars while kid C had no problem (because his dad had been encouraging him with candy placed further and further away along the monkey bars for a few months), kid C who didn't do much daily running compared to the others felt bad that he was much slower at running.
And the same can be seen for drawing, throwing a ball, reading, playing a musical instrument, speaking a second language, solving simple logic puzzles, building with construction toys ....
At this level, none of these differences are primarily due to "innate talent". There are multiple orders of magnitude difference in skill to gain in a very short time, with fast returns to small amount of spaced practice.
There’s an opposite view argued here: https://danluu.com/p95-skill/ with the claim that it isn’t that hard to get to 95%ile of many activities but that this level of skill is still useful.
It misses an important qualifier: 95% among who and for which activity? It is relatively easy to get to 95% for a skill/activity few care about. But try to become 95%ile in like baseball among the Texas 13-17 years old cohort and the music changes. I mean, I agree you can get to the top 5% in your neighborhood, but does it matter to any soul?
I've also heard it argued that youth still don't know what's impossible, so from time to time, they approach a problem that's deemed "impossible" from a different angle and find a solution.
Scott Adams has a way of thinking about this that he casts as "Systems vs Goals", where he advocates developing a talent stack of skills that work well together towards unspecified, undefined future goals. He says his talent stack is comedian+cartoonist, he's not amazing at either individual skill but he's one of the best at the combination which allowed him to create Dilbert.
I got value from this way of thinking but I also think specific goals are necessary (e.g. as a startup founder targeting a specific market, product or vision) and that there are some domains that demand you to be the best in a single talent vertical due to a winner take all tendency (e.g. athelete, musician, professional gambler - although in any of these we can still distinguish systems & talent stacks from goals).
Skills one might think have nothing in common can have surprising intersections.
For example, my training as a mechanical engineer and 3 years spent working on a gearbox design for the 757 have had a significant positive effect on my programming and the design of the D language.
Can you please comment on the advantages and the effect on your programming?
Do you think these advantages are common among those who have (mech/electrical/chem/etc.) engineering education and training who move into software development?
1. Code that looks right should be right, code that looks wrong should be wrong. (I know this sounds trite, but there are many examples.)
2. When a program self-detects a fault in its logic, it must stop immediately, as it no longer will be in a known state. (It's still common practice to imagine one can recover from an assertion failure. I've spent many, many hours trying to convince other programmers of this.)
3. Better education will not prevent programming bugs. Better process and mechanical checking will. (This notion has been gaining a lot of momentum.)
> Do you think these advantages are common among those who have (mech/electrical/chem/etc.) engineering education and training who move into software development?
Heck, they haven't even trickled into the nuclear power industry (Fukushima), the oil business (Deepwater Horizon), or the automobile industry (Toyota surging problem). Those disasters taught lessons learned by the aviation industry decades earlier.
Perhaps I should amend my earlier statement that it's experience in the aviation business that I've taken over to software. My engineering training was mostly about math, not cutting metal and the nut behind the wheel.
I appreciate the principles, thank you for sharing them.
I started my career in automotive manufacturing before becoming a business analyst on a team developing in-house business automation tools. The program I studied did cover an engineering design process. We were taught to quantify design requirements (subject to a static load of this much, must be within these dimensions, and so on) and use a combination of calculations, simulations, and prototypes to check we are meeting those design specifications.
I am assuming that you would have done something similar in aerospace. If so, have you carried over any of that into software development? Do you have any guidance or D design documents you can point to? The D specification is the final product, but I’m trying to gain a better understanding of how one gets to that final specification.
You're right, we did this a lot at Boeing. I am very proud of the fact that none of my designs needed to be modified once the metal was cut, and it all passed test and certification without any problems.
Software development, on the other hand, lends itself very well to iterative development. You don't have problems like sinking a new forging die costing half a million bucks, so work really diligently to not need to scrap a die. Keep making mistakes like that, and Boeing will move you to a position where you get to design ash trays.
3. Better education will not prevent programming bugs. Better process and mechanical checking will.
I don't know if this is what you meant by mechanical checking, but I highly rate two things to reduce bugs:
(1) Checking that the output of the entire system is 100% (and I meant 100% literally in every sense of the word) accurate, not just that the smaller unit tests pass or that the output "looks right".
(2) Scrutinizing the logic of the code line by line at least 2 times after you've finished writing it.
As a dev with a data science background, I'm always impressed how many bugs pure devs are able to smuggle in whenever the task involves any kind of data, despite extensive unit testing. I check out their code, run it once, and immediately see the output is wrong and then they have to go back and debug. If we just check our output that wouldn't be the case!
int[10] a;
a[10] = 3; // Error, array index out of bounds
The idea is to allow powerful metal code, while providing constructs that make errors much less likely. For example,
if (a < b < c)
is allowed by C, but few C programmers can tell you what it means, and the appearance of it in code is almost always a bug. Instead of educating programmers with "don't do that", D makes it illegal. (If you really want it, you'd have to write it as: `(a < b) < c`. But notice you have to make an effort to write code that way, it is highly unlikely to be accidentally written.)
> Scrutinizing the logic of the code line by line at least 2 times after you've finished writing it.
I find it useful to go back through the logic a couple months later. I usually find a lot to improve :-)
I think Adam's approach is mostly lacking deliberation, it's only after the fact that the synergy is realized but it's hard to intentionally engineer it.
I can definitely see the validity in the other school of thought though; i.e. that we should deliberately seek out synergistic talent verticals. I know this is Conor Mcgregor's approach, he's very much systems over goals (in Adam's vein, and explicitly so) but is deliberate about the specific talent stack he's working towards. Ironically it is all done towards a specific goal (to be the best fighter) although the path towards that goal is underspecified.
Here's a very common talent stack here on HN that works pretty well: math + CS + data science + one domain (e.g. finance or biology).
As you get older and more experienced you get exposed to many things that appear to be "easy" but you then find out how much work it is (after you've sunk a bunch of time and effort into it). After enough of this exposure you realize that any skill that isn't realized by a majority of the population takes an immense amount of dedication and opportunity cost. So after a while you tend to stick with what you already know (sunk cost).
Of course your life satisfaction can improve with more skills you have, especially if they are skills that don't become too obsolete. For example being able to do some maintenance on your car (brake job, oil change, tire rotations, radiator flush...) can save money at a mechanic. And being able to take apart a sewer trap under a sink to clean out the hair clog is better than pouring a strong alkaline solution down the drain and hoping it works.
So it is really important to learn enough life skills while you are young to help build up a health and satisfying life later.