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:

API Application Programming Interface

Binary number system

Boolean logic

CI/CD Continuous Integration/Continuous Delivery

Client and Server

CLI Command Line Interface

CRUD Create, Read, Update, Delete

Data Structures


DOM Document Object Model

Dot files

EMACS editor

Git and Github

Floating Pointing Numbers

Frontend vs. Backend

Functional Programming

HTTP Hyper Text Transfer Protocol

IDE Integrated Development Environment

IP address

JSON JavaScript Object Notation


NP Complete and Complexity Theory

MVC Model View Controller

Object Oriented Programming


Proxy / Reverse Proxy


Regular Expressions




SSH Secured Shell


SQL Structured Query Language

TCP/IP network stack


Turing test


Version Control

Vi / Vim editor

Website vs. Web App


XML Extensible Markup Language

YAML Yet Another Markup Language