Perception

Overview

  • First fully remote position, requiring adaptation to a digital-only workflow and the ability to integrate into company culture without in-person contact.
  • Progressed from backend intern to full-stack developer, assuming broader technical and organizational responsibilities.
  • Gained strong foundations in software architecture, applying Domain-Driven Design (DDD), hexagonal architecture, and CQRS principles in production systems.
  • Contributed to backend systems using Symfony, RabbitMQ, and Elasticsearch, while later leading frontend initiatives with Next.js.
  • Developed internal automation tools to accelerate project setup and improve developer efficiency, one of which was later adapted and reused in a different company.
  • Expanded scope into server management, deployment automation, and client communication, demonstrating versatility and ownership.
  • Built key products such as Planeta de Libros, integrating complex server-driven UI and CMS-style content scheduling.
  • Promoted multiple times due to initiative, technical growth, and consistent delivery before transitioning to a new role focused on AI development.

Short Summary

At Perception, I evolved from an intern into a full-stack developer, mastering backend and frontend development within a mature engineering culture. It was my first remote role and a period of rapid growth in software design, autonomy, and leadership.

Key Takeaways

  • Deep exposure to enterprise-grade software architecture and design patterns.
  • Learned the value of mentorship, structured onboarding, and feedback cycles.
  • Improved team productivity through automation and tooling initiatives.
  • Transitioned from backend to full-stack, bridging technical and client-facing roles.
  • Gained remote collaboration and cross-functional communication skills.
  • Foundation for later advancement into AI-focused software engineering.

Experience

Perception was my first step into professional web development. I began as an intern and was later hired full-time, gaining more autonomy and responsibility. The company had over 30 years of experience building custom web applications for clients across diverse sectors, which meant their technical and architectural practices were already well established.

When I first joined the company, I was assigned a senior backend developer as a mentor of sorts. He made me realize the importance of mentorship and a solid onboarding process. I was given courses, regular feedback, and opportunities for pair programming. That onboarding phase became a major boost to my career.

I learned about software design patterns: we followed clean-code practices and worked under a Domain-Driven Design philosophy, using hexagonal architecture and applying CQRS to our business logic. I also learned about technologies such as Elasticsearch and message queues with RabbitMQ.

After some time, I was given more autonomy and could pursue my own improvement ideas. For example, when I noticed we were spending an hour setting up a new codebase, I developed a fork of PHP Maker Bundle to create projects in minutes. I later built a similar tool using Cookiecutter and Python at Delectatech. Developers at both companies appreciated the solution and contributed to it.

I also expanded into responsibilities beyond backend development. I began managing servers and deployed services, learning about Supervisor and other industry-standard tools for deploying code to a VPS. At one point, I covered for a colleague on leave who handled client communication, which meant gathering requirements, creating tasks, and executing them myself.

I had dabbled in some frontend work with plain JavaScript, but after discussions with other developers, we pushed for adopting a frontend framework. We chose Next.js, which we used to build the popular Planeta de Libros website. It was a fascinating challenge to delve more seriously into frontend development; the client wanted a server-driven UI where they could manage and schedule entire page blocks from a management application.

I left the company after two and a half years and, if memory serves me right, three promotions, to take a similar full-stack position at Delectatech and pursue the opportunity to work with AI.