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
, andcdr
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.
- Clean Code, Robert C Martin
- harmful.cat-v.org/software/
- suckless.org/philosophy/