Why Do I Need an Ontology?


A diagram of an AI agent loop passing through an ontology validator, with valid results flowing forward and invalid results bouncing back.

An ontology gives developers and AI agents a shared, checkable model of the domain, with guardrails that catch error types and plain English mistakes.

What Is Boolean Logic?


A light switch shown in two states, on and off, representing the two values of boolean logic.

Boolean logic explained: true, false, AND, OR, NOT, and the mental patterns a human needs before true or false can mean anything.

Fundamentals of Containerization


Diagram showing a container image built from layers running as isolated processes on a shared host kernel

Containerization fundamentals: images, layers, namespaces, cgroups, and why containers make software portable and reproducible across environments.

Fundamentals of Empirical Software Engineering


Diagram showing questions flowing into data collection, analysis, and validated evidence about how software is built and used.

Empirical software engineering fundamentals: how systematic data collection and analysis replace opinion with evidence about how software is built and used.

Are We There Yet Development


A child in the back of a car whining 'Are we there yet?' as a metaphor for impatient AI-era software delivery.

Are We There Yet Development names the AI-era habit of demanding software at the speed of thought, and the toll it takes.

1000 Life Giving Potions - Operating System Wildlife


A jungle of operating system logos representing a lifetime of jumping between Mac OS, Linux, and Windows.

Why I run Mac OS, Linux, and Windows side by side, what jumping between operating systems taught me, and how to start exploring the OS wildlife yourself.

What Is the Hourglass of Uncertainty?


An hourglass shown at three project phases: full at the start, drained at code-complete, then flipped over after shipping to production so a fresh bulb of sand begins draining through user acceptance testing.

The cone of uncertainty narrows as projects progress. The hourglass of uncertainty says it flips again at launch. Learn which one your project is on.

How Do I Decode Software Deployments?


An architect walking through a service map, on-call rotations, and runbook excerpts to reconstruct the team structure that produced them.

Read deployed software as a fossil record of organizational structure: service boundaries, API contracts, pipelines, and runbooks all carry team imprints.

How Do I Diagnose Software Delivery Friction?


A developer running a git log query in a terminal to rank files by the number of distinct authors who edited them.

Use git history and the org chart to find the modules where Conway's Law is driving merge conflicts, slow reviews, and shipping delays.

How Do I Pitch Org Design for Better Architecture?


An engineer presenting a side-by-side view of a service map and an org chart to a mixed audience of engineers and product leaders.

Use Conway's Law to connect architecture conversations to organizational design, with concrete talking points for architects, leaders, teams, and communities.

How Do I Serve Organizational Needs With Conway's Law?


An engineering leader comparing a commit-frequency heatmap against an org chart to identify ownership mismatches.

Use Conway's Law as a diagnostic to spot healthy vs broken team-to-code alignment, then pick the organizational change that fixes the right problem.

How Do I Smooth Platform Team Friction?


A platform engineer reviewing a queue of pull requests from multiple product teams to identify coordination bottlenecks.

Reduce friction between a platform team and the product teams that depend on it using measurable thresholds and three communication-cost levers.

How Do I Use Conway's Law?


A technical leader picking among five field guides on applying Conway's Law to different organizational situations.

An index of five focused guides on applying Conway's Law: smoothing platform friction, serving the org, diagnosing delivery, decoding software deployments, and pitching a better architectural design.

What Is Conway's Law?


Teams aligned to modules in a codebase, with module boundaries tracing the communication structure between teams.

Conway's Law says software mirrors the organization that built it. Learn the mechanism, the inverse Conway maneuver, and why team shape is architecture.

Fundamentals of Technical Leadership


Diagram showing the technical leadership workflow: credibility, vision, communication, team empowerment, and decision-making in a reinforcing loop.

Learn the fundamentals of technical leadership: credibility, vision, communication, empowerment, and decision-making that turn engineers into leaders.

Fundamentals of Agent Accessibility


Diagram showing the agent accessibility workflow: discoverability, machine-readable interfaces, predictable behavior, and agent-aware error handling.

Agent accessibility fundamentals: make your APIs and software products discoverable, predictable, and usable by AI agents.

Fundamentals of Software Traffic Management


Diagram showing control planes, service meshes, sidecars, and policy-driven routing across distributed services.

Software traffic management fundamentals: control planes, service meshes, sidecars, and routing strategies for resilient distributed systems.

Fundamentals of Software Automation


Diagram showing the automation spectrum from manual tasks through scripted processes to fully automated, self-healing systems.

Software automation fundamentals: core principles, build systems, infrastructure as code, and when automation pays off versus when it creates more problems.

Fundamentals of Concurrency and Parallelism


Diagram showing concurrent tasks interleaving on one core versus parallel tasks running simultaneously on multiple cores.

Concurrency and parallelism explained: why they differ, how threads and async work, and how to reason about race conditions, deadlocks, and synchronization.

Fundamentals of Software Systems Integration


Diagram showing integration patterns connecting multiple systems through APIs, message queues, and data pipelines.

Software systems integration fundamentals: strategies, patterns, and trade-offs for connecting systems that need to work together.

What Is Amdahl's Law?


Diagram showing diminishing speedup as processors increase, limited by the serial fraction of a program.

Amdahl's Law sets the speed limit for parallelism. Learn why doubling cores doesn't double speed, how the serial fraction dominates, and when to optimize differently.

A Software Fundamentals Glossary


A Software Fundamentals Glossary

Glossary of terms for software fundamentals (maintainability, design, naming, and related topics).

Fundamentals of Maintainability


Maintainability dimensions: structural complexity, understandability, technical debt, coupling, and code smells.

Why software maintainability matters: structural complexity, understandability, technical debt, coupling, and code smells. Learn the principles that keep code changeable over time.

Fundamental Skills


Fitness review skills turn fundamentals into repeatable, scored code reviews across architecture, security, reliability, and more.

Fitness review skills turn fundamentals into repeatable, scored code reviews across architecture, security, reliability, and more.

What Is Just-in-Time Catching Test Generation?


A diagram of the JIT catching test generation process.

Just-in-Time Catching Test Generation creates tests on-the-fly with large language models to catch bugs before they land. Learn why it exists and how it works.

Software Development Frontier 1: Augmented Workflows, Quality at Speed, and Bot Spam


Software Development Frontier 1: Augmented Workflows, Quality at Speed, and Bot Spam.

The next big frontiers of software development are already taking shape: augmented workflow optimization, F1-level recovery and quality control systems, and bot spam management.

Logical Fallacies in Software Development


Logical fallacies like sunk cost, false dichotomy, and confirmation bias derail software projects. Learn to recognize and avoid faulty reasoning traps.

Logical fallacies like sunk cost, false dichotomy, and confirmation bias derail software projects. Learn to recognize and avoid faulty reasoning traps.

What Are Agent Skills?


Agent Skills explained: why they exist, how they work conceptually, and how they solve AI agent capability gaps through reusable procedural knowledge packages.

Agent Skills explained: why they exist, how they work conceptually, and how they solve AI agent capability gaps through reusable procedural knowledge packages.

A List of Software Engineering Blogs: Tech Company Engineering Blogs


A list of software engineering blogs from leading technology companies and organizations.

A curated directory of software engineering blogs from leading technology companies. Find engineering blogs from Meta, Google, Netflix, AWS, and more. Includes RSS feeds and covers system design, API development, and DevOps practices.

What Is the Agent2Agent Protocol (A2A)?


Agent2Agent Protocol (A2A) explained: why it exists, how it enables AI agents to communicate across vendors and platforms, and how it solves interoperability challenges.

Agent2Agent Protocol (A2A) explained: why it exists, how it enables AI agents to communicate across vendors and platforms, and how it solves interoperability challenges.

Fundamentals of API Design and Contracts


Diagram showing an API contract connecting a provider and consumer with versioned requests and responses.

API design fundamentals for contracts, compatibility, and reliability, so integrations stay predictable as systems evolve.

What Is MCP?


Model Context Protocol (MCP) explained: why it exists, how it works conceptually, and how it solves AI-LLM integration challenges through standardized protocols.

Model Context Protocol (MCP) explained: why it exists, how it works conceptually, and how it solves AI-LLM integration challenges through standardized protocols.

Fundamentals of Software Development Operations


Diagram showing how software development intersects with operational excellence: development velocity, system reliability, operational visibility, and cross-functional coordination working together to support business operations at scale.

How software teams impact operational excellence. A developer's guide to understanding operations from a COO's perspective.

Fundamentals of Software Usability


Diagram showing software usability fundamentals, including learnability, efficiency, memorability, error prevention, and satisfaction, interconnected in a workflow.

Understand why software usability matters: how learnability, efficiency, memorability, error prevention, and satisfaction create software that users can actually use effectively.

Fundamentals of Naming


Diagram showing naming fundamentals, including clarity, consistency, context, conventions, and discoverability, interconnected in a workflow.

Understand why naming matters in software: how clear names improve readability, reduce bugs, and make code easier to understand, maintain, and modify over time.

Fundamentals of Software Maintainability


Diagram showing software maintainability fundamentals, including code quality, technical debt, refactoring, documentation, testing, and architecture, interconnected in a workflow.

Understand why software maintainability matters: how code quality, technical debt, refactoring, and design patterns create systems that are easier to modify, debug, and extend over time.

Fundamentals of Software Debugging


Abstract illustration of software debugging workflow: define failure, reduce surface area, form hypotheses, collect evidence, confirm root cause, and prevent recurrence.

Software debugging fundamentals for developers: mental models, evidence-driven workflows, observability signals, and practical techniques for finding root causes fast.

Fundamentals of Software Caching


Diagram showing requests flowing through cache hits and misses, with freshness checks and eviction.

Software caching explained: why caches speed up systems, where they fail, and how to think about freshness, consistency, and cache misses.

Fundamentals of Agile Software Development


Diagram showing availability workflow from redundancy through health checks to graceful degradation

Agile software development fundamentals: iterative development, collaboration, and responding to change. Build software that delivers value continuously.

Fundamentals of CI/CD and Release Engineering


Diagram showing CI/CD workflow from code commit through automated testing to deployment

CI/CD and release engineering fundamentals: automation, feedback loops, deployment strategies, and why continuous integration prevents integration hell.

Fundamentals of Software Availability


Diagram showing availability workflow from redundancy through health checks to graceful degradation

Software availability explained: uptime metrics, redundancy patterns, health checks, and graceful degradation for keeping systems accessible.

Fundamentals of Capacity Planning


Cover image for capacity planning fundamentals and scalable system reliability.

Learn capacity planning fundamentals: how to predict resource needs, avoid over-provisioning, and scale systems efficiently. Essential guide for engineers and operations teams.

Fundamentals of Software Scalability


Cover image showing scalability concepts: horizontal and vertical scaling patterns for distributed systems.

Software scalability fundamentals: how systems handle increased load, why scalability matters, and when to scale horizontally vs vertically.

Fundamentals of Software Performance


Diagram showing the performance loop: measure, explain, change one thing, verify.

End-to-end software performance fundamentals: latency, throughput, percentiles, bottlenecks, and measuring user-perceived speed without breaking reliability.

Fundamentals of Software Quality Assurance


Abstract illustration showing a feedback loop for software quality: prevention, detection, and learning.

Software quality assurance fundamentals, why QA exists, how it differs from testing, and how teams build quality into how they work.

What Is a Retry Storm?


Diagram showing a retry storm as a feedback loop of increasing load and tail latency.

Retry storm: when retries multiply load and turn partial failures into outages. Learn how they happen, how to detect them, and how to prevent them.

Fundamentals of Networking


Diagram showing the networking stack and how data flows through it.

Networking fundamentals for developers: packets, IP addressing, routing, TCP and UDP, DNS, TLS, and a practical troubleshooting mental model.

Why Should I Learn Software Fundamentals?


A diagram showing a software system with a foundation of fundamentals and a building on top of it. The building represents the software system and the foundation represents the fundamentals.

Why learn software fundamentals? They outlast frameworks and reduce pain. Build skills that pay off for your career and your users.

Fundamental Algorithmic Patterns


Algorithmic patterns reference: two pointers, sliding window, dynamic programming, and 30+ more. Learn to spot patterns and solve problems faster.

How Algorithmic Patterns Work


Flow showing how algorithmic patterns relate, combine, and guide practice.

Algorithmic patterns explained: why patterns work, how patterns combine, and how to practice recognition without memorizing solutions.

Fundamentals of Computer Processing


Conceptual diagram comparing CPUs, GPUs, TPUs, and specialized processors and how they map to different workloads.

CPU vs GPU vs TPU: learn how processing architectures differ, when to use each, and how latency, throughput, and data movement shape performance.

Fundamental Data Structures


Conceptual diagram showing arrays, hash maps, sets, trees, graphs, and how they organize data differently.

Data structures guide: arrays, hash maps, sets, stacks, queues, trees, graphs. Types, properties, when to use in Python, JavaScript, Java, C++, Go, Rust.

Fundamentals of Data Structures


Master data structure fundamentals: arrays, hash maps, trees, and graphs. Learn how structure choices shape algorithm performance, reliability, and developer sanity.

Fundamentals of Algorithms


Master algorithm fundamentals: data structures, Big O notation, and runtime complexity. Learn how algorithmic thinking helps build fast, reliable software and prevent production incidents.

Fundamentals of Software Security


Diagram showing software security fundamentals including threats, vulnerabilities, authentication, authorization, encryption, and secure development practices.

Software security fundamentals: threats, vulnerabilities, and defenses. Build systems that protect data and users from attacks.

Fundamentals of Software Performance Testing


Diagram showing performance testing fundamentals including load testing, stress testing, performance metrics, and bottleneck identification.

Performance testing fundamentals: load testing, stress testing, and metrics. Build systems that handle real traffic and find bottlenecks before users.

Fundamentals of Software Product Development


Abstract illustration of product development workflow: user research, feature planning, development, testing, and iteration cycles.

Master software product development fundamentals: user research, MVP validation, feature development, iteration, and metrics. Build products that solve real problems.

What Is The Law Of Instrument?


Discover how the Law of Instrument explains why developers reach for familiar tools—especially GenAI—even when they're wrong for the job. Learn to recognize this cognitive bias and choose the right tool.

Fundamentals of Reliability Engineering


Diagram showing SLOs, error budgets, and reliability targets working together

Understand reliability engineering fundamentals: how to define SLOs and error budgets, design reliable systems, balance reliability with innovation, and make data-driven decisions about system reliability.

Fundamentals of Monitoring and Observability


Diagram showing metrics, logs, and traces working together for system observability.

Understand monitoring and observability fundamentals: how metrics, logs, and traces work together to help you understand system behavior, debug problems, and make better decisions.

Fundamentals of Metrics


Diagram showing North Star, supporting, and guardrail metrics connecting data to decisions

Understand software metrics fundamentals: why they matter, how to pick high-signal, actionable measures, and build lean systems that improve decisions.

Fundamentals of Software Design


Master the core principles that guide effective software design. Learn why design matters, how to recognize good design patterns, and strategies for making design decisions that create maintainable, scalable systems. Essential reading for developers and technical leaders.

Fundamentals of Fundamentals


Master the core concepts that underpin all technical knowledge. Learn why fundamentals matter, how to identify them, and strategies for building lasting expertise that transcends trends and tools. Essential reading for developers and technical leaders.

Fundamentals of Backend Engineering


Understanding backend engineering: what it is, why it matters, and how backend systems work. Essential explanations for developers who want to understand the server-side of software development.

Fundamental Software Concepts


Master the universal software concepts every developer needs to learn, from data structures to error handling. Discover the fundamentals that separate coders who build toy projects from those who create production-ready systems.

A List of Pragmatic Programmer Principles


Essential principles from The Pragmatic Programmer that every developer should know, organized for quick reference and daily practice.

Fundamentals of Software Development


Master core software development fundamentals: decision-making, problem-solving, and building systems that work. Essential guide for better developers.

How Do I Define Software Capabilities? A Complete Guide


Learn how to define and document software capabilities effectively. Master the art of specifying system abilities that enable use cases and features. Includes templates and real-world examples.

How Do I Identify Software Use Cases? A Practical Guide


Learn how to identify and document software use cases effectively. A comprehensive guide for product managers, software architects, engineers, and designers working together to build better software.

How Do I Specify Software Features? A Complete Guide


Master the art of specifying software features that deliver real value. Learn proven techniques for documenting features with templates and real-world examples from project management.

What Is The Difference Between Software Capabilities, Use Cases, and Features?


Master the key concepts of software development. Learn the crucial differences between capabilities, use cases, and features with real-world examples from project management.

What Is Software Delivery?


Understanding software delivery, its key aspects, and why it matters in the modern tech landscape.

Learn Asymptotic Notations


Learn Asymptotic Notations to estimate, communicate, and optimize the efficiency and performance of algorithms.

Learn GitHub


Learn GitHub to supercharge your development process. GitHub is the premier code management tool, and it keeps getting better.

Learn Software Design Patterns


Learn software design patterns for fun and profit! Are you facing a complex problem? Try using a design pattern to save your time and sanity!

Learning Elixir


Learning Elixir is fun! Let's learn Elixir to decide if it's worth your time investment.

How to Open Files with Default Applications in Visual Studio Code (Mac & Windows)


Learn how to configure Visual Studio Code to open files with their default applications using custom tasks. Works on both macOS and Windows.