When AI can write code in minutes, what makes a software change trustworthy?
Non-Deterministic Software Engineering, Second Edition, is a practical guide to engineering reliable change with AI assistants and coding agents-without surrendering understanding, security or accountability.
Following one deliberately synthetic maintenance case from the initial request through review and release, the book shows how to turn ambiguous intent into testable requirements, set permission and escalation boundaries for agents, establish independent verification, and judge whether a change should actually be accepted.
Across 13 chapters, you will explore: measuring productivity by accepted outcomes rather than generated code; managing software quality, security and architectural debt; building verification and review practices; preserving system knowledge; developing engineering skills; governing multi-agent work; and evaluating the economics of AI-assisted delivery. Practical examples and exercises connect each principle to a decision you can make in your own team.
The book's companion Knowledge Atlas (popoloni.github.io) lets readers explore the mapped research and practitioner contributions, including 193 catalogued research works. Appendices provide exercise solutions and a guide to using the Atlas.
Written for software engineers, reviewers, architects and engineering leaders. The case study is illustrative, not a claimed production pilot; research findings are discussed with their limitations. The goal is better engineering decisions-not automation for its own sake.