Agile Isn't Dying — It's Becoming Agentic
Agile is not dying. The 2025 State of Agile report shows AI adoption in Agile teams jumped to 84%, ROI scrutiny reached 76%, and hybrid models now dominate. The next phase is agentic Agile.
Where technology meets human behavior in software development
Agile is not dying. The 2025 State of Agile report shows AI adoption in Agile teams jumped to 84%, ROI scrutiny reached 76%, and hybrid models now dominate. The next phase is agentic Agile.
I completed MIT's Blended Professional Certificate in CTO and my impact project team won the fire hydrant prize for a mobility solution for people with reduced mobility. Here is what the experience changed for me.
Most teams measure developer productivity with output metrics that miss the human side. The 2025 data from 24,534 developers reveals what actually drives productivity—and it is not what most dashboards track.
AI adoption is table stakes, but most teams are only measuring one kind of debt. The data reveals cognitive and intent debt as the real barriers to AI productivity. Here's what I found.
Small businesses beat large enterprises at AI adoption because they move faster, skip committees, and feel the pain directly. Here's the data and my experience running two companies that adopted AI early.
AI coding tools have flipped the software development pipeline. Writing is now cheap; review is expensive. We look at the 2026 data on the verification bottleneck and what it means for engineering teams.
AI coding assistants produce PRs faster, but review velocity hasn't changed. The bottleneck shifted from writing to reviewing. Here's how we fixed it at Symbol.
Go 1.24's `tool` directive eliminates the `tools.go` blank import hack. Use `go get -tool` to pin dev tools like `stringer` or `mockgen` in go.mod, then run with `go tool`. Unified team workflows, no version drift, no global installs.
AI coding assistants are great at writing Go, but they're writing Go from 2020. This post explores Go 1.26's modernizers — a rewritten go fix that automatically upgrades outdated patterns like interface{} to any and manual map loops to maps.Keys.
This post walks through setting up Syncthing to sync files between multiple computers and a NAS device. It covers installation on Arch Linux, Docker setup for NAS, device configuration via Tailscale, and important exclusion patterns to avoid syncing unnecessary files.
The process of taking an old sound and making it new feels exactly like building software. This post explores parallels between music sampling and Go development, from finding libraries to managing concurrency with goroutines. The tools differ but the thinking is identical.
Miscommunication between executives and developers causes project failure. This guide covers clear strategies: defining problems not solutions, protecting developer flow state, and building feedback loops. Learn to turn your engineering team into true product partners.
A deep dive into CSRF attacks, one of the most common web vulnerabilities. This guide explains the anatomy of an attack, covers best practices for mitigation like the Synchronizer Token Pattern and SameSite cookies, and details common anti-patterns to avoid.
Website speed impacts revenue - just 100ms can cause a 7% drop in conversions. This guide explains how HTTP caching headers like Cache-Control and Content-Encoding improve performance, reduce costs, and boost SEO. Learn to turn caching concepts into business advantages.
Learn why treating UI design as a commodity holds your business back. Discover how to shift your mindset from expense to investment to build a powerful partnership with your designer and achieve a tangible business ROI.
This post breaks down how we solved the $200/month contact form problem for a static Hugo site. We detail our journey in crafting an elegant, zero-cost solution by using Cloudflare Workers as a serverless 'brain' and HTMX for an instantaneous user experience.
When our team couldn't agree on the Monty Hall problem, we turned to Go programming to settle the debate. This article shows how we built a simulation to prove that switching doors really does double your chances of winning.
This post explores how small tech teams can use Agile methodologies to boost product development efficiency. It covers Scrum, Kanban, and XP practices, along with implementation strategies. Learn to overcome challenges and leverage tools for better team productivity.
In today's fast-paced software development world, measuring team performance is crucial for improvement. DORA metrics help transform low-performing teams into high-performing ones. They track progress and ensure customer value delivery.
This post explains popular open-source licenses and their implications for software development teams. It covers permissive and copyleft licenses like MIT, GPL, Apache, and BSD. Learn how license choices affect usage, modification, and distribution of open-source software.
Application Performance Monitoring (APM) uses telemetry data to enhance system observability. It helps teams troubleshoot issues and improve user experience in production. Learn how instrumenting Go applications with APM tools enables proactive monitoring and optimization.
This post demonstrates using Plush templating engine with plain Go applications for server-side HTML rendering. It shows how to integrate Plush with standard Go handlers and embed templates. Learn to enhance Go web apps with Plush's ERB-like syntax for dynamic content.
This post explains how to use Go's template block and define expressions for creating reusable page layouts. It demonstrates avoiding repetition in HTML templates for a blog application. Learn to separate layout from content for better maintainability.
This post explores using Go's embed package for improved SQL query management in applications. It compares embedding SQL in strings versus using separate SQL files with go:embed. Learn how this enhances editor support and maintains single-binary deployment.
This updated guide explains handling timezone data in Go 1.15 and newer versions using the time/tzdata package. It covers importing the package or using build tags to embed timezone data. Learn to simplify timezone support in Go applications without Dockerfile modifications.
This post explains how to use Go's build tags for conditional compilation in applications. It covers syntax, Boolean logic for tags, and practical examples for plugins and OS-specific code. Learn to optimize Go builds for different environments and features.
This post explains how to configure timezone support in Go applications running on Alpine Docker images. It covers copying the zoneinfo.zip file and setting the ZONEINFO environment variable. Learn to ensure accurate time handling in containerized Go apps.
This tip explains how to enforce consistent package manager usage in JavaScript projects. By configuring .npmrc and package.json engines, teams can prevent mixing YARN and NPM. This avoids dependency conflicts and ensures smooth development workflows.
This comprehensive guide covers testing Go Buffalo applications across different layers. It explains testing routes, middlewares, helpers, actions, and models with practical examples. Learn best practices for ensuring code quality and stability in Buffalo apps.
This post provides a quick guide to setting up Continuous Integration for Go projects on CircleCI. It includes a sample circle.yml configuration for dependencies, testing, and environment setup. Get started with automated builds and tests for your Go applications.