Skip to content

Craftsmanship

Craftsmanship is the discipline of making software safe to understand, change, review, operate, and improve.

This roadmap integrates thinking skills and practical disciplines, presenting each through junior, middle, senior, and professional responsibility levels.

Part 1: Engineering Thinking

The foundational thinking skills that surround implementation. Start with framing and solving a single problem, expand into systems and uncertainty, and finish with techniques for generating better options, modeling responsibilities, testing beliefs, and improving how you learn.

# Topic What you'll learn
01 Computational Thinking Decompose problems, recognize recurring structures, choose useful abstractions, design algorithms, and map domain concepts into code.
02 Problem-Solving Understand the real problem, devise and execute a plan, debug from evidence, reflect, and recover when you are stuck.
03 Systems Thinking Reason about emergence, feedback loops, second-order effects, trade-offs, leverage points, and bottlenecks.
04 Critical Thinking Separate claims from evidence, catch fallacies and cognitive biases, and compare engineering trade-offs objectively.
05 First-Principles Thinking Reduce a problem to genuine constraints, challenge inherited assumptions, and rebuild possible solutions from fundamentals.
06 Probabilistic Thinking Make calibrated decisions with base rates, expected value, failure probabilities, risk, and uncertain estimates.
07 Creative and Lateral Thinking Generate and evaluate non-obvious options through divergence, inversion, analogy, and productive constraints.
08 Debug-Thinking Recognize failure patterns, decompose a bug into small testable slices, and trace root cause from evidence, not assumption.
09 Scientific and Hypothesis-Driven Thinking Form falsifiable hypotheses, design experiments, measure before optimizing, and use spikes to retire uncertainty.
10 Metacognition and Learning Inspect your own reasoning, practice deliberately, learn efficiently, and map the limits of your knowledge.

Part 2: Practical Disciplines

Seven essential practices for making code safe, understandable, and maintainable.

Discipline Main outcome
Code Review Improve correctness, design, security, learning, and team flow.
Documentation Keep decisions, interfaces, and operations understandable and current.
Legacy Code Create safety before changing code you do not fully understand.
Object-Oriented Design Assign behavior and responsibility while controlling coupling.
Professionalism Make honest commitments, protect quality under pressure, and collaborate responsibly.
On Production Size, test, deploy, trace, and harden a system after it ships.

Level progression

flowchart LR Junior[Junior: make one safe change] --> Middle[Middle: improve a module] Middle --> Senior[Senior: protect a system] Senior --> Professional[Professional: shape engineering capability]

Use the lowest level that matches your current responsibility, apply its method to real work, and move up when you can explain the trade-offs and verify the result independently.

How to use this guide

Step 1: Pick a topic from Part 1 (thinking) or Part 2 (practice) that matches your current challenge.

Step 2: Start at the level that fits your responsibility: Junior for assigned tasks, Middle for module ownership, Senior for system-level decisions, Professional for organization-scale impact.

Step 3: Apply one concrete practice from that level to real work. Verify it works. Move to the next level when you can explain the trade-offs.