summaryrefslogtreecommitdiffstats
path: root/articles/the-elephant-in-the-room/index.html
diff options
context:
space:
mode:
authorLoïc Hoguin <[email protected]>2017-10-03 13:39:41 +0200
committerLoïc Hoguin <[email protected]>2017-10-03 13:39:41 +0200
commitb5d4cb91f80c833795a2d87050c3674bb7aecdc5 (patch)
tree62bf0ad8326006fcd3407fcb7c34c844c0dc0874 /articles/the-elephant-in-the-room/index.html
parent1f8d51dd2692fc3978080419987bbe4d49a41a90 (diff)
downloadninenines.eu-b5d4cb91f80c833795a2d87050c3674bb7aecdc5.tar.gz
ninenines.eu-b5d4cb91f80c833795a2d87050c3674bb7aecdc5.tar.bz2
ninenines.eu-b5d4cb91f80c833795a2d87050c3674bb7aecdc5.zip
Update Hugo, docs
Diffstat (limited to 'articles/the-elephant-in-the-room/index.html')
-rw-r--r--articles/the-elephant-in-the-room/index.html370
1 files changed, 211 insertions, 159 deletions
diff --git a/articles/the-elephant-in-the-room/index.html b/articles/the-elephant-in-the-room/index.html
index c9def49a..a445edfc 100644
--- a/articles/the-elephant-in-the-room/index.html
+++ b/articles/the-elephant-in-the-room/index.html
@@ -7,7 +7,7 @@
<meta name="description" content="">
<meta name="author" content="Loïc Hoguin based on a design from (Soft10) Pol Cámara">
- <meta name="generator" content="Hugo 0.17" />
+ <meta name="generator" content="Hugo 0.26" />
<title>Nine Nines: The elephant in the room</title>
@@ -74,139 +74,139 @@
</p>
</header>
-<div class="paragraph"><p>Have you ever tried telling someone why they should use
-Erlang? You boast the smaller code size, the auto healing
-mechanisms, the distribution and they seem really excited.
-They wonder why they never heard about Erlang before. And
-then you show them what the code looks like. All excitement
-goes away. The smiles disappear. Their face starts
-becoming really serious.</p></div>
-<div class="paragraph"><p>You lost them. You know you lost them. They comment on the
-syntax, or perhaps you do, already admitting defeat. It&#8217;s
-unlike anything they have ever used before. And they will
-most likely end up not using it.</p></div>
-<div class="paragraph"><p>What about people who already know what the syntax looks
-like? As soon as you mention Erlang, the topic of the syntax
-comes in. It&#8217;s like nothing else matters.</p></div>
-<div class="paragraph"><p>Perhaps the topic of syntax didn&#8217;t come up. But they&#8217;re
-still not going to try Erlang because of it.</p></div>
-<div class="paragraph"><p>You&#8217;re probably not having these kinds of interactions at
-Erlang conferences. This doesn&#8217;t happen with people who are
-already somewhat interested in, or need, the features that
-Erlang provides. With them the syntax is at worst a minor
-inconvenience.</p></div>
-<div class="paragraph"><p>This happens because most developers are familiar with
-syntaxes that look nothing like Erlang. To be clear, I
-include language features and other concepts like objects
-as part of "syntax" here. Familiarity is a very important
-factor to drive adoption.</p></div>
-<div class="paragraph"><p>You can see an example of that in the Elixir world, where
-the majority of people come from Ruby or already knew and
-liked Ruby. The 2016 survey tells us that 59% of Elixir
-developers were using Ruby primarily before. That&#8217;s in
-large part because of the syntax. They will deny it of
-course and find other reasons. And yet, we don&#8217;t see such
-a strong adoption of Erlang from Ruby developers, before
-or after Elixir appeared.</p></div>
-<div class="paragraph"><p>Side note: have you ever wondered why the Elixir community
-is, I quote, much friendlier than the Ruby community?
-Despite having much of the same people?</p></div>
-<div class="paragraph"><p>Before we continue, let me be clear. I love the Erlang
-syntax. It is simple and explicit. It is powerful, especially
-when dealing with binary data. It has very few quirks.
-It has little to no ambiguity. It&#8217;s great. Except for
-persuading people to use it.</p></div>
-<div class="paragraph"><p>Over the years I have been writing Erlang, I have seen
-very few people point out that the syntax slows down
-adoption. We have no problem with it, so why would others?
-At the same time, people coming to Erlang come to solve
-a real problem they&#8217;re having, so the syntax is fairly
-secondary. Even if they hate it at first, they know they
-can solve their problems despite the syntax.</p></div>
-<div class="paragraph"><p>You don&#8217;t build a popular product or language by solving
-people&#8217;s problems though. In general you end up solving
-some problems and creating new problems. No, you build
-a popular product by <strong>convincing people to use it</strong>. And
-you make them stay with your product by making them
-<strong>commit</strong> to using it.</p></div>
-<div class="paragraph"><p>Take MongoDB for example. It didn&#8217;t become popular by
-working, or even by being practical. It wasn&#8217;t performing
-its primary function and was losing people&#8217;s data. That
-didn&#8217;t stop it from becoming popular. Smart people would
-knowingly use a database that was losing data. Think about
-that for a minute.</p></div>
-<div class="paragraph"><p>MongoDB of course had a huge marketing machine, and they
-focused on that. They helped organize many meetups all
-over the world, complete with various swag items given
-for free, including a small handbook about MongoDB. All
-people had to do was show up.</p></div>
-<div class="paragraph"><p>They didn&#8217;t go tell people to look at all the weaknesses
-their product had. They focused on the strengths. On
-what would convince people to try it. They would go
-to meetups, discuss with others, commit to try it (or
-try it at meetups directly), and by doing so sell MongoDB
-to themselves.</p></div>
-<div class="paragraph"><p>How do we get people to meetups though? That&#8217;d be the
-first step: you need to <strong>catch their attention</strong>.
-I believe MongoDB did this using benchmark results.
-Ironic isn&#8217;t it? MongoDB gets fast benchmark results
-because they lose data, and this gets everyone to buy
-into the product.</p></div>
-<div class="paragraph"><p>The key points to remember about this are:</p></div>
-<div class="ulist"><ul>
-<li>
-<p>
-catch people&#8217;s attention
-</p>
-</li>
-<li>
-<p>
-show your product&#8217;s strengths
-</p>
-</li>
-<li>
-<p>
-make people take a commitment
-</p>
-</li>
-</ul></div>
-<div class="paragraph"><p>Once they commit to something, you win. Everyone will not
-end up ultimately using your product of course, but it&#8217;s
-at the very least become a consideration. It&#8217;s on their
-mind. Their resolve will be stronger when they ultimately
-try it and inevitably run into issues.</p></div>
-<div class="paragraph"><p>Erlang&#8217;s syntax is a weakness. Almost nobody looks at the
-Erlang syntax and falls in love with it at first sight.
-No, it takes time to learn it and understand how good it
-is. You need to sell Erlang to people without showing
-the Erlang syntax. If you do show it, then you need to
-hide the parts that feel alien. Function calls are OK.
-Recursion, not so much. Maps are OK. Records, not.</p></div>
-<div class="paragraph"><p>Avoiding code is not always possible when you try
-to sell it, especially to developers. You can however
-prepare them to accept the alien syntax by admitting
-that the syntax is not perfect before you show it.
-You can do this while praising it at the same time.
-For example, "the syntax is a little out there, but
-it matches the concepts perfectly, it will all make
-sense when you start learning".</p></div>
-<div class="paragraph"><p>This might not be the best introduction. Someone will
-need to A/B test it to find the one that gives the
-best results. But that should give you ideas.</p></div>
-<div class="paragraph"><p>When something terrible happens, mentioning that this
-isn&#8217;t the end of the world <strong>before</strong> you tell others what
-happened will soften their reaction. When someone
-breaks your favorite item and cries over it calling
-themselves stupid, it&#8217;s harder to get mad at them,
-compared to the same event with no emotional reaction.</p></div>
-<div class="paragraph"><p>Our behavior is largely dependent on what&#8217;s at the
-top of our mind, so it&#8217;s up to you to take advantage
-of this to make your case in the best conditions.</p></div>
-<div class="paragraph"><p>Next time you try to make someone use Erlang, remember
-that you should aim for getting a spoken commitment
-out of them, if possible before you show the syntax.
-If that&#8217;s not possible, then prepare them to accept
-the flaws or the weirdness before they see them.</p></div>
+<div class="paragraph"><p>Have you ever tried telling someone why they should use
+Erlang? You boast the smaller code size, the auto healing
+mechanisms, the distribution and they seem really excited.
+They wonder why they never heard about Erlang before. And
+then you show them what the code looks like. All excitement
+goes away. The smiles disappear. Their face starts
+becoming really serious.</p></div>
+<div class="paragraph"><p>You lost them. You know you lost them. They comment on the
+syntax, or perhaps you do, already admitting defeat. It&#8217;s
+unlike anything they have ever used before. And they will
+most likely end up not using it.</p></div>
+<div class="paragraph"><p>What about people who already know what the syntax looks
+like? As soon as you mention Erlang, the topic of the syntax
+comes in. It&#8217;s like nothing else matters.</p></div>
+<div class="paragraph"><p>Perhaps the topic of syntax didn&#8217;t come up. But they&#8217;re
+still not going to try Erlang because of it.</p></div>
+<div class="paragraph"><p>You&#8217;re probably not having these kinds of interactions at
+Erlang conferences. This doesn&#8217;t happen with people who are
+already somewhat interested in, or need, the features that
+Erlang provides. With them the syntax is at worst a minor
+inconvenience.</p></div>
+<div class="paragraph"><p>This happens because most developers are familiar with
+syntaxes that look nothing like Erlang. To be clear, I
+include language features and other concepts like objects
+as part of "syntax" here. Familiarity is a very important
+factor to drive adoption.</p></div>
+<div class="paragraph"><p>You can see an example of that in the Elixir world, where
+the majority of people come from Ruby or already knew and
+liked Ruby. The 2016 survey tells us that 59% of Elixir
+developers were using Ruby primarily before. That&#8217;s in
+large part because of the syntax. They will deny it of
+course and find other reasons. And yet, we don&#8217;t see such
+a strong adoption of Erlang from Ruby developers, before
+or after Elixir appeared.</p></div>
+<div class="paragraph"><p>Side note: have you ever wondered why the Elixir community
+is, I quote, much friendlier than the Ruby community?
+Despite having much of the same people?</p></div>
+<div class="paragraph"><p>Before we continue, let me be clear. I love the Erlang
+syntax. It is simple and explicit. It is powerful, especially
+when dealing with binary data. It has very few quirks.
+It has little to no ambiguity. It&#8217;s great. Except for
+persuading people to use it.</p></div>
+<div class="paragraph"><p>Over the years I have been writing Erlang, I have seen
+very few people point out that the syntax slows down
+adoption. We have no problem with it, so why would others?
+At the same time, people coming to Erlang come to solve
+a real problem they&#8217;re having, so the syntax is fairly
+secondary. Even if they hate it at first, they know they
+can solve their problems despite the syntax.</p></div>
+<div class="paragraph"><p>You don&#8217;t build a popular product or language by solving
+people&#8217;s problems though. In general you end up solving
+some problems and creating new problems. No, you build
+a popular product by <strong>convincing people to use it</strong>. And
+you make them stay with your product by making them
+<strong>commit</strong> to using it.</p></div>
+<div class="paragraph"><p>Take MongoDB for example. It didn&#8217;t become popular by
+working, or even by being practical. It wasn&#8217;t performing
+its primary function and was losing people&#8217;s data. That
+didn&#8217;t stop it from becoming popular. Smart people would
+knowingly use a database that was losing data. Think about
+that for a minute.</p></div>
+<div class="paragraph"><p>MongoDB of course had a huge marketing machine, and they
+focused on that. They helped organize many meetups all
+over the world, complete with various swag items given
+for free, including a small handbook about MongoDB. All
+people had to do was show up.</p></div>
+<div class="paragraph"><p>They didn&#8217;t go tell people to look at all the weaknesses
+their product had. They focused on the strengths. On
+what would convince people to try it. They would go
+to meetups, discuss with others, commit to try it (or
+try it at meetups directly), and by doing so sell MongoDB
+to themselves.</p></div>
+<div class="paragraph"><p>How do we get people to meetups though? That&#8217;d be the
+first step: you need to <strong>catch their attention</strong>.
+I believe MongoDB did this using benchmark results.
+Ironic isn&#8217;t it? MongoDB gets fast benchmark results
+because they lose data, and this gets everyone to buy
+into the product.</p></div>
+<div class="paragraph"><p>The key points to remember about this are:</p></div>
+<div class="ulist"><ul>
+<li>
+<p>
+catch people&#8217;s attention
+</p>
+</li>
+<li>
+<p>
+show your product&#8217;s strengths
+</p>
+</li>
+<li>
+<p>
+make people take a commitment
+</p>
+</li>
+</ul></div>
+<div class="paragraph"><p>Once they commit to something, you win. Everyone will not
+end up ultimately using your product of course, but it&#8217;s
+at the very least become a consideration. It&#8217;s on their
+mind. Their resolve will be stronger when they ultimately
+try it and inevitably run into issues.</p></div>
+<div class="paragraph"><p>Erlang&#8217;s syntax is a weakness. Almost nobody looks at the
+Erlang syntax and falls in love with it at first sight.
+No, it takes time to learn it and understand how good it
+is. You need to sell Erlang to people without showing
+the Erlang syntax. If you do show it, then you need to
+hide the parts that feel alien. Function calls are OK.
+Recursion, not so much. Maps are OK. Records, not.</p></div>
+<div class="paragraph"><p>Avoiding code is not always possible when you try
+to sell it, especially to developers. You can however
+prepare them to accept the alien syntax by admitting
+that the syntax is not perfect before you show it.
+You can do this while praising it at the same time.
+For example, "the syntax is a little out there, but
+it matches the concepts perfectly, it will all make
+sense when you start learning".</p></div>
+<div class="paragraph"><p>This might not be the best introduction. Someone will
+need to A/B test it to find the one that gives the
+best results. But that should give you ideas.</p></div>
+<div class="paragraph"><p>When something terrible happens, mentioning that this
+isn&#8217;t the end of the world <strong>before</strong> you tell others what
+happened will soften their reaction. When someone
+breaks your favorite item and cries over it calling
+themselves stupid, it&#8217;s harder to get mad at them,
+compared to the same event with no emotional reaction.</p></div>
+<div class="paragraph"><p>Our behavior is largely dependent on what&#8217;s at the
+top of our mind, so it&#8217;s up to you to take advantage
+of this to make your case in the best conditions.</p></div>
+<div class="paragraph"><p>Next time you try to make someone use Erlang, remember
+that you should aim for getting a spoken commitment
+out of them, if possible before you show the syntax.
+If that&#8217;s not possible, then prepare them to accept
+the flaws or the weirdness before they see them.</p></div>
</article>
</div>
@@ -215,55 +215,107 @@ the flaws or the weirdness before they see them.</p></div>
<h3>More articles</h3>
<ul id="articles-nav" class="extra_margin">
- <li><a href="https://ninenines.eu/articles/cowboy-2.0.0-rc.2/">Cowboy 2.0 release candidate 2</a></li>
+
+ <li><a href="https://ninenines.eu/articles/cowboy-2.0.0-rc.2/">Cowboy 2.0 release candidate 2</a></li>
+
- <li><a href="https://ninenines.eu/articles/cowboy-2.0.0-rc.1/">Cowboy 2.0 release candidate 1</a></li>
+
+ <li><a href="https://ninenines.eu/articles/cowboy-2.0.0-rc.1/">Cowboy 2.0 release candidate 1</a></li>
+
- <li><a href="https://ninenines.eu/articles/the-elephant-in-the-room/">The elephant in the room</a></li>
+
+ <li><a href="https://ninenines.eu/articles/the-elephant-in-the-room/">The elephant in the room</a></li>
+
- <li><a href="https://ninenines.eu/articles/dont-let-it-crash/">Don&#39;t let it crash</a></li>
+
+ <li><a href="https://ninenines.eu/articles/dont-let-it-crash/">Don&#39;t let it crash</a></li>
+
- <li><a href="https://ninenines.eu/articles/cowboy-2.0.0-pre.4/">Cowboy 2.0 pre-release 4</a></li>
+
+ <li><a href="https://ninenines.eu/articles/cowboy-2.0.0-pre.4/">Cowboy 2.0 pre-release 4</a></li>
+
- <li><a href="https://ninenines.eu/articles/ranch-1.3/">Ranch 1.3</a></li>
+
+ <li><a href="https://ninenines.eu/articles/ranch-1.3/">Ranch 1.3</a></li>
+
- <li><a href="https://ninenines.eu/articles/ml-archives/">Mailing list archived</a></li>
+
+ <li><a href="https://ninenines.eu/articles/ml-archives/">Mailing list archived</a></li>
+
- <li><a href="https://ninenines.eu/articles/website-update/">Website update</a></li>
+
+ <li><a href="https://ninenines.eu/articles/website-update/">Website update</a></li>
+
- <li><a href="https://ninenines.eu/articles/erlanger-playbook-september-2015-update/">The Erlanger Playbook September 2015 Update</a></li>
+
+ <li><a href="https://ninenines.eu/articles/erlanger-playbook-september-2015-update/">The Erlanger Playbook September 2015 Update</a></li>
+
- <li><a href="https://ninenines.eu/articles/erlanger-playbook/">The Erlanger Playbook</a></li>
+
+ <li><a href="https://ninenines.eu/articles/erlanger-playbook/">The Erlanger Playbook</a></li>
+
- <li><a href="https://ninenines.eu/articles/erlang-validate-utf8/">Validating UTF-8 binaries with Erlang</a></li>
+
+ <li><a href="https://ninenines.eu/articles/erlang-validate-utf8/">Validating UTF-8 binaries with Erlang</a></li>
+
- <li><a href="https://ninenines.eu/articles/on-open-source/">On open source</a></li>
+
+ <li><a href="https://ninenines.eu/articles/on-open-source/">On open source</a></li>
+
- <li><a href="https://ninenines.eu/articles/the-story-so-far/">The story so far</a></li>
+
+ <li><a href="https://ninenines.eu/articles/the-story-so-far/">The story so far</a></li>
+
- <li><a href="https://ninenines.eu/articles/cowboy2-qs/">Cowboy 2.0 and query strings</a></li>
+
+ <li><a href="https://ninenines.eu/articles/cowboy2-qs/">Cowboy 2.0 and query strings</a></li>
+
- <li><a href="https://ninenines.eu/articles/january-2014-status/">January 2014 status</a></li>
+
+ <li><a href="https://ninenines.eu/articles/january-2014-status/">January 2014 status</a></li>
+
- <li><a href="https://ninenines.eu/articles/farwest-funded/">Farwest got funded!</a></li>
+
+ <li><a href="https://ninenines.eu/articles/farwest-funded/">Farwest got funded!</a></li>
+
- <li><a href="https://ninenines.eu/articles/erlang.mk-and-relx/">Build Erlang releases with Erlang.mk and Relx</a></li>
+
+ <li><a href="https://ninenines.eu/articles/erlang.mk-and-relx/">Build Erlang releases with Erlang.mk and Relx</a></li>
+
- <li><a href="https://ninenines.eu/articles/xerl-0.5-intermediate-module/">Xerl: intermediate module</a></li>
+
+ <li><a href="https://ninenines.eu/articles/xerl-0.5-intermediate-module/">Xerl: intermediate module</a></li>
+
- <li><a href="https://ninenines.eu/articles/xerl-0.4-expression-separator/">Xerl: expression separator</a></li>
+
+ <li><a href="https://ninenines.eu/articles/xerl-0.4-expression-separator/">Xerl: expression separator</a></li>
+
- <li><a href="https://ninenines.eu/articles/erlang-scalability/">Erlang Scalability</a></li>
+
+ <li><a href="https://ninenines.eu/articles/erlang-scalability/">Erlang Scalability</a></li>
+
- <li><a href="https://ninenines.eu/articles/xerl-0.3-atomic-expressions/">Xerl: atomic expressions</a></li>
+
+ <li><a href="https://ninenines.eu/articles/xerl-0.3-atomic-expressions/">Xerl: atomic expressions</a></li>
+
- <li><a href="https://ninenines.eu/articles/xerl-0.2-two-modules/">Xerl: two modules</a></li>
+
+ <li><a href="https://ninenines.eu/articles/xerl-0.2-two-modules/">Xerl: two modules</a></li>
+
- <li><a href="https://ninenines.eu/articles/xerl-0.1-empty-modules/">Xerl: empty modules</a></li>
+
+ <li><a href="https://ninenines.eu/articles/xerl-0.1-empty-modules/">Xerl: empty modules</a></li>
+
- <li><a href="https://ninenines.eu/articles/ranch-ftp/">Build an FTP Server with Ranch in 30 Minutes</a></li>
+
+ <li><a href="https://ninenines.eu/articles/ranch-ftp/">Build an FTP Server with Ranch in 30 Minutes</a></li>
+
- <li><a href="https://ninenines.eu/articles/tictactoe/">Erlang Tic Tac Toe</a></li>
+
+ <li><a href="https://ninenines.eu/articles/tictactoe/">Erlang Tic Tac Toe</a></li>
+
+
+
</ul>