pragmatic-programmer

Apply pragmatic programming principles to improve maintainability and adaptability.

3|2|Updated Mar 23, 2026
One-click install
npx skills add https://github.com/wesleyegberto/software-engineering-skills --skill pragmatic-programmer-wesleyegberto
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: pragmatic-programmer
Source: https://github.com/wesleyegberto/software-engineering-skills/tree/main/plugins/programming-skills/skills/pragmatic-programmer
Command: npx skills add https://github.com/wesleyegberto/software-engineering-skills --skill pragmatic-programmer-wesleyegberto

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill includes references (resource) components.

What problem does it solve?

The Pragmatic Programmer framework helps software teams apply proven craft principles to improve maintainability, adaptability, and delivery velocity by focusing on disciplined practices rather than dogmatic rules.

Core Features & Use Cases

  • Core Principles: DRY, Orthogonality, Tracer Bullets, Design by Contract, Reversibility, and continuous learning.
  • Use Cases: Architecture reviews, code reviews, project estimation, knowledge portfolio management, and culture building for quality.
  • Real-World Example: When redesigning a system, apply tracer bullets to validate end-to-end flow before full implementation, ensuring incremental learning and risk reduction.

Quick Start

Prompt your team with a concise plan to apply pragmatic programming principles to the current project.

Frequently Asked Questions about pragmatic-programmer

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
What are the core principles of pragmatic programming for software architecture?

Core principles of pragmatic programming include DRY to avoid duplication, orthogonality to decouple components, tracer bullets for incremental validation, and design by contract to define clear boundaries. Reversibility ensures architectural decisions remain adaptable.

How do I use tracer bullets to validate an end-to-end system flow?

Use tracer bullets to build a thin end-to-end implementation validating the architectural flow early. This approach reduces risk by demonstrating system connectivity and generating incremental learning before committing to full implementation.

When should I apply design by contract and orthogonality in code reviews?

Apply design by contract to verify preconditions and postconditions, and orthogonality to ensure changes in one component do not affect others during code reviews. This improves maintainability and limits unintended side effects across architectural boundaries.

Can pragmatic programming principles help with project estimation and decomposition?

Yes, pragmatic programming provides structured guidance for project estimation and decomposition. By applying reversibility and disciplined breakdown, teams can improve delivery velocity and adapt to changing requirements without rewriting core architecture.

What is the best way to manage a knowledge portfolio for software craftsmanship?

Manage your knowledge portfolio by continuously learning and applying structured craft principles. This ensures disciplined practices replace dogmatic rules, directly improving software adaptability, maintainability, and overall delivery outcomes over time.