Skip to content

Menu

Software engineering

I take an agile, pragmatic approach to software engineering, working across architecture, development, testing, and team coaching.

Software engineering connects technology, people, and business. Decisions involve tradeoffs, and fast feedback helps teams adapt.

With AI-first workflows, the focus shifts toward specifying intent, orchestrating coding agents, and verifying results.

Technology

Build reliable software with clear code, automated tests, and continuous delivery.

  • Clean code
  • Test-driven development (TDD)
  • Continuous integration and delivery (CI/CD)
  • Automated builds
  • Domain driven design (DDD)
  • Extreme programming (XP)
  • Shift security left with threat modeling
  • Object-functional programming
AI-assisted development

Coding agents need clear specifications, useful context, and reliable quality gates. My priorities:

  • Spec-driven development: clear intent before generated code
  • Reviewable components, high branch coverage, and behavior-driven tests
  • Agent-readable conventions, context, and living documentation
  • AI review of requirements, designs, and code
  • Human oversight where compliance, security, or business risk demands it
  • Vibe coding for prototypes; structured workflows for production
  • Clear communication, abstract thinking, and mental modelling

Explore further: Software Development with AI, on intent and verification, and Lights On, Lights Off, on human-supervised and autonomous AI software factories.

Team collaboration

Help teams learn and deliver through collaboration, short iterations, and fast feedback.

  • Pair programming
  • Team topologies
  • Four key metrics ("Accelerate"/DORA)
Operations

Bring development and operations together to improve flow, reliability, and learning.

  • The three ways of the DevOps handbook: flow, feedback, continuous learning
Architecture

Enable teams to make architectural decisions that fit their context and evolve with their needs.

  • Evolutionary architecture
Business alignment

Connect engineering decisions to business goals and validate value through fast feedback.

  • Fast feedback, e.g. sprint reviews
  • Enterprise Architecture
  • Lean thinking

Standalone websites built with AI, one software engineering topic per site:

Software Development with AI — six essays on user stories, specs, and agentic practice

Software Development with AI

Software engineering

Six essays on what AI actually does to the practice of building software: writing code is no longer the bottleneck — the work moved to communicating intent upstream and verifying output downstream.

The Ten-Year Note — a 2026-2036 timeline for software development and consulting

The Ten-Year Note

Software engineering

A ten-year timeline (2026–2036) for software development and consulting, priced on one thesis: the artifact got cheap, the accountability didn’t. A claims audit and a nine-metric dashboard state in advance what would force a re-price.

Lights On, Lights Off — a tutorial on AI software factories, lit and dark

A textbook on AI software factories: “lit” ones keep a human reading the diff, “dark” ones let machines verify machines. Its advice is to earn the dark with evidence, one narrow loop at a time.

Ubiquitous — an eight-module introduction to Domain-Driven Design

Ubiquitous

Software engineering

An eight-module introduction to Domain-Driven Design — Ubiquitous Language, strategic design, tactical building blocks — taught through a single running order-fulfillment example.

Claude Code for Java Developers — a hands-on course for pairing with Claude Code on the JVM

A hands-on, eight-module course teaching Java and JVM developers to pair effectively with Claude Code — from first session to team-wide adoption, with Maven, Gradle, Spring, and JUnit examples throughout.

Open source on GitHub

A curated tour of my public repositories on github.com/jdinkla.

AI & agentic development tooling

  • claude-marketplace Plugin marketplace

    A personal Claude Code plugin marketplace — a catalog of plugins (skills, slash commands, agents, hooks) installable with one command.

  • software-craft Claude Code plugin

    Slash commands for high-level software engineering: architecture, Domain-Driven Design, Architecture Decision Records, and quality & maintenance work.

  • user-story-skills Claude Code plugin

    Skills and slash commands for user story refinement across the full lifecycle, from discovery through post-release — INVEST reviews, acceptance criteria, splitting, and more.

  • Turns a source essay into visual media — slide decks and single-page infographics — with multi-provider text and image generation.

  • pixbridge Python · PyPI

    Multi-provider AI image generation library with a unified client API across Gemini, OpenAI, and xAI. Published on PyPI.

Static analysis: the arclens family

Structural analysis tools that extract a codebase's architecture, compute coupling metrics, detect cycles, and render reports and diagrams — one tool per ecosystem.

  • arclens-kt Kotlin

    Static analysis for Kotlin codebases: dependency structure, coupling metrics, and architectural visualizations.

  • arclens-java Kotlin

    The same analysis for Java programs, implemented in Kotlin.

  • arclens-ts TypeScript

    Structural analysis for TypeScript and React codebases — afferent and efferent coupling, circular-dependency detection via Tarjan's SCC, Mermaid diagrams, and a self-contained HTML report.

Games & simulations

Browser-based, built with AI coding agents.

  • space-v-simulator TypeScript

    A management simulation that teaches the verification paradox: higher AI adoption generates more code while review capacity stays fixed — without investing in verification, delivery slows down.

  • vibe-crossword-tile-game TypeScript · React

    A Scrabble-like single-page game against an AI opponent with three difficulty levels — full rules, cross-word validation, bingo bonus.

  • city-guessing-game TypeScript · React

    Guess-the-city quiz: a red dot on a continent map, multiple-choice answers. Built with React and Leaflet.

  • flag-learning-game TypeScript

    A vibe-coded game for learning the flags of the world's countries.

  • Maze generation and solving algorithms from Jamis Buck's "Mazes for Programmers", with a solver arena where pathfinding algorithms race through generated mazes.

Ray tracing & algorithms

  • A Rust port of Jamis Buck's "The Ray Tracer Challenge", verified by the book's own Cucumber/Gherkin specs — 313 scenarios.

  • The same book implemented in Kotlin.

  • A ray tracer inspired by Kevin Suffern's "Ray Tracing from the Ground Up".

  • Nearest-neighbour search with k-d trees on Apache Spark.

  • GeomAlgLib Haskell

    A library of geometric algorithms and data structures for Haskell — convex hulls, triangulations, Voronoi diagrams — written in 1998 for my diploma thesis, and still building on a current GHC.

AI experiments

  • ai-playground Python

    Examples for the OpenAI API and LangChain.

  • ai-text2image Python

    Round-trip experiment: GPT describes an image, then an image model regenerates it from that description.

  • gemini-cli-news JavaScript

    A small RSS reader for InfoQ news, built to try out Google's gemini-cli.

Article & talk code

  • Example code for my JavaSpektrum article on Structured Concurrency — the JDK 24, 25, and 26 preview APIs kept side by side so the differences are easy to see.

  • Documents and code from the "Coding da Vinci Nord" 2016 culture hackathon, analyzing a family-names dataset.

The archive

Older talk and article code, kept read-only: Kotlin coroutines (parallel 2019) · structured concurrency warm-up (KKON 2021) · KKON 2022 talk · cuDNN example from iX Developer 2018 · GPU computing (parallel 2017) · parallel 2015 · parallel 2014 · parallel 2012 · email analysis with Spring Boot & Elasticsearch · disk-usage pie charts in Groovy · Eclipse Modeling Framework with Groovy · Common Warehouse Metamodel in EMF · family-name graphs via Levenshtein distance · Markov chains for Ruby Quiz 74 (2006).

Articles about Software Engineering

The seven wastes of software development
Jan 13, 2026 software-engineering

The seven wastes of software development

Lean Thinking is more than just a set of management tools; it is a philosophy centered on maximizing customer value while relentlessly eliminating waste. At its core, it challenges us...

#agile #project-management #quality-assurance
Read more
Nov 11, 2025 software-engineering

AI Crosses from Exploration into Engineering

The Thoughtworks Technology Radar has always been more than a list of tools. It captures what happens when technology moves from experimentation to everyday practice. In its 33rd edition, one...

#ai #gen-ai #thoughtworks
Read more
Nov 01, 2025 software-engineering

Announcing NKP 0.1: Static Analysis for Kotlin Projects

I’m excited to share the first MVP release of NKP (aNalysis of Kotlin Programs), a command-line tool for analyzing Kotlin codebases and uncovering architectural insights.

#jvm #architecture #kotlin #object-functional #quality-assurance
Read more
Java in the Technology Radar
Sep 03, 2025 software-engineering

Java in the Technology Radar (JavaSpektrum)

I’ve written a new article for JavaSpektrum: “Java im Technology Radar – Totgesagte leben länger”. The piece looks back at Java’s journey through the eyes of the Thoughtworks Technology Radar...

#java #article #jvm #thoughtworks
Read more
Structured Concurrency in Java 24
Mar 31, 2025 software-engineering

Structured Concurrency in Java 24 (JavaSpektrum)

I’ve written an article for JavaSpektrum 2/2025 about Structured Concurrency in Java 24. The article covers JEP 499, Java’s fourth preview of Structured Concurrency, which aims to make concurrent programming...

#java #concurrency #article #jvm #parallelism
Read more
Coroutines in Kotlin at KKon 2021 Warmup
Apr 23, 2021 software-engineering

Coroutines in Kotlin at KKon 2021 Warmup

In my talk “Nebenläufigkeit mit Koroutinen strukturieren” at the KKon 2021 Warmup I explained how to structure and organize concurrent programs with coroutines in Kotlin.

#kotlin #parallelism #concurrency #talk #slides
Read more