Felipe Gonzalez
I lead teams that build and maintain web products. Currently at Grupo ilao.
Colombia
about
I've spent over a decade on the web; code gets rewritten, teams stay.
Hi, I'm Felipe. I've been building software for the web since 2013. I studied Multimedia Engineering at Universidad Militar Nueva Granada (2007–2012): I started with how things look and found my place in how they work.
I spent almost nine years at Axiacore, first as a developer and then as CTO. There I learned that delivering software depends as much on people and clear priorities as it does on code.
I enjoy working with small teams that own what they ship and watching a developer grow into someone who no longer needs me. I aim to give people context and autonomy, not have the final say on every decision.
now
Learning to build with AI without handing over my judgment.
- Supporting Grupo ilao's engineering team as we develop its insurance platform.
- Bringing AI into everyday development: defining the problem before generating code, validating with tests and reviewing decisions, not just syntax.
- Sharing reusable instructions for coding agents based on how we work.
work
Decisions, results and lessons
The challenges I took on, what I contributed and what I learned along the way.
Web Developer · Mottif
Nov 2013 – Apr 2014 · Bogotá
PHP · MySQL
- The challenge
- My first job in web development.
- What I did
- Markup and server-side development.
- What I learned
- I knew I wanted to pursue a career in web development.
Web Developer · Mass Digital
Apr 2014 – Aug 2014 · Bogotá
ASP.NET · PHP · MySQL · SQL Server
- The challenge
- Build campaign platforms for Cerveza Águila, Banco Colpatria and Banco de Bogotá with fixed launch dates.
- What I did
- I implemented the campaign platforms' backend and interaction tracking.
- What I learned
- I learned to plan development around a fixed launch date.
Director of Technical Development · lequar
Aug 2014 – Jan 2016 · Bogotá
WordPress · Magento · HTML
- The challenge
- Sites and stores for clients such as Apple and the Centro Chía shopping center, with a two-person team: a frontend developer and me on the backend.
- What I did
- I built the backend and defined the deployment process. I also contributed to hiring and training, SEO and A/B testing.
- What I learned
- I learned to lead a team while staying hands-on, balancing client delivery with mentoring another developer.
Senior Full Stack Developer · Axiacore
Jan 2016 – Dec 2017 · Bogotá
Python · Django
- The challenge
- Build custom web platforms for different businesses while mentoring two developers and working directly with the executive team.
- What I did
- I built the platforms, ran user tests to guide decisions and supported the team's day-to-day work.
- The result
- In January 2018, I became the company's CTO.
CTO · Axiacore
Jan 2018 – Sep 2024 · Colombia
Python · Django · PostgreSQL · Docker · AWS · GitHub Actions
- The challenge
- Align a software agency's development, QA and operations teams around shared priorities and delivery practices.
- What I did
- I agreed on goals and metrics with the executive team and standardized the delivery process. I established a shared foundation of continuous integration, automated code checks and development environments.
- The result
- Under my technical leadership, the teams delivered products including the Crepes & Waffles online store, the Vertech Worldwide insurance platform and MTS's real estate management platform.
Tech Lead · Grupo ilao
Oct 2024 – present · Colombia
Python · Django · PostgreSQL · Redis · HTMX · Tailwind · AWS
- The challenge
- Build an insurance platform with an in-house team to support the group's growth.
- What I did
- I lead the team and guide architectural decisions. I prioritize incremental delivery and development practices that make the product easier to maintain and extend.
- The result
- The team built a platform that supports the group's operations and continues to evolve.
how I decide
The principles behind my decisions
-
The simplest thing that solves the whole problem
I avoid adding complexity without a concrete need. Before introducing an abstraction or another layer, I look for the requirement that justifies it.
-
Grow in layers
I start with a small version that works end to end. I build on that foundation so I can validate each step while preserving what already works.
-
Boring technology that works
I prefer familiar, well-maintained tools over the newest ones: they are easier to keep running and to hand over to whoever comes next. I switch when the problem justifies it, not out of curiosity.
-
Decisions for the long term
When a solution is temporary, I make its limits and when to revisit it explicit. Tests must pass before delivery, and I consider the cost of maintaining code, not just writing it.
open source
I publish what we use daily, not experiments.
-
Reusable instructions for working with Django, HTMX, Alpine.js, Tailwind 4 and pytest through coding agents. Available as skills for Claude Code and OpenCode.
-
Persistent memory for coding agents: a Pi extension powered by Engram.
-
pi-workflow(opens in a new tab)
Reusable guides for deciding what to build, developing it and reviewing the result with coding agents. A skills package for Pi.
stack
Tools I know well, not a list of everything I've touched.
- backend Python, Django, PostgreSQL, Redis
- frontend HTMX, Alpine.js, Tailwind CSS
- infra Docker, AWS, GitHub Actions, OpenTofu
contact
Want to talk about engineering leadership, product or AI-assisted development? Get in touch.