~/douglas-montanus

About

Full-stack development, solutions architecture, and 20+ years of shipping software

I'm a full-stack developer and solutions architect who has spent two decades building and modernizing systems across government, logistics, retail, and SaaS. My work centers on cloud-native architecture, event-driven microservices, and leading and mentoring developers through greenfield migrations from legacy systems. Lately, that also means integrating AI tools like Claude directly into daily engineering work — from API scaffolding and security review to test generation and documentation.

I hold a B.S. in Computer Science from the University of Kentucky. You can reach me at douglas@montanus.biz.

Skills

Languages

Java, Spring Boot, JavaScript (ES6+), TypeScript, Python

Frontend

React, Next.js, Vite, Tailwind CSS, MUI, HTML5, CSS3

Backend

Java / Spring Boot, Node.js, Express, FastAPI

AWS

Lambda, ECS, CDK, CloudFormation, API Gateway, EventBridge, EKS, RDS

Azure

AKS, App Service, Functions, Event Grid, API Management, DevOps, GPT-4

Databases

PostgreSQL, MySQL, MS SQL, MongoDB, RDS

AI / ML

Claude (Anthropic), Azure OpenAI, OpenCV, Google OR-Tools

CI/CD & Tools

Azure DevOps, GitLab, Docker, Kubernetes, Infrastructure as Code

Experience

Twenty years of leading engineering teams through greenfield builds and legacy migrations has settled into a fairly consistent set of principles for how I approach the work.

Own the architecture, not just the code

As a solutions architect, I treat system design as a first-class deliverable, not something that falls out of whatever gets built first. That means writing the technical specs, owning the tradeoffs between services, and being the person who can explain why the system is shaped the way it is — years after the original decision was made.

Build teams, not just features

Some of the work I'm proudest of is hiring and mentoring development teams from the ground up, and establishing patterns that hold up across concurrent workstreams. A team that can extend a system without me in the room is a better outcome than a system only I can maintain.

Modernize deliberately, not heroically

I've led more than one migration from legacy infrastructure to a modern, cloud-native stack. The ones that go well are treated as an ongoing discipline — incremental, tested, reversible — rather than a single high-stakes rewrite. Momentum matters less than not breaking what already works for someone.

Treat AI as a force multiplier, not a shortcut

I've embedded Claude into daily engineering work — scaffolding, security review, test generation, documentation — but the architectural decisions and the final judgment calls stay with the team. AI moves the routine work faster; it doesn't replace the thinking that makes a system good.

Keep process in service of the team, not the other way around

I've rolled out Agile processes at the organizational level more than once, and the lesson that stuck is that process should be as light as the team can get away with. Ceremony that doesn't help someone ship or communicate better gets cut.