What Every Developer Should Know

I just re-read JoelSpolsky's essay, "The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!)", (http://www.joelonsoftware.com/articles/Unicode.html) and thought what other concepts should every developer know. I've started with the following:

(Read Joel's essay) (I've just learned them in the last year and had this "where you've been all my life" feeling about them.) Developer's "common sense":

Personal management:

Please add others with commentary.


They don't have to understand it in the real definition sense. Just that if they see code, they should know which variable's value is obviously effected, which is not. (Believe me, many a programmer in my company doesn't even know the term Pass-by-value).


Almost everyone uses at least a little floating point once in a while, but it's a tricky and much misunderstood subject. The following really should be considered required reading.

"What Every Computer Scientist Should Know About Floating-Point Arithmetic" by David Goldberg, published in the March, 1991 issue of Computing Surveys.

Agree. Every once in a while, someone will go on a mailing list and complain about a language bug (be it CeePlusPlus, JavaLanguage, RubyLanguage, CommonLisp) because ((1.0 / 3.0) * 3.0) != 1.0.


I noticed the existence of this but don't know anything about it: What Every Programmer Should Know About Object-Oriented Design. by Meilir Page-Jones foreword by Larry L. Constantine. ISBN 0-932633-31-5


Every developer should know OnceAndOnlyOnce (and it's amazing how many don't).

(MontyPython, The Argument Clinic; not OnceAndOnlyOnce)


The Five Essential Phone Screen Questions, by SteveYegge http://steve.yegge.googlepages.com/five-essential-phone-screen-questions


Given the prevalence of multi-core CPUs these days, I think an understanding of concurrency issues should be on this list. -- MikeSmith


Parsing and parsers: regular expressions, lexical analysis, (E)BNF grammar definition, parser generators and, perhaps, recursive descent parsing.

The popularity of XML as a syntax for human to write and edit is due to a lack of basic computer science education.


Basic HCI concepts. A lot of solid, functional and inventive but unusable (by end users) software is made!


See Also: AdviceToNewProgrammers


EditText of this page (last edited August 29, 2012) or FindPage with title or text search