// how I adapt
Migrations
The moments that changed the way I work, and how I adapted to each one.
~/davidmles $ rails db:schema:load
db/schema.rb
1995–1999 · the base everything else runs onBefore any migration, there was a schema. Red Hat installed next to Windows 98: drivers that didn’t exist, library conflicts, configuration files read line by line until the system made sense. Later, tuning and recompiling the kernel. At the same time I was buying parts and building my own computers. Knowledge came from friends, magazines and manufacturers’ manuals, and from a lot of trial and error.
That’s how I learned UNIX and how a computer works inside. And how I learned to learn on my own.
~/davidmles $ rails db:migrate:status
database: davidmles_career
up2000Teach JavaScript with one week’s notice
# db/migrate/2000_teach_javascript_with_one_weeks_notice.rb
# what changed
My first week at my first job, building an application in ASP. A sales colleague dropped a stack of photocopies on my desk: a JavaScript course. I was teaching it the following week.
# what I did
I prepared it in a few days and taught it.
# what stayed with me
A second career running in parallel: I went on to teach developers, from classrooms to LinkedIn Learning.
up2001Pass university math from the library
# db/migrate/2001_pass_university_math_from_the_library.rb
# what changed
I started Computer Science with weak math. The theory lectures moved too fast for me to follow.
# what I did
I stopped attending them and went up to the library to study from the course bibliography, at my own pace.
# what stayed with me
I caught up and passed the subjects I needed to carry on with the degree.
up2002Learn systems programming at night
# db/migrate/2002_learn_systems_programming_at_night.rb
# what changed
The courses I taught kept getting harder. One was C programming for Linux. I knew the language and the system, but not systems programming.
# what I did
I got a very thick book and read it at night, cutting into my sleep, with university lectures the next morning.
# what stayed with me
The course went well and the students liked it. They were engineers at a major Spanish gaming-machine maker, moving their machines to Linux with on-screen games. Today they all work that way.
up2008Adopt a framework: Symfony
# db/migrate/2008_adopt_a_framework_symfony.rb
# what changed
With plain object-oriented PHP 5, every project needed its own structure, built from scratch. Frameworks were starting to change that.
# what I did
I chose Symfony and learned to organize everything around MVC.
# what stayed with me
Conventions instead of reinventing the structure on every project.
up2011Relearn everything for Symfony 2
# db/migrate/2011_relearn_everything_for_symfony2.rb
# what changed
Symfony 2 changed almost everything about how the framework worked.
# what I did
I relearned it from the ground up.
# what stayed with me
Enough depth to put everything I knew into a Symfony 2 course on Udemy.
up2013Switch language: PHP to Ruby
# db/migrate/2013_switch_language_php_to_ruby.rb
# what changed
I was tired of implementing so much from scratch.
# what I did
I remembered Ruby from a university subject where we used it for algorithms, and tried Rails. Its gems had almost everything ready to plug in. A new language and a new way of writing code. I closed the PHP chapter with that Symfony 2 course and kept Rails as my one tool.
# what stayed with me
The most enjoyable migration. Thirteen years later, still my main specialization.
up2015Learn architecture backwards
# db/migrate/2015_learn_architecture_backwards.rb
# what changed
In 2015 I joined the e-commerce platform of a large UK energy company. The codebase was already built with a modular design: separated responsibilities, clear boundaries, decoupled code. I had to change and maintain it without knowing the theory behind it.
# what I did
I learned it from the code itself, one pattern at a time, and it was hard. In 2026 I went back to the theory: software architecture, design patterns, layered design.
# what stayed with me
Now I understand the principles behind those structures, not just how they work. That helps me make better design decisions.
up2024Migrate live payments
# db/migrate/2024_migrate_live_payments.rb
# what changed
I took responsibility for a live e-commerce platform previously maintained by a five-person engineering team. Later, Adyen required us to migrate our integration from its classic platform to its new Balance Platform within a deadline. The new API was still under development, and its documentation was incomplete.
# what I did
I investigated Adyen’s Ruby library source code to find undocumented API calls and adapted our payment integration to support both platforms. I then rolled out the migration one client at a time, using feature flags, payment logging, error alerts, and a coordinated rollback process to minimize risk without disrupting sales.
read the full story# what stayed with me
Owning a critical system end to end, and changing its most sensitive part in production without stopping the business.
up2025Adopt AI agents
# db/migrate/2025_adopt_ai_agents.rb
# what changed
The biggest shift of my career: tools that can read a whole codebase, hold a large context about the project, its conventions and the problem at hand, and write the code.
# what I did
I started using coding agents early on: to explore unfamiliar codebases, study new concepts, and build side projects. I provide the context, review the plan, and guide the implementation. Then I verify that the result meets my quality standards and fits the architecture.
# what stayed with me
The agent writes most of the code. The design decisions and what reaches production are still mine. This site was built that way.
Not my first contact with AI: my final-year project, in collaboration with Intel in 2005, implemented learning algorithms for Bayesian networks.
Schema up to date. The next migration will be written wherever I land next.
say hola →