Self-Taught to Senior Engineer: Building a Software Career Without a Degree
From dropping out of a Mexican polytechnic at 16 to landing a full-stack engineering role at an international company. No degree. No shortcuts. The actual path.
Breaking into software engineering without a university degree in Mexico is not a common path. This is mine.
Leaving School
At 16 I enrolled in Vocational No. 5 Benito Juárez, part of Mexico’s National Polytechnic Institute (IPN). Three semesters in, I left. The pace was wrong for how I learn — I absorb things fast by doing, not by waiting for a curriculum to catch up.
In the final semester I had my first exposure to programming through the computer science and informatics track. It didn’t spark an immediate obsession, but something about the logic stayed with me.
The Gap Years
After leaving school I needed income, so I took whatever was available. An admin assistant role at a small CDMX company gave me my first taste of a professional environment. Later, a recommendation from a former classmate landed me a graphic design position that held for about two years and opened freelance work on the side.
Design taught me something that transfers directly to engineering: systems thinking. Every layout is a constraint problem. Every client deliverable is a scope negotiation.
The Bootcamp Decision
In 2021 I heard about Generation México — a free, competitive programming bootcamp with a presence across Latin America, running its first cohort in Guadalajara. I applied, passed the exam and interview, and started in May of that year.
Three months. A team of four (unusually small — most teams had six or more). We shipped one of the top-ranked projects of the cohort.
When it ended, I didn’t immediately apply for jobs. I asked myself: am I actually good enough yet? The honest answer was not quite.
The Study Phase
From August 2021 I went deep. Platzi, FreeCodeCamp, Udemy — whatever was relevant. I was studying 8 to 12 hours a day, including weekends. I skipped social events to put in more hours. I hit burnout hard and kept going anyway, which in retrospect was the wrong call, but the output was real: I could build full-stack applications end-to-end, debug my own code, read documentation without hand-holding.
First Technical Interview
January 2022. My first serious technical process: a full-stack inventory app (React frontend, Node.js backend), followed by a React/JavaScript interview. The code was clean, the documentation clear. I was congratulated on the submission.
The offer came through. Then the rejection: no university degree meant I couldn’t be hired, not even as an intern. Company policy.
I moved on the same day.
Landing the Job
At 5am, scrolling a Discord server a friend had recommended, I spotted a posting for a remote web developer role at an international company. I messaged the contact directly.
The interview was scheduled for React — or so I thought. When I arrived, the interviewer pivoted: the actual position required Svelte. I had never written a line of Svelte in my life.
They gave me a brief intro to the framework and asked me to consume an API returning Harry Potter character data, render it with specific formatting, and implement the UI. I completed it. The moment that stuck with me: a sorting challenge that neither the interviewer nor I could solve immediately — we hit the documentation together and worked through it. That collaborative debugging session probably mattered more than any of the prepared answers.
Two days later I had three offers: BBVA México, a multinational eCommerce company, and the international firm. I chose the one with the steepest learning curve: English-only, fully remote, international team.
2022 – 2024
I joined on March 14, 2022 and worked there until August 16, 2024 — over two years as a full-stack engineer. I left when I felt I had extracted as much learning as the role could offer and the challenges had plateaued.
What I built there was real: production features, client-facing tools, cross-team integrations. What I carried out was a professional standard for code quality, async communication, and shipping under ambiguity.
The degree gap closed itself through output.