|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165 |
- title: Popularity
- url: http://soveran.com/popularity.html
- hash_url: 2e27bb3e5b294d0e6e3bf9d12977eb32
-
- <p>Donald Knuth once said: "If I find too many people adopting a
- certain idea I'd probably think it's wrong".</p>
-
- <p>Good tools can be popular, but that doesn't imply <em>all good
- tools are popular</em>, or <em>all popular tools are good</em>. We
- can reflect on whether the same logic applies to something other
- than tools: for example, are the best singer and the most popular
- singer the same person? Is the most sold beverage also the best
- one? It's tempting to distance ourselves from the problem and discuss
- what "best" means, but I think we could agree that, at least in
- those examples, we would be talking about two different singers and
- two different beverages. And yet, what if most people think otherwise?
- If most people think otherwise we would think they are wrong, just
- as Donald Knuth said.</p>
-
- <p>In software development, a lot of people pick the most popular
- tool that can solve a given problem. Popularity is measurable: you
- can check the number of downloads, the number of stars, the questions
- and answers all over the web. Quality, on the other hand, is hard
- to measure: you have to read the code and prove its correctness,
- evaluate several metrics and heuristics. It's hard work compared
- to counting stars. Then, as a lot of people pick the most popular
- tool that can solve a given problem, the popular tool gets more
- downloads, more stars, and more people ask questions about it.
- Popularity is the best trait for becoming more popular.</p>
-
- <p>If I find too many people adopting a certain software tool, I'd
- probably think it's bad. It would require an in depth analysis to
- convince me otherwise, because the mechanics at work are well
- established.</p>
-
- <p>A bit over a year ago, somebody pointed me to <a href="http://tinyurl.com/ov6hbgd">a conversation</a> in a forum
- regarding a tool I've been using for the past five years. I will
- reproduce the ideas here.</p>
-
- <p>It all started when the co-founder and CTO of a tech company
- asked for help to decide whether or not using <a href="http://cuba.is">Cuba</a> would be a good fit for his project.
- Here's the original post:</p>
-
- <blockquote>
-
- <p>My company hired a team of developers to build an MVP of a web
- app. We've talked exclusively of using Rails, but now that they've
- started development, they're using a microframework called Cuba.</p>
-
- <p>Is anyone familiar with Cuba? I've been vetting it all day and I'm
- not sure about it.</p>
-
- <p>The main benefit is that it's tiny (
-
- </p><p>If anyone has any thoughts, please share them.</p>
-
- </blockquote>
-
- <p>Many replies followed, some of them stating the fact that using
- Cuba would be fine, especially if the team was comfortable with it.
- Others replied that, as they had never heard of Cuba, it was better
- to use Rails or Sinatra.</p>
-
- <p>A few days later, the original poster sent this message:</p>
-
- <blockquote>
-
- <p>Thanks for all the valuable feedback everyone!</p>
-
- <p>I agree that I would prefer a framework with a larger community,
- but we're going to go with Cuba for a few reasons:</p>
-
- <p>1. The team is very comfortable and efficient with it.</p>
-
- <p>2. It's essentially the same as Sinatra at its core, but claims
- to be smaller and faster.</p>
-
- <p>3. Cuba itself is extremely easy to work with because it barely
- does anything. You can read the entire source in 5 minutes and
- understand it completely. I'm confident future teams could pick it
- up.</p>
-
- <p>4. Even though there's little to no community, Cuba is very well
- tested, and simple enough that I'm not worried about deprecation.</p>
-
- <p>I thank you all again for taking the time to share your thoughts.</p>
- </blockquote>
-
- <p>At that point the CTO was convinced the technology was sound.
- The fact that there was little code to read probably helped. One
- person argued that strict discipline with the project structure
- would be required, someone else expressed concerns that in the end,
- the team would have to "rebuild Rails" in order to match its
- functionality. The original poster then replied.</p>
-
- <p>About structure:</p>
-
- <blockquote>
-
- <p>Thanks for the concern. I've been working with
- the team and overseeing the repo on GitHub since the very beginning
- of development. I was very vocal about my concerns, which were very
- similar to yours. It turns out the team is very experienced in
- building large scale production quality apps in Cuba, and are very
- organized, which is a relief!</p>
-
- </blockquote>
-
- <p>About rebuilding Rails:</p>
-
- <blockquote>
-
- <p>I was worried that the team would have
- to "rebuild Rails" as well, but the thing is, many parts of Rails
- aren't required by most apps, and they've done this before, so their
- toolbox is already full of handpicked solutions for common problems
- that a web app would face. If I was doing the development, I would
- absolutely choose Rails because I'm not comfortable enough with the
- microframeworks to be able to achieve any sort of efficient result,
- but so far we've been in development almost a week and I'm quite
- pleased.</p>
-
- </blockquote>
-
- <p>He posted the original message because he had the same concerns
- other people expressed in their replies, yet after only one week
- of development those concerns were addressed and he was happy with
- the decision. That didn't prevent further criticism, and many
- comments followed recommending Rails and Sinatra as alternatives
- based on familiarity and popularity.</p>
-
- <p>Finally, an extremist suggested to fire the team:</p>
-
- <blockquote>
-
- <p>If you have an agreement that they use Rails—get them to use
- Rails. Simple as that. They just can't decide to use something else
- without discussing that with you. Since they are not keeping to the
- agreement, don't pay them. Even the Sr. Engineer can't make such a
- decision without discussing it with the customer. I think their
- behavior is very very unprofessional.</p>
-
- </blockquote>
-
- <p>If you care about your tools and recommend what you think is
- best, somebody may still think you are unprofessional and you deserve
- no pay.</p>
-
- <p>Rails, Sinatra and Cuba are tools with different traits, and
- it's expected that people will recommend whatever works for them.
- But we should be extremely cautious about taking what is popular
- for what is good, and conversely we should not disregard something
- just because it didn't gather enough stars. I'm not claiming here
- that one of those tools is better than the others: even if I have
- a strong preference, the question should be open and the code should
- be analyzed by the potential users.</p>
-
- <p>When Rails was created, Ruby wasn't mainstream. When Twitter
- launched, Rails had been out for just four months. Adopting Ruby
- and Rails were bold moves made by people that didn't care about
- popularity. They were forced to assess the quality despite the lack
- of stars.</p>
-
- <p>Technical analysis is hard work. Following the crowd is easy,
- but it's often a shortcut to the wrong place.</p>
|