What Every Developer Should Know

last modified: August 29, 2012

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)

RegularExpressions

(I've just learned them in the last year and had this "where you've been all my life" feeling about them.)

Basic StructuredQueryLanguage statements

a good understanding of trees and graphs (Hierarchies and inheritance play an important part in ObjectOrientation. For the mathematical underpinnings, see, e.g., PartialOrder.)

Basic understanding of internet and web technologies (TCP/IP, HTML, CSS, ...)

Basic understanding of divisions of labor and data between clients and servers.

Basic understanding of hardware

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


Loading...