diff options
author | Loïc Hoguin <[email protected]> | 2017-10-03 13:39:41 +0200 |
---|---|---|
committer | Loïc Hoguin <[email protected]> | 2017-10-03 13:39:41 +0200 |
commit | b5d4cb91f80c833795a2d87050c3674bb7aecdc5 (patch) | |
tree | 62bf0ad8326006fcd3407fcb7c34c844c0dc0874 /articles/the-elephant-in-the-room/index.html | |
parent | 1f8d51dd2692fc3978080419987bbe4d49a41a90 (diff) | |
download | ninenines.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.html | 370 |
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’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’s like nothing else matters.</p></div>
-<div class="paragraph"><p>Perhaps the topic of syntax didn’t come up. But they’re
-still not going to try Erlang because of it.</p></div>
-<div class="paragraph"><p>You’re probably not having these kinds of interactions at
-Erlang conferences. This doesn’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’s in
-large part because of the syntax. They will deny it of
-course and find other reasons. And yet, we don’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’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’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’t build a popular product or language by solving
-people’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’t become popular by
-working, or even by being practical. It wasn’t performing
-its primary function and was losing people’s data. That
-didn’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’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’d be the
-first step: you need to <strong>catch their attention</strong>.
-I believe MongoDB did this using benchmark results.
-Ironic isn’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’s attention
-</p>
-</li>
-<li>
-<p>
-show your product’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’s
-at the very least become a consideration. It’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’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’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’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’s at the
-top of our mind, so it’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’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’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’s like nothing else matters.</p></div> +<div class="paragraph"><p>Perhaps the topic of syntax didn’t come up. But they’re +still not going to try Erlang because of it.</p></div> +<div class="paragraph"><p>You’re probably not having these kinds of interactions at +Erlang conferences. This doesn’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’s in +large part because of the syntax. They will deny it of +course and find other reasons. And yet, we don’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’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’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’t build a popular product or language by solving +people’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’t become popular by +working, or even by being practical. It wasn’t performing +its primary function and was losing people’s data. That +didn’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’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’d be the +first step: you need to <strong>catch their attention</strong>. +I believe MongoDB did this using benchmark results. +Ironic isn’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’s attention +</p> +</li> +<li> +<p> +show your product’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’s +at the very least become a consideration. It’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’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’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’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’s at the +top of our mind, so it’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’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't let it crash</a></li> + + <li><a href="https://ninenines.eu/articles/dont-let-it-crash/">Don'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> |