The Self-Improving Developer  ←   → 
You’ve taught yourself variables, classes, functions, objects. What next?
Chapter 2

This Book

This book is an attempt to bridge the gap between the “I can write code” level and the “I understand reified types” level of software development.

The focus is on breadth over depth. After reading this book, you’ll have a good overview of the things that a good Software Engineer encounters in about the first 10 years of experience. You will have an intuitive understanding of these topics. You will not become an expert in fuzzy logic or backtracking, but you’ll know what people mean when they say those words.

Basically, this is an intermediate developer’s guide. Most content out there is either for beginners (because that’s the largest audience), or it seems to assume you’re a senior software engineer with 20 years of experience (because, that’s the profile of the people who write these books and articles). This book sits between those two extremes.

I want this to be the kind of book that sits close to your workstation (or in your browser’s bookmarks) and that you quickly flip through once in a while to look up “that one thing”. I have a few of such books in various stages of disrepair.

Writers and journalists have Elements of Style

The name of the book, if you’re curious, is a nod towards self-organizing maps, self-hosting compilers, self-replicating machines, self-modifying code, and other cool self-* stuff.