Six months owning a production backend

My first six months in a real codebase, and what they changed about how I think about code, tests and other people.

I spent six months this year as the backend intern at IREC, Catalonia's energy research institute, on MAKING PEDs, a project that uses digital twins to plan energy for buildings and districts. The stack was the one I'd been studying at university: Python, FastAPI, Celery, Redis. What I hadn't studied was everything around the code. This system had users, history and consequences, and working on it taught me things the degree hasn't.

The first weeks I shipped nothing

University exercises start from an empty file you created yourself. This codebase came with years of other people's decisions. My first weeks I shipped almost nothing: I ran the app, followed requests from entry to result and asked a lot of questions. It felt slow. Then I noticed my questions were getting sharper, and that reading unfamiliar code without panicking is a skill, one the degree never grades.

Tests stopped being homework

At university, tests were the thing you wrote at the end if there was time. Here they were the reason I could change things at all. Some parts of the system failed in ways I couldn't reproduce by hand, like asynchronous tasks that broke intermittently. Those bugs used to scare me. What made them ordinary was boring and repeatable: read the logs, write one small test, change one thing at a time. By June, a bug that would have ruined my week in January was just a Tuesday.

Code is a team sport

The change I didn't expect was how much of the job is talking. When the thing you touch is used by someone else, you explain before you edit. I learned to say what I was about to do and why, to ask when a decision wasn't mine alone, and to write things down for whoever comes next. Before leaving I put together a handover document: what works, what's proven, what's still open. Keeping "integrated" and "validated" separate took some honesty, and it means the next person can trust the document instead of trusting me.

What's next

I'm finishing my informatics degree (early 2027), and I'm looking for my first full-time backend role. In the meantime I'm going deep on Go, distributed systems and databases, in public, which is what this blog is for. If that sounds like someone you'd want on your team, my inbox is open: romeuesteve@gmail.com.

← all posts