Skip to content

Instantly share code, notes, and snippets.

@bitops
Forked from prakhar1989/richhickey.md
Created April 18, 2018 03:18

Revisions

  1. @prakhar1989 prakhar1989 revised this gist Feb 16, 2015. 1 changed file with 6 additions and 7 deletions.
    13 changes: 6 additions & 7 deletions richhickey.md
    Original file line number Diff line number Diff line change
    @@ -18,13 +18,12 @@ Mastery comes from a combination of at least several of the following:

    Imagine your proposal recast:

    ** Writing Achievements
    ** Learn a variety of languages
    ** Experience the ins and outs of various platforms
    ** Enhance your understanding of the building blocks that we use as writers
    ** Write in the open
    ** Teach

    - Writing Achievements
    - Learn a variety of languages
    - Experience the ins and outs of various platforms
    - Enhance your understanding of the building blocks that we use as writers
    - Write in the open
    - Teach

    These are largely the activities of beginners and students, not practitioners nor masters (or, in the case of teaching/publishing, people who should already be practitioners/masters). N.B. I am not questioning the many benefits of broadening or learning activities, just the premise that they lead to any sort of mastery.

  2. @prakhar1989 prakhar1989 revised this gist Dec 29, 2014. 1 changed file with 12 additions and 39 deletions.
    51 changes: 12 additions & 39 deletions richhickey.md
    Original file line number Diff line number Diff line change
    @@ -1,66 +1,39 @@
    Rich Hickey on becoming a better developer
    ===

    Avatar
    Rich Hickey • 3 years ago

    Sorry, I have to disagree with the entire premise here.

    A wide variety of experiences might lead to well-roundedness, but not to greatness, nor even goodness. By constantly switching from one thing to another you are always reaching above your comfort zone, yes, but doing so by resetting your skill and knowledge level to zero.

    Mastery comes from a combination of at least several of the following:

    Knowledge
    Focus
    Relentless considered practice over a long period of time
    Detected, recovered-from failures
    Mentorship by an expert
    Always working *slightly* beyond your comfort/ability zone, pushing it ever forward
    - Knowledge
    - Focus
    - Relentless considered practice over a long period of time
    - Detected, recovered-from failures
    - Mentorship by an expert
    - Always working *slightly* beyond your comfort/ability zone, pushing it ever forward

    Imagine your proposal recast:

    * Writing Achievements

    ** Writing Achievements
    ** Learn a variety of languages

    Learn Chinese
    Learn French
    ...

    ** Experience the ins and outs of various platforms

    Write a book review
    Write a product catalog
    Write a comedic screenplay
    ...

    ** Enhance your understanding of the building blocks that we use as writers

    Write in the first, third person
    Write poetry
    ...

    ** Write in the open

    Blog
    Tweet
    Publish essays
    ...

    ** Teach

    Conduct a writing workshop
    Tutor students in writing
    ...

    These are largely the activities of beginners and students, not practitioners nor masters (or, in the case of teaching/publishing, people who should already be practitioners/masters). N.B. I am not questioning the many benefits of broadening or learning activities, just the premise that they lead to any sort of mastery.

    Musicians get better by practice and tackling harder and harder pieces, not by switching instruments or genres, nor by learning more and varied easy pieces. Ditto almost every other specialty inhabited by experts or masters.

    One can become a great developer in any general purpose language, in any domain, on any platform. And, most notably for the purposes of this discussion, such a developer can carry that greatness across a change in any of them. What skills then are so universally useful and transportable in software development? Two are: the ability to acquire knowledge, and the ability to solve problems.
    One can become a great developer in any general purpose language, in any domain, on any platform. And, most notably for the purposes of this discussion, such a developer can carry that greatness across a change in any of them. What skills then are so universally useful and transportable in software development? Two are:

    > the ability to acquire knowledge, and the ability to solve problems.
    How does one get better at acquiring knowledge and solving problems? Not by acquiring a lot of superficial knowledge nor solving a lot of trivial problems (a la your 'achievements'), but by acquiring ever deeper knowledge and solving ever harder problems.

    You should take heed your phrase 'leveling up'. You don't level up by switching games all the time, but by sticking with one long enough to gain advanced skills. And, you need to be careful to recognize the actual game involved. Programming mastery has little to do with languages, paradigms, platforms, building blocks, open source, conferences etc. These things change all the time and are not fundamental. Knowledge acquisition skills allow you to grok them as needed. I'd take a developer (or even non-developer!) with deep knowledge acquisition and problem solving skills over a programmer with a smorgasbord of shallow experiences any day.

    Will this lead to an as-easily-realized improvement strategy based upon boolean achievements? Probably not.
    21 • Reply•Share ›
  3. @prakhar1989 prakhar1989 renamed this gist Dec 29, 2014. 1 changed file with 0 additions and 0 deletions.
    File renamed without changes.
  4. @stijlist stijlist revised this gist Dec 29, 2014. No changes.
  5. @stijlist stijlist renamed this gist Dec 29, 2014. 1 changed file with 0 additions and 0 deletions.
    File renamed without changes.
  6. @stijlist stijlist renamed this gist Dec 29, 2014. 1 changed file with 0 additions and 0 deletions.
    File renamed without changes.
  7. @stijlist stijlist created this gist Dec 29, 2014.
    66 changes: 66 additions & 0 deletions gistfile1.txt
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,66 @@
    Rich Hickey on becoming a better developer

    Avatar
    Rich Hickey • 3 years ago
    Sorry, I have to disagree with the entire premise here.

    A wide variety of experiences might lead to well-roundedness, but not to greatness, nor even goodness. By constantly switching from one thing to another you are always reaching above your comfort zone, yes, but doing so by resetting your skill and knowledge level to zero.

    Mastery comes from a combination of at least several of the following:

    Knowledge
    Focus
    Relentless considered practice over a long period of time
    Detected, recovered-from failures
    Mentorship by an expert
    Always working *slightly* beyond your comfort/ability zone, pushing it ever forward

    Imagine your proposal recast:

    * Writing Achievements

    ** Learn a variety of languages

    Learn Chinese
    Learn French
    ...

    ** Experience the ins and outs of various platforms

    Write a book review
    Write a product catalog
    Write a comedic screenplay
    ...

    ** Enhance your understanding of the building blocks that we use as writers

    Write in the first, third person
    Write poetry
    ...

    ** Write in the open

    Blog
    Tweet
    Publish essays
    ...

    ** Teach

    Conduct a writing workshop
    Tutor students in writing
    ...

    These are largely the activities of beginners and students, not practitioners nor masters (or, in the case of teaching/publishing, people who should already be practitioners/masters). N.B. I am not questioning the many benefits of broadening or learning activities, just the premise that they lead to any sort of mastery.

    Musicians get better by practice and tackling harder and harder pieces, not by switching instruments or genres, nor by learning more and varied easy pieces. Ditto almost every other specialty inhabited by experts or masters.

    One can become a great developer in any general purpose language, in any domain, on any platform. And, most notably for the purposes of this discussion, such a developer can carry that greatness across a change in any of them. What skills then are so universally useful and transportable in software development? Two are: the ability to acquire knowledge, and the ability to solve problems.

    How does one get better at acquiring knowledge and solving problems? Not by acquiring a lot of superficial knowledge nor solving a lot of trivial problems (a la your 'achievements'), but by acquiring ever deeper knowledge and solving ever harder problems.

    You should take heed your phrase 'leveling up'. You don't level up by switching games all the time, but by sticking with one long enough to gain advanced skills. And, you need to be careful to recognize the actual game involved. Programming mastery has little to do with languages, paradigms, platforms, building blocks, open source, conferences etc. These things change all the time and are not fundamental. Knowledge acquisition skills allow you to grok them as needed. I'd take a developer (or even non-developer!) with deep knowledge acquisition and problem solving skills over a programmer with a smorgasbord of shallow experiences any day.

    Will this lead to an as-easily-realized improvement strategy based upon boolean achievements? Probably not.
    21 • Reply•Share ›