Daniel Lemire's blog

, 1 min read

What are the genuinely useful ideas in programming?

The software industry is probably the most dynamic and innovation of all industries. However, many people also try to convince us to adapt new ideas despite their dubious practical value.

So what are the ideas that stick… ideas that are genuinely good and important?

Here is my current list:

  • Structured programming;
  • Unix and its corresponding philosophy;
  • Database transactions;
  • The “relational database”;
  • The graphical user interface ;
  • Software testing;
  • The most basic data structures (the heap, the hash table, and trees) and a handful of basic algorithms such as Quicksort;
  • Public-key encryption and cryptographic hashing;
  • (new:) High-level programming and typing;
  • (new:) Version control.

Naturally, you can argue that I am missing many important things. Maybe you feel that functional and object-oriented programming are essential. Maybe you think that I should include complexity analysis, JavaScript, XML or garbage collection. One can have endless debates… but I am trying to narrow it down to an uncontroversial list. That is, I want key ideas that are universally recognized as useful. Let me put it this way: if you were to meet a master of software programming, what are you absolutely sure he will recommend to a kid who wants to become a programmer?

Am I missing anything important?