Gabriel Sánchez Micó

Portrait of Gabriel Sánchez Micó smiling, wearing an orange beanie and hoodie

Software EngineerJava Backend · Spring · Oracle · Legacy Modernization

5+ years modernizing and maintaining critical Java applications in production. I diagnose complex issues, design the minimal necessary change, and evolve legacy systems without compromising stability.

About me

Software Engineer specialized in Java backend development, evolutionary maintenance and modernization of enterprise applications, with 5+ years working on production systems within the Java ecosystem.

My work centers on understanding existing applications, pinpointing incidents precisely, building new functionality, and progressively modernizing legacy systems without compromising their stability.

I've worked with Java, Spring Framework, Spring Security, Hibernate/JPA, Oracle, Maven and Tomcat, alongside complementary frontend and integration technologies.

I favor maintainable solutions over impressive ones: I reuse existing architecture before introducing new abstractions, and avoid complexity that doesn't solve a real problem.

Experience

  1. June 2023 – Present

    Full Remote

    Nunegal ConsultingCurrent role

    Software Engineer

    Evolved and maintained the Java backend for management and traceability applications. Led the migration from Java 8/Tomcat 8 to Java 11/Tomcat 9, improving performance. Designed security mechanisms with Spring Security, audit trails with Hibernate Envers, and document generation decoupled from the domain. Implemented blockchain integration via smart contracts and collaborated with NestJS/Angular teams.

    • Java 11
    • Spring Framework 5
    • Spring Security
    • Hibernate
    • JPA
    • Oracle
    • Maven
    • Tomcat 9
    • JUnit
    • Mockito
    • Git/GitLab
  2. May 2022 – June 2023

    Full Remote

    Bilbomática, an Altia Company

    Software Engineer

    Evolved and maintained enterprise Java applications, integrating them with other systems. Contributed to migrating a WordPress site to Magnolia CMS. Took sole ownership of maintaining and evolving a legacy Java 6 application.

    • Java 8
    • Java 6
    • Spring 4
    • Magnolia CMS
    • WordPress
  3. July 2021 – May 2022

    Madrid, Spain

    Capgemini

    Software Engineer

    Corrective and evolutionary maintenance of enterprise applications: incident investigation, new feature development with Java 8/Spring 4 and JavaScript (jQuery), and integration troubleshooting across systems.

    • Java 8
    • Spring 4
    • Oracle
    • SQL
    • JavaScript
    • jQuery
  4. March 2021 – May 2021

    Valencia, Spain

    Health in Code

    Software Engineer

    Built two applications for processing and writing files derived from DNA sequencing, with an Angular 11 web client for real-time data reading and visualization.

    • Java 8
    • Spring 4
    • Angular 11

Education

2019 – 2021

Higher Technician in Multiplatform Application Development

Progresa Centro de Formación Profesional CIEEP

Expertise

Java Backend
Designing and maintaining services, controllers and repositories with Java and Spring.
Legacy Modernization
Progressive migrations (Java 6 → 8 → 11, Tomcat 8 → 9) that preserve compatibility.
Debugging
Investigating complex incidents down to their root cause.
Refactoring
Improving maintainability and separating responsibilities when there's a clear technical reason.
SQL / Oracle
Complex queries, filters, aggregations and optimization on Oracle.
System Integration
Integrating Java applications with external services, including blockchain and smart contracts.
Application Security
Spring Security: authentication, authorization and request-validation filters.
Testing
Unit testing with JUnit and Mockito focused on code quality.

Achievements

Representative milestones from my career.

  • Designed periodic processes, judging when a simple scheduled task was enough versus when Spring Batch was justified by data volume.
  • Improved file-upload security by validating actual content via binary signature checks, not just file extension.
  • Designed document generation decoupled from the domain, supporting multi-page documents and variable data collections.
  • Migrated the version-control workflow from SVN to Git/GitLab, adopting branches, releases and tags.
  • Maintained applications across four technology generations simultaneously (Java 6/8/11, Spring 4/5, Tomcat 8/9) without losing stability.
  • Optimized SQL queries on Oracle for large-volume data analysis and temporal queries.

How I work

When I pick up a feature or an incident, I try not to jump straight into writing code.

PassedPipeline · how-i-work.ymlRuns on every new incident or feature
  1. stage 01

    Understand

    Understand the real problem and which parts of the system are involved before touching any code.

    • Understand the real problem
    • Locate which parts of the system are involved
    • Review how the project already solves similar problems
    • Identify which contracts need to be preserved
  2. stage 02

    Solve

    Design the minimal necessary change, reusing what exists and separating responsibilities where it adds value.

    • Assess whether reusable code exists
    • Design the minimal necessary change
    • Separate responsibilities when the change justifies it
    • Implement
  3. stage 03

    Improve

    Test normal behavior and edge cases, and improve only what genuinely needs it.

    • Test normal behavior and edge cases
    • Review whether the solution introduces unnecessary complexity
  4. stage 04

    Deploy

    The change reaches production without compromising system stability.

    • Stable in production

Things I'm proud of

Understand before you change

Software that already exists

I know how to work with software that already exists: understanding applications written by other people, tracing a problem back to its source, and changing only what genuinely needs to change.

  • Sole ownership of maintaining a Java 6 application.
  • Led the migration from Java 8 to Java 11 and from Tomcat 8 to Tomcat 9.
  • Kept legacy applications running in production without compromising stability.
  • Designed audit, traceability and security mechanisms with Spring Security.
  • Integrated Java applications with blockchain and smart contracts.

Challenges I'm looking for

I find these kinds of problems especially interesting:

  • This works almost all the time, but fails in specific situations
  • We have an old system and need to add this feature without breaking what already exists
  • This part of the code has become hard to maintain
  • We don't know exactly where this incident originates
  • This query works, but it's starting to struggle as data volume grows
  • We need to modernize this application, but we can't rewrite it from scratch
  • We need to integrate this system with another without fully coupling them

What's next

Areas I'm actively growing in:

Modern Java
Going deeper into modern language versions after years on Java 6, 8 and 11.
Architecture
Architectural decisions at scale: modular monoliths versus independent services.
Performance
Profiling, JVM tuning and systematic bottleneck analysis.
Concurrency
Concurrency, parallelism and asynchronous processing in the Java ecosystem.
Testing
Evolving toward integration testing, contract testing and Testcontainers.
Docker / CI/CD
Containers, reproducible deployments and observability.

Hire me

I add the most value on Java backend projects: evolutionary maintenance, legacy application modernization, and solving complex problems.

Soft skills

Ownership
Took sole ownership of maintaining and evolving a Java 6 application.
Analytical thinking
I'd rather find out why something doesn't work than mechanically implement a closed spec.
Collaboration
I've solved incidents alongside different technical profiles and worked closely with NestJS and Angular teams.
Judgment
If the problem can be solved by touching one component, I don't touch five. Every abstraction has to solve a real problem.
Open to feedback
I value code review and technical discussion: decisions get justified, and everyone learns from everyone.
Adaptability
I've worked across different technology generations (Java 6, 8 and 11; Spring 4 and 5) and adapt to what each project needs.

Let's talk

Tell me briefly about the project or role and I'll get back to you by email.