pragmatic-programmer

Apply Pragmatic Programmer heuristics like DRY, orthogonality, and tracer bullets to engineering decisions.

1|Updated May 21, 2026
One-click install
npx skills add https://github.com/vnovakovits/claude-skills --skill pragmatic-programmer-vnovakovits
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: pragmatic-programmer
Source: https://github.com/vnovakovits/claude-skills/tree/main/plugins/engineering-practices/skills/pragmatic-programmer
Command: npx skills add https://github.com/vnovakovits/claude-skills --skill pragmatic-programmer-vnovakovits

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve? Engineers often face cross-cutting decisions and judgment calls that no single methodology or pattern covers, leading to duplicated knowledge, fragile code, and analysis paralysis. This Skill provides the heuristics from Hunt and Thomas's "The Pragmatic Programmer" as a shared vocabulary for everyday engineering judgment. ## Core Features & Use Cases - Core Heuristics: Applies DRY, orthogonality, reversibility, tracer bullets, design by contract, broken windows, and good-enough software to design and coding decisions. - Debugging & Craft Habits: Guides deliberate programming, rubber-duck debugging, crash-early assertions, and avoiding programming by coincidence. - Career & Communication Guidance: Covers knowledge portfolio investing, estimation, plain-text defaults, and audience-aware communication. - Use Case: When deciding whether to build a full subsystem or a thin end-to-end slice for a new feature, the Skill steers you toward a tracer bullet that reveals integration risk early. ## Quick Start Ask Claude to review your design decision or debugging approach using pragmatic programmer heuristics such as DRY, orthogonality, and reversibility.

Frequently Asked Questions about pragmatic-programmer

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

FAQPage Schema
How do I apply DRY without over-abstracting code?▼

DRY targets duplicated knowledge, not identical-looking code. Two code blocks that look the same but represent different business rules should stay separate, since forcing a shared abstraction couples them to change together for the wrong reasons.

What is a tracer bullet in software development?▼

A tracer bullet is a thin end-to-end slice of functionality built early to hit the target and expose integration risk. Unlike a throwaway prototype, it becomes the foundation of the production system and is enhanced incrementally.

When should I use this skill instead of a methodology-specific one?▼

Use it when a problem is too small or cross-cutting for a specific methodology, such as judging decision reversibility, debugging by coincidence, or deciding whether to fix a broken window. Pattern-specific skills fit structured tasks better.

Does the broken windows rule mean rewriting bad code?▼

No. Fixing broken windows means small, fast, opportunistic repairs of bad designs or poor code as soon as they are discovered. It is not an excuse for perfectionism or large-scale rewrites of the codebase.

What are the limitations of good-enough software?▼

Good-enough software fits domains where iterative improvement is acceptable and user requirements are less strict than developers assume. It does not apply to safety-critical systems like medical devices or aviation, where rigor is mandatory.