Letter to a Young Haskell Enthusiast, by Gershom Bazerman.
Condensed from: http://comonad.com/reader/2014/letter-to-a-young-haskell-enthusiast/
The following letter is about tendencies that come with the flush of excitement of learning any new thing. It is written specifically, because if we don't talk specifics, the generalities make no sense. It is a letter full of things I want to remember.
You’ve entered the world of strongly typed functional programming, and it is great. You want to share the great things you’ve learned, and you want to slay all the false statements in the world.
Do you want to teach people new wonderful things? Or do you want to confirm that you are programming better? A part of you secretly wants to do the latter. That part stands in the way of communicating.
Haskell wasn’t built on tearing down rotten ideas but showing we didn’t need those ideas after all. \In functional programming, our proofs are not by contradiction, but by construction. Learn that ethic.
Types are for fallible people. This is a language for simple things and clever things alike. We want to keep simple things simple so that tricky things are possible.
Math is not a prerequisite for Haskell. Programming can be fun, and this means that math can be fun too. You don’t need that stuff to be a great Haskell programmer.
The important about spreading knowledge is that this is for everyone. Believe in everyone, attack nobody.
If you want to teach people, you have to empathize. Anything you do or say that gets in the way of that is your fault. And you don’t get to judge that — others do. You have failed to communicate.
Don’t declare that they should explain themselves to you, although you may politely ask. Remember that they were put off by your actions, not by your existence. If your conversation turned into an argument, learn from the experience. Think about how you can change.
Be quick to apologize and retract. What is there to lose? Only your pride. What is there to gain? Integrity.
There is a big internet full of people, and you don’t need to be everybody’s mentor. Just avoid being anybody’s enemy.
Other people have better things to do than judge you. If anyone's self-esteem should be cared for, it is that of the people you are talking to. You must believe in yourself to be willing to learn new things, and if you want to cultivate more learners, you must cultivate that self-belief in others.
If your goal is to have the widest, nicest, most diverse, and most fun Haskell community possible, and to interact in an atmosphere of mutual respect and consideration, then it is the only thing that will leave you satisfied.
Knowledge is not imposing. Knowledge is fun. Don’t only lecture, but continue to learnLearn to value all opinions, because they all come from experiences. It is not just the tools that matter but the ideas, and you will find they come from everywhere.
Declaring certain tools, fields, languages, or communities not worth our time is a crutch for us to shortcut evaluating too many options. Be glad that others are charting other paths!
If we are generous listeners and attentive teachers, we spread more knowledge, learn more, and enjoy ourselves more. To paraphrase Rilke’s “Letter to a Young Poet”: Knowledge is good if it has sprung from necessity. In this nature of its origin lies the judgement of it: there is no other.
comment from Michael Maloney: community is often more important than the tools the community is founded around.