« Programming languages | Main | Parallel programming, getting started »

Programmers need to know about hardware

One of the biggest differences, after raw talent, to a programmer's abilities is writing appropriate code with suitable data structures and algorithms, which in the real world means having a practical understanding of the computer system's underlying hardware, which are often "silent" or heavily muted details in the specification and requirements documentation in software development.

Here's a talk by Herb Sutter, noted C++ book author and ISO C++ committee member, entitled, "Machine Architecture: Things Your Programming Language Never Told You."

A useful resource is Randy Hydes' Write Great Code series of books. As well as classic computer organization and architecture textbooks like Structured Computer Organization by Tanenbaum, and Computer Architecture: A Quantitative Approach by Hennessy and Patterson.

Some programmer quality factors (IMHO):


  • raw talent (hard to measure)

  • knowledge of data structures and algorithms (i.e. education, often formal)

  • knowledge of computer architecture and organization (i.e. hardware)

  • real self-confidence, not shallow vanity, but comfortable with one's own abilities to withstand constructive criticism

Post a comment

(If you haven't left a comment here before, you may need to be approved by the site owner before your comment will appear. Until then, it won't appear on the entry. Thanks for waiting.)