title: Should a developer aim for readability or performance first?
body: <p>Oftentimes a developer will be faced with a choice between two possible ways to solve a problem -- one that is idiomatic and readable, and another that is less intuitive, but may perform better.  For example, in C-based languages, there are two ways to multiply a number by 2:</p>
  
  <pre><code>int SimpleMultiplyBy2(int x)
  {
      return x * 2; 
  }
  </code></pre>
  
  <p>and</p>
  
  <pre><code>int FastMultiplyBy2(int x)
  {
      return x &lt;&lt; 1;
  }
  </code></pre>
  
  <p>The first version is simpler to pick up for both technical and non-technical readers, but the second one may perform better, since bit shifting is a simpler operation than multiplication.  (For now, let's assume that the compiler's optimizer would not detect this and optimize it, though that is also a consideration).</p>
  
  <p>As a developer, which would be better as an initial attempt?</p>