The Evolution from Code Craftsmanship to Living Systems: A Conversation About the Future of Software Architecture

The Great Paradigm Shift We stand at a remarkable inflection point in software development. For decades, we’ve been craftsmen — carefully shaping code, debugging line by line, architecting systems through sheer intellectual force. But something profound is happening: we’re transitioning from writing code to conducting systems. The shift is from imperative (“do this step, then that step”) to declarative (“here’s the goal, you figure out the steps”) thinking. Instead of telling the computer how to solve problems, we describe what we want and let intelligent systems figure out the implementation. ...

August 23, 2025 · Tolic Kukul

Building Hybrid Declarative Systems: A Practical Architecture Guide

Yesterday I explored how proof trees and machine learning can work together. Today, let’s get practical: how do you actually build these hybrid declarative systems? Back in 2012, I built a proof of concept for medical software that tracked drug interactions, advised on dosage, and provided decision support that human doctors could review. It was a glimpse into what’s now becoming mainstream. Here’s how I’d build it now. The Four-Layer Architecture Think of a hybrid declarative system like a brain with specialized regions that collaborate: ...

January 20, 2025 · Tolic Kukul

Architecting for AI Agents: A New Way to Think About Software Design

What happens when you stop designing systems for developers and start designing for intelligent AI agents instead? A look into the future of software architecture.

November 12, 2024 · Tolic Kukul

Enterprise AI Architecture: Building Self-Healing, Autonomous Systems with Distributed Intelligence

As AI applications become more complex and mission-critical, we face a fundamental challenge: how do we build AI systems that are safe, reliable, and can adapt to changing requirements without human intervention? Traditional monolithic AI applications often struggle with maintainability, debugging complexity, and cascading failures when components need to evolve. This post explores a novel framework architecture that addresses these challenges through autonomous nodes, distributed intelligence, and self-healing mechanisms. Instead of relying on monolithic AI systems, this approach distributes responsibility across specialized, self-managing components that maintain their own code, adapt to changes, and recover from failures independently. ...

September 4, 2024 · Tolic Kukul

Abstraction Is Hard: Why Wrong Abstractions Are Worse Than No Abstractions

Creating good abstractions is one of the hardest parts of software development. Here’s why getting them wrong is so expensive and how to think about them better.

September 28, 2023 · Tolic Kukul

What 'Enterprise Software' Actually Means: Beyond the Buzzword

“We need an enterprise solution,” the CTO announced in our Monday meeting. I nodded thoughtfully, but internally I was screaming. What does that even mean? Is it the software equivalent of putting “artisanal” on a coffee shop menu — a fancy word that justifies charging more? After building software for startups and Fortune 500 companies for over a decade, I’ve learned that “enterprise” is both the most overused and misunderstood term in tech. Let’s cut through the marketing fluff and figure out what it actually means. ...

May 15, 2021 · Tolic Kukul

From Batch Processing to Event Streaming: A Paradigm Shift

Moving from batch jobs to an event-driven architecture wasn’t just a technical upgrade — it changed the way we thought about systems, risk, and ownership.

March 25, 2020 · Tolic Kukul

The Hidden Lifecycle Cost of Every Feature

Every feature has an ongoing cost that extends far beyond initial development. Understanding this total cost of ownership changes how we evaluate what to build.

March 1, 2019 · Tolic Kukul

Kokeshi vs Lego: Two Philosophies of Software Architecture

Software architectures fall into two categories: nested abstractions like Russian dolls, or composable pieces like Lego blocks. Understanding the difference changes how you build systems.

September 15, 2018 · Tolic Kukul

The Pragmatic Engineer's Manifesto: Beyond Hype, Toward Solutions

The Pragmatic Engineer’s Manifesto: Beyond Hype, Toward Solutions Software engineering is drowning in false signals. We optimize for the wrong metrics, test the wrong skills, and chase the wrong goals. The result? Systems that are complex but fragile, teams that are impressive but ineffective, and engineers who can recite algorithms but can’t solve real problems. It’s time for a different approach. When Answers Are Cheap, Questions Become Expensive Today, answers are cheaper than they’ve ever been. ChatGPT, Claude, and Stack Overflow can solve almost any technical problem in seconds. You can find tutorials, code examples, and step-by-step guides for virtually any programming task. ...

July 16, 2018 · Tolic Kukul

Why Every Developer Should Know About Double-Entry Bookkeeping: And It's Not About Accounting

Last week, I was debugging a payment issue in our fintech app when my colleague mentioned “double-entry ledgers.” I nodded along, pretending I knew what she meant, but honestly? I thought it was just boring accounting stuff. Turns out, I was completely wrong. Double-entry bookkeeping isn’t just an ancient accounting practice — it’s one of the most elegant software architecture patterns for handling money. And every developer building financial systems should understand it. ...

August 22, 2017 · Tolic Kukul

Why Legacy Software Design Sucks (And How to Prevent It)

Understanding why software becomes unmaintainable legacy code and practical strategies to prevent your systems from becoming the next developer nightmare.

August 5, 2017 · Tolic Kukul