Piggybacking on some memes floating around on the internet I would like to publish my list of “what every programmer should know”.
A couple of introductory words: in my opinion the two most important things to learn for new programmers are terminology – to know what things / ideas / algorithms / concepts are called so that they can search for them on the internet and discuss their ideas) and humility (if something doesn’t exists or doesn’t work the way we expected, the first thing we should ask ourselves is: “what am I missing?” instead of proclaiming the predecessors to be idiots). Moving along to the list:
- What every programmer should know about X – the Breaking Eggs And Making Omelettes blog contains a very eclectic list of articles. The only thing I would add is the PDF link to “What every programmer should know about memory” rather than the LWN version. Also worth checking out the discussion in the comments.
- Latency numbers every programmer should know and the discussion on hackernews (this is not the original source of the data, but a particularly good visualization of it nevertheless – see also my extended version which allows you to transform the numbers into whichever time-unit – s, ms, us – you need).
- From the “Falsehoods programmers believe about X” department comes:
- Falsehoods programmers believe about build systems (additionally to the comments on the post, also see the discussion on Reddit and a follow-up blogpost)
- Falsehoods Programmers Believe About Names
- Falsehoods programmers believe about time and More falsehoods programmers believe about time
- A video giving an overview of the different Google systems (search, map-reduce, GFS, etc). Nothing revolutionary, but a good first-time overview:
Happy holiday reading/watching to all!