Decisions
A transparent log of architectural and technical decisions I've made throughout my career. Each entry documents the context, alternatives considered, and the reasoning behind the choice.
5 decisions documented
Quality Over Speed: Why I Don't Rush to Ship Software development often prioritizes shipping fast over shipping right. Deadlines create pressure to cut corners. Technical debt accumulates. But rushing to ship messy code makes... Read decision Avoiding Resume-Driven Development The industry pressures developers to constantly learn new frameworks and chase trends. Recruiters look for specific technologies. Peers talk about the latest JavaScript framework.... Read decision Depth Over Breadth: Why I Focus on Java and Python As a software engineer, there's constant pressure to know every language, framework, and tool. My resume could list C, JavaScript, Go, Rust, and a dozen others I've touched. But li... Read decision Rewrite Over Refactor: When to Start From Scratch Aspira v1 'worked' - it played legal chess moves (no castling and en passant though) and beat random players. But it had fundamental architectural issues: move generation was ineff... Read decision Choosing Java for Performance-Critical Code When starting Aspira (chess engine), conventional wisdom says 'use C++ for performance'. Chess engines are extremely performance-sensitive - every nanosecond matters when evaluatin... Read decision