When you learn to code, you start by learning a programming language. You learn the syntax, you learn about variables, assignments, operators, loops, branching, semicolons, return statements. You learn what to type and how to make the code work and run and do something!
There is also another type of learning that happens in parallel to this tactical learning. Learning concepts, techniques, and tools, seeing the big picture and understanding why things are as they are. In order to retain the tactical learning, connecting the dots between various concepts is important.
I've been coaching and mentoring developers for more than a decade. I created this resource in response to questions like "can you explain xyz to me in layperson terms?", or "but what exactly is xyz?" or "I keep hearing this term xyz and I am embarrassed to ask my coworkers" or "I googled xyz but still don't get it."
This resource is about foundational software concepts that are relevant to all programmers or anyone curious about the world of software. These concepts are independent of programming languages, libraries, and frameworks.
The explanations are thorough but casual. These are not formal definitions. Sometimes you read documentation for a thing that makes perfect sense if you already know what the thing is. I'm against explanations that require you to look up twenty other things in order to understand the one thing. The most concrete learning happens with examples, analogies, metaphors, and even stories.
I am calling this project Developer Dictionary because I like the alliteration :) But this is not a collection of flat definitions.
Check back here for new entries. I am in the process of turning my notebook scribbles into digital artifacts.
If you want to get new entries in your inbox, sign up here - I send them weekly. And if you want to suggest new topics, I plan to poll subscribers from time to time.
Here are the current topics based on questions I've been asked: