More Related Content


How to Argue about JavaScript

  1. How to argue about JavaScript
  2. How not to argue about semicolons
  3. Our arguments should be purposeful.
  4. ideal: scientific research
  5. reality: political debate
  6. “In science it often happens that scientists say, ‘You know that’s a really good argument; my position is mistaken,’ and then they actually change their minds and you never hear that old view from them again. They really do it. It doesn’t happen as often as it should, because scientists are human and change is sometimes painful. But it happens every day. I cannot recall the last time something like that happened in politics or religion.” Carl Sagan (1987)
  7. “Who the hell are you?”
  8. No one of consequence.
  9. “Where do you get off censoring me, you fascist?”
  10. I don’t.
  11. Motives for having a code argument:
  12. to troll
  13. to feel awesome about yourself
  14. to persuade others to your way of thinking
  15. to understand the subject better
  16. An argument has three goals.
  17. Goal 1: It should produce a wise agreement, if possible.
  18. Goal 2: It should be efficient.
  19. Goal 3: It should not damage the relationship between parties.
  20. Tactics for arguments:
  21. Tactic 1: Separate the people from the problem.
  22. bad: the objective nature of the problem how humans feel about the problem
  23. bad: the objective nature of the problem how humans feel about the problem
  24. good: the objective nature of the problem how humans feel about the problem
  25. the original ticket:
  26. response from Jacob Thornton (@fat):
  27. comments one and two:
  28. comment three:
  29. comment four:
  30. (this is why you should be nice)
  31. Tactic 2: Focus on interests, not positions.
  32. Tactic 3: Invent options for mutual gain.
  33. Tactic 4: Insist on objective criteria.
  34. (standards)
  35. (benchmarks)
  37. “So what should I do?”
  38. How to think:
  39. Retain a willingness to be convinced
  40. Imagine where others are coming from
  41. Account for your own taste
  42. Account for your own emotions
  43. John Resig “I learned some things about jQuery today…”
  44. Recognize derails as they happen
  45. Ahead: An inventory of the discussions taking place in a single closed ticket on Twitter Bootstrap’s GitHub project
  46. main question: Should Bootstrap change a syntactic shortcut that does not minify properly in JSMin?
  47. main question (broadened): Should library authors care about interoperability with JSMin? Or should JSMin accommodate code that Crockford finds distasteful?
  48. meta-discussions perpetuated by at least two of the 143 ticket participants:
  49. “People who don’t use semicolons are JavaScript hipsters.” “No, people who are fanatical about semicolons are just spreading FUD.”
  50. “@fat is being a jackass and a bad project steward.” “No, people like you are bitching about a library they got for free.”
  51. “Semicolon or not, that line should still be rewritten.”
  52. “JSMin sucks anyway. People should use some other minifier.”
  53. “Who cares about minification? Everyone’s got a fast connection now.”
  54. “We’ve now spent like a hundred comments arguing about a single semicolon that @fat is too stubborn to add.”
  55. “We are bikeshedding like hell up in here.”
  56. “Stop posting on this ticket! GitHub sends me a notification with each new comment.”
  57. also: trolls
  58. also: wisecracks
  59. meanwhile:
  60. Staying on topic requires moderation.
  61. How to speak:
  62. Be nice.
  63. Speak with surgical precision.
  64. E-Prime
  65. “Any proposition containing the word ‘is’ creates a linguistic structural confusion which will eventually give birth to serious fallacies.” Alfred Korzybski, Semanticist
  66. “PHP is awful.”
  67. “PHP is awful.” “Whenever I use PHP, I end up longing for the logical API and unsurprising behavior of Ruby or JavaScript.”
  68. “jQuery is easier to use than MooTools.”
  69. “jQuery is easier to use than MooTools.” “I find jQuery more intuitive to use than MooTools.”
  70. Be honest in your characterizations.
  71. “What if the other side won’t play along?”
  72. Don’t rise to the bait.
  73. Emphasize the contrast between your tactics and your opponents’.
  74. “Why do I have to take the high road?”
  75. Hellfire and torment I didn’t have time for:
  76. Ember vs. Backbone
  77. Micro-frameworks
  78. CoffeeScript!
  79. Issue #28: script loading solution
  80. Douglas Crockford vs. the world
  81. (fin)