IB Isabel Barroso Agudo

Software developer

Isabel Barroso AgudoI build desktop and backend software with Java and C++.

I hold a higher technical diploma in cross-platform application development (DAM). From February to June 2026 I maintained .NET applications in production at Senda Salud. On my own I have built a playable prototype in Unreal Engine 5 and a remote desktop application in Java. I am looking for my first job as a developer.

Looking for
First job: backend, desktop or games
Location
Castilla y León, Spain
Education
Higher diploma in cross-platform development (DAM)
Languages
Java · C# · C++ · SQL
Revision
October 2026

Projects

Four projects: my DAM final project, two I started on my own and one commissioned by a client.

DAM final projectFinished

Velox: delivery orders for local restaurants

Desktop application for a restaurant to manage its menu, orders and deliveries, with a Telegram bot that customers use to place orders.

Problem
A restaurant that delivers has to keep track of the menu, the open orders and which courier has each one, all at once. Customers want to order without installing another app.
Solution
The operator works in a JavaFX application with the menu, the orders and delivery by postcode zones. Customers sign up and order through a Telegram bot, which listens on its own thread so the interface never blocks. Addresses are validated with the Mapbox geocoding API and data is stored in MySQL 8 through JPA/Hibernate.
What I learned
To design an application before coding it: starting from UML diagrams and an entity-relationship model to reach the MySQL schema. Mapping it with JPA/Hibernate showed me how a layered architecture is organised and how much it matters to model the life cycle of an order properly from the start. I also learned to document a project so that other people can understand it.
  • 10 JPA entities and an order with 6 states. Transitions are validated in a single place in the service layer and every change is written to a history table.
  • Couriers are assigned by hand or automatically from the free couriers in the order’s zone.
  • Operator passwords hashed with BCrypt.
  • 38 JUnit 5 tests, including integration tests on H2.
  • Written report with use cases, class diagram, entity-relationship model, state and deployment diagrams.

Technologies

  • Java 21
  • JavaFX
  • Hibernate/JPA
  • MySQL 8
  • Docker
  • JUnit 5
  • Telegram API
  • Mapbox
Order state diagramAn order goes from PENDIENTE (pending) to EN_COCINA (in kitchen), LISTO_PARA_RECOGER (ready for pickup), EN_REPARTO (out for delivery) and ENTREGADO (delivered). From any of the first four states it can move to CANCELADO (cancelled). Entering EN_REPARTO requires an assigned courier.PENDIENTEEN_COCINALISTO_PARA_RECOGEREN_REPARTOENTREGADOCANCELADO↑ needs a courier
fig. 1 Life cycle of an order, as the service layer validates it.

Own initiativePlayable prototype

Chicken City: a city inhabited by chickens

My first video game, made in Unreal Engine 5 with the aim of selling it.

Goal
Finish a complete game and put it on sale. I set the scope, the design and the schedule myself.
What the prototype has
You start in a barn and can walk around it and out into the city, enter the houses, pick up objects from the ground and keep them in an inventory. The game can be saved, and chickens controlled by the game wander the city. The logic is in C++ and the assembly in Blueprints.
What I learned
To iterate: it began as a simple farm and I rethought it as a city of chickens when I saw that idea had more personality. I wanted to do everything in C++ and ended up combining it with Blueprints, each for what it does best. Building the inventory, object pickup, saving and the characters made me think about how the parts of a game talk to each other.

Technologies

  • Unreal Engine 5.8
  • C++
  • Blueprints
Chicken City in third person: a chicken in a jacket walks across open ground towards another chicken, with red-roofed houses, a fence and a mountain behind.
fig. 2 The prototype running: the city, the houses and a game-controlled chicken in the distance.

Own initiativeWorks on a local network

Remote desktop on a local network

Java application to view the screen of another computer on the same network, always with its user’s permission.

Problem
To help someone with their computer you need to see their screen. I wanted to do it without typing addresses by hand and without anything being shared behind the other person’s back.
Solution
The client looks for machines with a UDP broadcast and lists the ones that answer. Choosing one opens a TCP connection. The host sees a dialog to allow or reject it; if accepted, it sends its screen size and then ten JPEG captures per second, each preceded by its size in bytes.
What I learned
To work with low-level networking in Java: discovering machines over UDP, connecting over TCP with sockets and designing my own protocol to send images. I had to use threads to listen for connections without blocking the application and to handle closing the connection from both sides. I also learned that privacy belongs in the design: nothing is shared without permission and there is always a visible indicator.
  • Explicit permission from the host before anything is shared. If rejected, the socket is closed.
  • A red bar stays visible on the host while the screen is being shared.
  • The host can cut the connection at any time and the client is told it has ended.
  • Current limit: it only works inside the same local network.

Technologies

  • Java
  • TCP sockets
  • UDP
  • Threads
Protocol between client and hostThe client sends BUSCAR_HOST as a UDP broadcast to port 5001. The host answers with HOST, its id, its IP and its name. The client opens a TCP connection to port 5000. The host asks its user whether to allow it. If accepted, it sends the screen width and height and then ten JPEG captures per second, each preceded by its size. When the host cuts, the socket is closed.ClientHostUDP :5001 BUSCAR_HOSTHOST|id|IP|nameTCP :5000 connectwidth, height[size][JPEG] ×10/scut: socket closedAllow?
fig. 3 Messages between client and host, from discovery to close.
Window titled "Sesión remota activa" with a red bar warning that another machine is viewing the screen and a "Cortar conexión" button.
fig. 4 What the host sees while sharing: a permanent warning and a button to cut the connection.

Commissioned by a client

CyberAcademy: from website to desktop application

An academy for learning the most widely used programming languages, with content on networks, cybersecurity and systems.

The commission
The CyberAcademy website belongs to someone else, who asked me to turn it into a desktop application in Java.
How it works
Learners earn experience and achievements and have a level for each skill. That level adjusts to how they solve each exercise: how long they take and whether they ask for hints. Solving bubble sort with a hint raises the level less, or even lowers it.
What I learned
To work on a project I had not created: understanding how it works before touching it, and moving an interface and logic designed for the web to a desktop environment while respecting what the client needed.

Technologies

  • Java
Per-skill level adjustment
MeasuredEffect on level
Time to solveCounts towards the adjustment
Solved without hintsRises more
Solved with a hintRises less, or drops
fig. 5 What is measured in each exercise and how it affects the level.
CyberAcademy skill map: a central node linked to routes for Java, C, C#, C++, Python, JavaScript, networks, systems, databases and cybersecurity.
fig. 6 Skill map: each node is a learning route.
Java route in CyberAcademy: expandable units with completed missions, exercises and a progress of 24 out of 88.
fig. 7 Java route: units, missions and progress.

Experience

  1. Feb – Jun 2026

    Developer intern

    Senda Salud · Salamanca

    Maintenance of production applications with C#/.NET and WinForms, SQL and testing.

  2. Jun – Aug 2026

    Lifeguard

    Surveillance and direct responsibility for other people’s safety.

  3. Jun 2025 – Apr 2026

    Cook

    La Tagliatella

    Kitchen during service: teamwork under tight timing.

Education

  • Higher technical diploma in Cross-Platform Application Development (DAM) · IES Venancio Blanco, 2026

About

My name is Isabel and almost everyone calls me Isa. I studied DAM, and my first contact with real work was maintenance: at Senda Salud the applications were already in production, with people using them.

Before that I worked as a cook at La Tagliatella and as a lifeguard. What I keep from those jobs is working in a team when time is short and taking responsibility for my part.

In my free time I program Chicken City, a game in Unreal Engine 5, and a remote desktop application in Java.

What I work with

Languages
Java, C#, C++, SQL
Desktop
JavaFX, Swing, WinForms (.NET)
Backend and data
Spring Boot, Hibernate/JPA, MySQL
Games
Unreal Engine 5 (C++ and Blueprints)
Networking
TCP and UDP sockets in Java
Tools
Git, JUnit 5, Docker

Contact

I am looking for my first job as a developer. Email is the fastest way to reach me.

isabelbagudo992@gmail.com