17 April 2023

Software Engineering Books and Resources that I have found interesting

I'm not really sure this is really "blog post" kind of content, as I intend to come back later and amend/add to it. When I have met people looking to get into Software Engineering, or students of Computer Science, I have been asked for recommendations for things to do/read/watch. This post lists some of the things that I have found interesting, and that I have recommended to others. This list is incomplete.

If you have any recommendations for me, let me know, I'll check them out, and I might even add them to the list.

Main List

  • Joe Armstrong's Talk on Forgotten Ideas in Computer Science (Slides)
  • Learn X in Y minutes - Quick introductions to many programming languages, tools, and concepts.
  • Rosetta Code - Compare how different languages solve the same problems.
  • Tio - Try programming languages online without any setup required.
  • Code, Charles Petzold
  • The Mythical Man Month, Fred Brooks - Classic Essays on Software Engineering.
  • The Missing Semester of Your CS Education - great free course content from MIT that goes through a whole range of very useful topics. Stuff you will need to know to make it as a Software Engineer, but that doesn't necessarily fit neatly into any other course topic.
  • How To Design Programs - Programming in Racket/Scheme for people who have never programmed before. Worth a skim-read even if you are an experienced programmer however.
  • Structure and Interpretation of Computer Programs - longer and heavier than HTDP, also a book about Scheme. One thing that this book elucidates nicely, is that not only can code be expressed as data, but that data-structures can be described entirely in terms of functions (Skip to Section 2.1.3, for an example of cons, car, and cdr implemented with only functions. See section 2.2 for an explanation of how these primitives can then be used to build complex data structures).
  • Algorithms to Live By, Brian Christian - an interesting look at applying algorithms in everyday life.
  • Rob Pike's essay on C. Particularly if you are interested in Go, as ideas that fed into Go are expressed in this essay.
  • Both the books "The C Programming Language" and "The Go Programming Language" are good books, even if you don't write much of either language.
  • Source Code in general. Some source code is a delight to read, some is not.
    • xv6 is a Unix-like operating system that was designed to be read and studied. It includes very readable implementations of common Unix utilities, such as cat, ls, and grep. There is also a book about the system.
  • A Philosopy of Software Design, John Ousterhout.

With a pinch of salt

Things I found interesting, that influenced me, and that I recommend reading, but about which I have some reservations.

Tags: Tech