Go to file
2017-03-10 13:46:34 +01:00
images Add pasta architectures 2017-02-02 08:44:36 -08:00
feature-flags.md Update TOC 2016-02-16 15:27:07 +01:00
glossary.md Add conceptual integrity 2017-01-07 20:11:24 +01:00
README.md Add sys design primer 2017-03-10 13:46:34 +01:00

Table of Contents

Professional Programming

Give me six hours to chop down a tree and I will spend the first four sharpening the axe. (Abraham Lincoln)

A collection of full-stack resources for programmers.

The goal of this page is to make you a more proficient developer. You'll find only resources that I've found truly inspiring, or that have been become timeless classics.

Must read books

I've found these books incredibly inspiring:

There are some free books available, including:

Must-read articles

Other general material

  • The Imposter's Handbook - $30. From the author: "Don't have a CS Degree? Neither do I - That's why I wrote this book."

Topics

Algorithm and data structures

Let's be honest: algo can be a pretty dry topic. This quora question lists some funnier learning alternative, including:

Attitude, habits, mindset

Automation

Biases

Biases don't only apply to hiring. For instance, the fundamental attribution bias also applies when criticizing somebody's code written a long time ago, in a totally different context.

Career growth

Characters sets

Coding

Computer science

Databases

Debugging

Design (visual, UX, UI)

I highly recommend reading The Non-Designer's Design Book. This is a pretty short book that will give you some very actionable design advices.

Design patterns & anti-patterns (OOP)

Here's a list of good books:

I maintain a list of antipatterns on another repo. This is a highly recommended read.

Dev environment & tools

Tools

Dotfiles

Articles

Editors & IDE

Incident response (alerting, outages, firefighting)

Internet

Interviewing

Learning

Learn how to learn!

Project management

See Project management section on my engineering-management list of resources.

Programming language

This is language-specific, for instance, checkout my professional Python education doc.

I'd recommend learning:

  • At least one dynamic language (Python, Ruby, JavaScript, etc.). Pretty useful for quick one-off automation scripts, and fastest to write for interviews.
  • At least one compiled language (Java, C, C++, etc.)
  • At least one more recent language to see where the industry is going (as of writing, Go, Swift, Rust, etc.)
  • At least one language that has first-class support for functional programming (Haskell, Scala, etc.)

A bit more reading:

FP vs. OOP

Reading

  • Papers we love: papers from the computer science community to read and discuss. Can be a good source of inspiration of solving your design problems.

Releasing & deploying

Security

Shell

Resources

System architecture

Scalability

  • I already mentioned the book Scalability rules above, but there's also a presentation about it.

Stability

  • I already mentioned the book Release it! above. There's also a presentation from the author.

Resiliency

Testing

Version control (Git)

Webdesign

Writing for performance

Concepts

Glossary