Atlassian Developer Experience Report 2024; Storyblok Dev Survey 2023; Dice Tech Career Survey 2023; Work Institute Retention Report 2022; Gallup State of the Global Workplace 2023; DDI Retention Report 2019.
Atlassian Developer Experience Report 2024; Storyblok Dev Survey 2023; Dice Tech Career Survey 2023; Work Institute Retention Report 2022; Gallup State of the Global Workplace 2023; DDI Retention Report 2019.
Atlassian Developer Experience Report 2024; Storyblok Dev Survey 2023; Dice Tech Career Survey 2023; Work Institute Retention Report 2022; Gallup State of the Global Workplace 2023; DDI Retention Report 2019.
Atlassian Developer Experience Report 2024; Storyblok Dev Survey 2023; Dice Tech Career Survey 2023; Work Institute Retention Report 2022; Gallup State of the Global Workplace 2023; DDI Retention Report 2019.
Atlassian Developer Experience Report 2024; Storyblok Dev Survey 2023; Dice Tech Career Survey 2023; Work Institute Retention Report 2022; Gallup State of the Global Workplace 2023; DDI Retention Report 2019. !
code True essence = Theory constructed by programmers The mental model of how it works, why it was designed that way and how it fits in its intended domain.
theory: • Programs are mathematical objects. 𝑓 • Correctness comes from formal specifications and proofs. $ • The programmer’s role is to implement specifications faithfully, ideally in a way that can be mathematically verified. % LGTM • Human understanding is secondary to formal reasoning. &
constructions. • The essence of programming lies in the mental theory programmers hold, not just in formal documents. • Specifications and proofs may help, but they are incomplete unless tied to programmer understanding. • Human understanding is central — code and documents are secondary artifacts.
to articulate. Formal, documented knowledge that can be written down, codified, or stored. How it’s gained Through practice, intuition, trial-and-error, observation. Through reading, lectures, databases, manuals. How it’s shared Mentoring, storytelling, shadowing, demonstration, practice. Books, reports, procedures, checklists, training materials. Examples Riding a bike, a chef’s “feel” for seasoning, a leader’s intuition in a crisis. Recipes, standard operating procedures (SOPs), user manuals, financial reports. Transfer difficulty Hard to capture in words; usually requires personal interaction. Relatively easy—just copy, store, or transmit the written or digital record. Value Enables creativity, innovation, and expert judgment. Provides structure, consistency, and scalability.
to articulate. Formal, documented knowledge that can be written down, codified, or stored. How it’s gained Through practice, intuition, trial-and-error, observation. Through reading, lectures, databases, manuals. How it’s shared Mentoring, storytelling, shadowing, demonstration, practice. Books, reports, procedures, checklists, training materials. Examples Riding a bike, a chef’s “feel” for seasoning, a leader’s intuition in a crisis. Recipes, standard operating procedures (SOPs), user manuals, financial reports. Transfer difficulty Hard to capture in words; usually requires personal interaction. Relatively easy—just copy, store, or transmit the written or digital record. Value Enables creativity, innovation, and expert judgment. Provides structure, consistency, and scalability. Code Docs Tests Theory
to articulate. Formal, documented knowledge that can be written down, codified, or stored. How it’s gained Through practice, intuition, trial-and-error, observation. Through reading, lectures, databases, manuals. How it’s shared Mentoring, storytelling, shadowing, demonstration, practice. Books, reports, procedures, checklists, training materials. Examples Riding a bike, a chef’s “feel” for seasoning, a leader’s intuition in a crisis. Recipes, standard operating procedures (SOPs), user manuals, financial reports. Transfer difficulty Hard to capture in words; usually requires personal interaction. Relatively easy—just copy, store, or transmit the written or digital record. Value Enables creativity, innovation, and expert judgment. Provides structure, consistency, and scalability. Theory Code "the art" of doing something Docs Tests "the instructions" for doing something
contracts, testing though less mathematical than envisioned • Emphasis on rigorous tools and processes static analysis, type systems, automated testing, CI/CD pipelines Adopted from Naur: • Recognition that human and social factors are critical Agile, DevOps, Domain Driven Design, Sociotechnical engineering, pair programming, code reviews • Documentation is seen as secondary to "working software and team communication"
contracts, testing though less mathematical than envisioned • Emphasis on rigorous tools and processes static analysis, type systems, automated testing, CI/CD pipelines Adopted from Naur: • Recognition that human and social factors are critical Agile, DevOps, Domain Driven Design, Sociotechnical engineering, pair programming, code reviews • Documentation is seen as secondary to "working software and team communication" Not too bad, right?! (
•Staff turnover leads to “orphaned systems” no one fully understands )* •Documentation and knowledge transfer are often inadequate + ↔ Fundamental flaws in the current industry approach - ?
AI-assisted tools as if they can replace deep understanding. •These tools catch defects but don’t preserve theory. Fundamental flaws in the current industry approach .
work across many teams. • Naur would argue this fragments theory, understanding is spread thin, so “big picture” comprehension suffers. Fundamental flaws in the current industry approach / / / / / /
the cost of long- term theory preservation. • Teams optimize for speed and delivery, neglecting the deeper shared understanding of the system. Fundamental flaws in the current industry approach 1 0
computer around had some good social effects: there was also a single terminal room, where everyone went who did anything with computers. As a result you got to know every computer user well, and there were lots of discussions and exchange of information." – Steven Pemberton Underestimating the effect of physical organization
made informal, tacit transfer of theory even harder. • Hallway conversations and pair debugging sessions — where much of the tacit knowledge used to spread — are reduced or lost. • Remote tools (chat, video calls, collaborative docs) enable productivity, but rarely capture or transmit the deeper, context-rich understanding needed to sustain a shared theory. Fundamental flaws in the current industry approach 2 3 4
continuously 2. Distribute Theory across the team 3. Incorporate Theory into tests 4. Preserve Theory through tools 5. Promote Theory building • Use living docs • ADRs • Design rationale in PRs • Domain-driven design glossaries • Record why decisions are made, not just what was coded. • Think "products", not "projects".
the changes necessary? # How do changes address the issue? # Why have I made these changes? # What effect have my changes made? # What side effects do the changes have? # What are the changes in reference to? “When a programmer first creates his code, only he and God know how it works, a few months down the line and only God knows.” https://www.szalimben.com.py/blog/english/posts/write-git-commit-message/ git commit message
continuously 2. Distribute Theory across the team 3. Incorporate Theory into tests 4. Preserve Theory through tools 5. Promote Theory building Avoid knowledge silos by adopting practices like: • Pair/Mob programming & Collaborative modelling (theory transfer through collaboration) • Rotate code ownership to touch different modules or use "Code rub" • Internal tech talks – "how this works and why"
continuously 2. Distribute Theory across the team 3. Incorporate Theory into tests 4. Preserve Theory through tools 5. Promote Theory building Make tests not only check for correctness but also reflect programmer intent. • Example: well-named test suites explains theory of use cases. • High-level acceptance tests as executable documentation of system behavior.
continuously 2. Distribute Theory across the team 3. Incorporate Theory into tests 4. Preserve Theory through tools 5. Promote Theory building Use tools as memory aids: • Code reviews with decision discussions preserved. • Architecture diagrams that auto- update from code. • AI-assisted summarizers to extract “theory fragments” from commits, tickets, or chat discussions.
continuously 2. Distribute Theory across the team 3. Incorporate Theory into tests 4. Preserve Theory through tools 5. Promote Theory building Treat knowledge continuity as seriously as uptime or security. • “Theory onboarding” sessions for new hires (walkthroughs of how the system really works). • Knowledge debt tracked alongside tech debt. • Incentives for knowledge sharing in performance reviews.
or paired • Bus factor • Psychological Safety Do not measure: • Knowledge contributions per Employee (docs, wiki, posts) = explicit knowledge, not tacit!
Protect against single points of failure & ensure tacit knowledge spreads beyond “the expert.” Tacit knowledge is shared most effectively when engineers see each other think in real time. % of critical systems where >1 engineers can handle incidents, releases, or major changes Monthly or quarterly survey with 2–3 focused questions Safe, learning-oriented culture forms foundation for tacit knowledge flow.
the source of truth. Tomorrow: the source of truth is recognized as a shared, evolving theory, and code is just its executable expression. Companies that adopt this mindset will likely build software that allows faster innovation and is more resilient, maintainable, and humane.
loss • Over-automation Teams might mistake AI-generated summaries for “the real theory”. AI can’t fully capture tacit, evolving human understanding. AI can remix artifacts but may miss domain nuance unless continuously fed updated human input. If teams rely too much on AI, they might undervalue direct knowledge transfer — the very social practice Naur says is central.
loss • Over-automation Teams might mistake AI-generated summaries for “the real theory”. AI can’t fully capture tacit, evolving human understanding. AI can remix artifacts but may miss domain nuance unless continuously fed updated human input. If teams rely too much on AI, they might undervalue direct knowledge transfer — the very social practice Naur says is central. Hmm *
= • Tacit, embodied competence “I know this hack works because last time we hit a race condition under load,” or “this module is fragile, so don’t touch X without checking Y.” These judgments live in lived practice, not just artifacts.
layer % By preserving and surfacing explicit knowledge better than humans alone can. • AI cannot generate “intelligence” by itself > It doesn’t build lived theories through engagement, trial, and adaptation in the same way humans do.
the tacit competence, will fall into the same trap Naur warned against: confusing written artifacts with the living theory. ✅ But if you use AI as a memory aid: Help preserve rationales, surface context, reduce cost of transmitting knowledge. Use AI as a powerful ally in keeping the team’s tacit "Theory" alive.
read docs (sometimes). • But they really learn by pairing, making mistakes, fixing bugs, asking questions, living through incidents. • Over time, they develop a feel for the system: a lived theory.
where it can make mistakes, • see consequences, • and refine its approach. This echoes reinforcement learning, but at the scale of real systems and over long horizons. ? ✨
getting worse. • What is code & software and what is it's value. • What is programming. • What is tacit & explicit knowledge. • Fundamental flaws still present in current industry.