diff options
author | Loïc Hoguin <[email protected]> | 2017-03-26 12:37:17 +0200 |
---|---|---|
committer | Loïc Hoguin <[email protected]> | 2017-03-26 12:37:17 +0200 |
commit | 65b900e73c1875e4fdb136f6e6fd517c9e5922c6 (patch) | |
tree | 9377fa19f957a286dae2e7f5e179dcc939ab6207 /articles/the-elephant-in-the-room/index.html | |
parent | ade8a523dd6afe21f169a3f41cd78cc1ba730c74 (diff) | |
download | ninenines.eu-65b900e73c1875e4fdb136f6e6fd517c9e5922c6.tar.gz ninenines.eu-65b900e73c1875e4fdb136f6e6fd517c9e5922c6.tar.bz2 ninenines.eu-65b900e73c1875e4fdb136f6e6fd517c9e5922c6.zip |
New article: the elephant in the room
Diffstat (limited to 'articles/the-elephant-in-the-room/index.html')
-rw-r--r-- | articles/the-elephant-in-the-room/index.html | 304 |
1 files changed, 304 insertions, 0 deletions
diff --git a/articles/the-elephant-in-the-room/index.html b/articles/the-elephant-in-the-room/index.html new file mode 100644 index 00000000..53db28e8 --- /dev/null +++ b/articles/the-elephant-in-the-room/index.html @@ -0,0 +1,304 @@ +<!DOCTYPE html> +<html lang="en"> + +<head> + <meta charset="utf-8"> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <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" /> + + <title>Nine Nines: The elephant in the room</title> + + <link href='https://fonts.googleapis.com/css?family=Open+Sans:400,700,400italic' rel='stylesheet' type='text/css'> + + <link href="/css/bootstrap.min.css" rel="stylesheet"> + <link href="/css/99s.css" rel="stylesheet"> + + <link rel="shortcut icon" href="/img/ico/favicon.ico"> + <link rel="apple-touch-icon-precomposed" sizes="114x114" href="/img/ico/apple-touch-icon-114.png"> + <link rel="apple-touch-icon-precomposed" sizes="72x72" href="/img/ico/apple-touch-icon-72.png"> + <link rel="apple-touch-icon-precomposed" href="/img/ico/apple-touch-icon-57.png"> + + +</head> + + +<body class=""> + <header id="page-head"> + <div id="topbar" class="container"> + <div class="row"> + <div class="span2"> + <h1 id="logo"><a href="/" title="99s">99s</a></h1> + </div> + <div class="span10"> + + <div id="side-header"> + <nav> + <ul> + <li class="active"><a title="Hear my thoughts" href="/articles">Articles</a></li> + <li><a title="Watch my talks" href="/talks">Talks</a></li> + <li><a title="Read the docs" href="/docs">Documentation</a></li> + <li><a title="Request my services" href="/services">Consulting & Training</a></li> + </ul> + </nav> + <ul id="social"> + <li> + <a href="https://github.com/ninenines" title="Check my Github repositories"><img src="/img/ico_github.png" data-hover="/img/ico_github_alt.png" alt="Github"></a> + </li> + <li> + <a title="Keep in touch!" href="http://twitter.com/lhoguin"><img src="/img/ico_microblog.png" data-hover="/img/ico_microblog_alt.png"></a> + </li> + <li> + <a title="Contact me" href="mailto:[email protected]"><img src="/img/ico_mail.png" data-hover="/img/ico_mail_alt.png"></a> + </li> + </ul> + </div> + </div> + </div> + </div> + + +</header> + +<div id="contents"> +<div class="container"> +<div class="row"> +<div class="span9 maincol"> + +<article class="blog_item"> +<header> + <h1 class="lined-header"><span>The elephant in the room</span></h1> + <p class="date"> + <span class="day">26</span> + <span class="month">Mar</span> + </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. People would go
+to meetups, discuss with people, 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 people’s 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> + +<div class="span3 sidecol"> +<h3>More articles</h3> +<ul id="articles-nav" class="extra_margin"> + + <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/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/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/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/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/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/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/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.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/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.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/tictactoe/">Erlang Tic Tac Toe</a></li> + +</ul> + +<h3>Feedback</h3> +<p>Feel free to <a href="mailto:[email protected]">email us</a> +if you found any mistake or need clarification on any of the +articles.</p> + +</div> +</div> +</div> +</div> + + <footer> + <div class="container"> + <div class="row"> + <div class="span6"> + <p id="scroll-top"><a href="#">↑ Scroll to top</a></p> + <nav> + <ul> + <li><a href="mailto:[email protected]" title="Contact us">Contact us</a></li><li><a href="https://github.com/ninenines/ninenines.github.io" title="Github repository">Contribute to this site</a></li> + </ul> + </nav> + </div> + <div class="span6 credits"> + <p><img src="/img/footer_logo.png"></p> + <p>Copyright © Loïc Hoguin 2012-2016</p> + </div> + </div> + </div> + </footer> + + + <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script> + <script src="/js/bootstrap-carousel.js"></script> + <script src="/js/bootstrap-dropdown.js"></script> + <script src="/js/custom.js"></script> + </body> +</html> + |