title: (When) Should I learn compilers?
body: <p>According to this <a href="http://steve-yegge.blogspot.com/2007/06/rich-programmer-food.html" rel="noreferrer">http://steve-yegge.blogspot.com/2007/06/rich-programmer-food.html</a>  article, I defnitely should.  </p>
  
  <blockquote>
    <p>Quote  Gentle, yet insistent executive
    summary: If you don't know how
    compilers work, then you don't know
    how computers work. If you're not 100%
    sure whether you know how compilers
    work, then you don't know how they
    work.</p>
  </blockquote>
  
  <p>I thought that it was a very interesting article, and the field of application is very useful (do yourself a favour and read it) 
  But then again, I have seen successful senior sw engineers that didn’t know compilers very well, or internal machine architecture for that matter, 
  but did know a thing or two of each item in the following list :</p>
  
  <ul>
  <li>A programming paradigm (OO, functional,…)</li>
  <li>A programming    language  API (C#, Java..) and at    least 2 very different some say!    (Java / Haskell) </li>
  <li>A programming    framework (Java, .NET) </li>
  <li>An IDE to    make you more productive (Eclipse,    VisualStudio, Emacs,….) </li>
  <li>Programming    best practices (see fxcop rules for    example) </li>
  <li>Programming Principles    (DRY, High Cohesion, Low Coupling,    ….) </li>
  <li>Programming methodologies (<a href="http://en.wikipedia.org/wiki/Test-driven_development" rel="noreferrer">TDD</a>,    <a href="http://en.wikipedia.org/wiki/Model_Driven_Engineering" rel="noreferrer">MDE</a>)    </li>
  <li>Design patterns (Structural,    Behavioural,….)  </li>
  <li>Architectural    Basics (Tiers, Layers, Process Models    (Waterfall, Agile,…) </li>
  <li>A Testing Tool    (Unit Testing, Model Testing, …)   </li>
  <li>A GUI  technique (WPF, Swing)    </li>
  <li>A documenting tool (Javadoc,    Sandcastle..)    </li>
  <li>A modelling languague    (and tool maybe) (UML,    VisualParadigm, Rational)         </li>
  <li>(undoubtedly forgetting very    important stuff here)</li>
  </ul>
  
  <p>Not all of these tools are necessary to be a good programmer (like a GUI when you just don’t need it)
  but most of them are.  Where do compilers come in, and are they really that important, since, as I mentioned, 
  lots of programmers seems to be doing fine without knowing them and especially, becoming a  good programmer is seen the multitude of knowledge domains almost a lifetime achievement :-) , so even if compilers are extremely important, isn't  there always stuff still more important?  </p>
  
  <p>Or should i order 'The Unleashed Compilers Unlimited Bible (in 24H..))) today?</p>
  
  <p>For those who have read the article, and want to start studying right away : </p>
  
  <p><a href="https://stackoverflow.com/questions/41785/learning-resources-on-parsers-interpreters-and-compilers">Learning Resources on Parsers, Interpreters, and Compilers</a></p>