Recommended Reading
This is a summary of articles, presentations, papers and books that I strongly recommend all Software Engineers to have read.
I will try to summarize each, but I’ll likely do a terrible job of it. Instead, just click through and watch/read for yourself.
Presentations
- Simple Made Easy (Rich Hickey)
- A look at how embracing simplicity, and sometimes shunning easiness, can conquer complexity.
- Metrics, Metrics Everywhere (Coda Hale)
- A look at service-level performance metrics and improving transparency of the software you write.
- The Programming Ape (Coda Hale)
- Advice on building human-centric tools for software engineers.
- The Value of Values (Rich Hickey)
- A talk on the advantages that immutability and functional programming bring.
Articles
- Notes on Distributed Systems (Jeff Hodges)
- Advice from the front-lines on designing, building and running distributed systems. Recommended for everyone, but required reading for anyone working with distributed systems.
- You Can't Sacrifice Partition Tolerance (Coda Hale)
- A debunking of the interpretation of the CAP Theorem that "CA" distributed systems (that is, a system that sacrifices partition tolerance) are possible.
- How To Safely Store a Password (Coda Hale)
- A succinct and excellent discussion on securely storing passwords and the dangers of not doing so.
Papers
- MapReduce (Google)
- The seminal paper on the MapReduce programming model for distributed computation.
- BigTable (Google)
- Google's scalable column-family oriented database. Inspired much of the design of HBase and Cassandra.
- Dynamo (Amazon)
- A key-value store that describes eventual consistency, a consistency model utilized heavily by Cassandra and Riak, among many others.
Books
While there are many books I would recommend, I need to think harder about the ones I consider to be truly important.