According to this http://steve-yegge.blogspot.com/2007/06/rich-programmer-food.html article, I defnitely should.
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.
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 :
- A programming paradigm (OO, functional,…)
- A programming language API (C#, Java..) and at least 2 very different some say! (Java / Haskell)
- A programming framework (Java, .NET)
- An IDE to make you more productive (Eclipse, VisualStudio, Emacs,….)
- Programming best practices (see fxcop rules for example)
- Programming Principles (DRY, High Cohesion, Low Coupling, ….)
- Programming methodologies (TDD, MDE)
- Design patterns (Structural, Behavioural,….)
- Architectural Basics (Tiers, Layers, Process Models (Waterfall, Agile,…)
- A Testing Tool (Unit Testing, Model Testing, …)
- A GUI technique (WPF, Swing)
- A documenting tool (Javadoc, Sandcastle..)
- A modelling languague (and tool maybe) (UML, VisualParadigm, Rational)
- (undoubtedly forgetting very important stuff here)
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?
Or should i order 'The Unleashed Compilers Unlimited Bible (in 24H..))) today?
For those who have read the article, and want to start studying right away :
http://stackoverflow.com/questions/41785/learning-resources-on-parsers-interpreters-and-compilers