AI in QA: Automated Test Generation
A practical look at AI-assisted QA and automated test generation: where AI helps with breadth, edge cases, fixtures, and test skeletons, and why human judgment still owns risk, truth, and trust.
Writing
Deep-dives on software architecture and the way source code is structured — written to be understood by beginners, yet useful to teams shipping at scale. Diagrams, real examples, no hand-waving.
A practical look at AI-assisted QA and automated test generation: where AI helps with breadth, edge cases, fixtures, and test skeletons, and why human judgment still owns risk, truth, and trust.
A reflective essay on knowing when to leave a project: separating a hard middle from a true dead end, trying repair first, and exiting with care when the cost, trust, or direction no longer works.
A practical reflection on Definition of Ready and Definition of Done: how one protects the start of work, how the other protects the finish, and how teams can use both without turning them into gatekeeping rituals.
A practical look at serverless architecture: what teams gain by handing infrastructure to managed platforms, what they still own, and how to decide when functions, queues, and managed services are the right trade.
A grounded reflection on building diverse engineering teams: moving beyond slogans into hiring, onboarding, meeting design, decision-making, feedback, and the daily habits that let different people contribute fully.
A practical explanation of local LLMs for privacy-sensitive work: what improves when prompts and documents stay on owned machines, what quality and operations costs remain, and how teams can adopt local models responsibly.
A reflective essay on the myth of the 10x developer: why exceptional impact is usually less about lone genius and more about context, judgment, leverage, teaching, simplification, and team systems.
A balanced reflection on pair programming: when it helps with hard problems, onboarding, risk, and shared understanding, when it becomes exhausting, and how teams can use pairing deliberately instead of as a ritual.
A practical explanation of caching strategies: where caches help, how cache-aside, read-through, write-through, TTLs, and invalidation differ, and why stale data, stampedes, keys, and observability matter as much as speed.