
Daniel Martínez SeguraIngeniero de software senior, líder técnico y líder de proyecto
Sobre mí
¡Hola! Soy Daniel Martínez y soy un ingeniero de software senior con más de 5 años de experiencia en el desarrollo de aplicaciones web y móviles. He trabajado con múltiples tecnologías como React, Angular y Blazor para desarrollar aplicaciones web escalables y modernas, cumpliendo con los estándares de la industria y las mejores prácticas.
Formación y primeros pasos
En los inicios de mi carrera profesional, debido a que realicé mis estudios en videojuegos, trabajé en el desarrollo de videojuegos y aplicaciones móviles con Unity3D y .NET, marcando el inicio de lo que sería mi carrera profesional en el desarrollo de software. Posteriormente, me especialicé en el desarrollo de aplicaciones tanto web como multiplataforma, utilizando tecnologías como .NET, NodeJS y Typescript, Kotlin o Swift.
Lenguajes y tecnologías
Aunque mis lenguajes más nativos son C# y Typescript, soy una persona apasionada por la ingeniería de software y me encanta aprender nuevos lenguajes, herramientas y tecnologías. Es por ello que amplié mi abanico de posibilidades a Kotlin y Swift para realizar desarrollo móvil nativo. Además, he utilizado algunos otros lenguajes como Python, Rust o Dart para hacer algunos proyectos personales de aprendizaje utilizando herramientas como Flutter, FastAPI o backends con Rust. Puedes ver todas las herramientas que uso en detalle en la sección de tecnologías.
Cloud y ciclo de vida completo
Cuando comencé a realizar proyectos, tuve la suerte de poder contar con la realización de un curso sobre Amazon Web Services (AWS), que junto a la experiencia profesional que he adquirido en Azure y experiencia en proyectos personales con Google Cloud Platform (GCP), me han permitido poder no solo ser desarrollador de software, sino también poder realizar tareas de administración y configuración de cloud. Es por esto y más cosas que me considero un ingeniero de software senior, ya que no solo puedo desarrollar software, sino que soy capaz de realizar todo el ciclo de vida de un proyecto, desde la toma de requerimientos y diseño, hasta el despliegue y mantenimiento de la aplicación, ya sea en cloud o con servidores on-premise.
Servidor propio y proyectos personales
Desde hace unos años tengo un servidor dedicado on-premise al que doy uso para proyectos personales, con el que, junto a lo que aprendí en mis estudios sobre Linux, he podido aprender a administrar servidores y realizar despliegues con tecnologías como Docker, Nginx y Jenkins. Gracias a esto he podido entender todo el proceso que hay posteriormente al desarrollo de una aplicación y cuáles son los pasos a seguir para que el cliente reciba el producto final.
Experiencia profesional y liderazgo
Durante mi experiencia profesional, he tenido la oportunidad de liderar proyectos con equipos de desarrollo, lo que me ha permitido adquirir una visión más allá del software de una aplicación, como es identificar y comprender las necesidades de cada proyecto y su negocio. Además de esto, en diferentes equipos se me ha asignado como líder técnico gracias a que soy una persona que realmente disfruta su trabajo y trata de ser mejor constantemente, tomando la responsabilidad de qué tecnologías y técnicas de desarrollo se eligen a la hora de lanzarse a por un producto.
Proyectos
A lo largo de mi carrera profesional he trabajado en diferentes proyectos con diferentes empresas y particulares. En esta sección encontrarás todos esos proyectos en los que he trabajado
Debido al gran trabajo que desarrollé al inicio de mi etapa con ellos me nombraron líder técnico, tomando el rol de decisión de tecnologías e implementación de herramientas para el proyecto.
Este proyecto se realizó con Angular y .NET, utilizando técnicas de código limpio y arquitecturas escalables con la ayuda de Mediator y NSwag entre otros.
El proyectó estaba centrado en el ecosistema .NET principalmente con Blazor y Web APIs, aunque posteriormente empezamos a usar React con NextJS. Utilizamos arquitecturas DDD (Domain Driven Design) junto con herramientas como Mediator o FluentValidation. Debido a que el cloud que usábamos era Azure, aprendí a fondo como usar Azure y su integración con backends para securizar y hostear aplicaciones.
Gracias al curso que me dieron en mi etapa en CryptoWarTanks sobre AWS, y ser nombrado líder de proyecto, utilizamos el cloud para securizar y desplegar nuestras aplicaciones mediante técnicas de globalización y entrega de contenidos ya que teníamos usuarios en España y en Perú entre otros. Principalmente usamos .NET con Web APIs y Blazor para la realización de las aplicaciones web, aunque posteriormente se usó Angular para algún proyecto. Además, investigué a fondo las bases de datos no relacionales con MongoDB para mejorar el rendimiento de lectura de la aplicación.
En esta empresa estuve involucrado en el desarrollo de una aplicación móvil con Unity3D para realizar mediciones de conducción eficiente mediante gráficos y el uso del gps y acelerómetro del dispositivo, guardando la información de las rutas realizadas en coche y analizando el uso del acelerador y el freno junto a la distancia recorrida y otros parámetros para así sacar métricas de uso.
CryptoWarTanks
CryptoWarTanks
Debido a que el presupuesto era ajustado, realicé todas las labores de software disponibles
- Desarrollo completo de videojuego multijugador con Unity3D y Photon
- Desarrollo de página web con React y Vite junto a Metamask para venta de NFTs asociados a una cartera virtual de Web3
- Desarrollo de una criptomoneda con Solidity en la blockchain y contratos para generación aleatoria de NFTs en base a una compra
- Backend con .NET para gestión de monedas ganadas en partidas y usuarios
Durante esta etapa recibí un curso sobre AWS mediante el cual hosteamos el backend y la web con un CDN para despliegue global y gestión de recursos necesarios como podía ser la base de datos.
Labotec Games
Labotec Games
Durante esta etapa estuve implicado en la gestión de equipo de modelados 3D, sonido y desarrollo para asegurar que los desarrolladores de Unity tuviéramos todo lo necesario para poder avanzar con el videojuego que estuviéramos desarrollando. Desarrollamos un videojuego para consolas y ordenador en el cual estuve implicado en la implementación de Photon para realizar el modo multijugador online.
Tecnologías
Durante todos estos años que llevo trabajando en proyectos he aprendido una gran cantidad de herramientas y procesos que me han llevado a poder desarrollar un producto de principio a fin y en una gran cantidad de escenarios, siempre manteniendo una gran calidad en mis desarrollos y pensando en la escalabilidad del mismo.
A continuación podrás observar qué lenguajes de programación, herramientas e infraestructura utilizo en mi día a día y otras en las que he indagado de manera personal para seguir creciendo profesionalmente
Desarrollo de software
Desarrollo de software
Mi lenguaje más nativo es C#, el cual está incluido en el paquete de .NET. Con el fue que aprendí a programar y entender los fundamentos del desarrollo de software, comenzando con los videojuegos con Unity3D y posteriormente realizando páginas web y aplicaciones sencillas multiplataforma con MAUI. En los inicios con Unity y .NET aprendí mucho sobre optimización de código, ya que los videojuegos son muy frágiles en cuanto a rendimiento, conocimientos que luego me sirvieron a la hora de hacer webs y apis bien organizadas y con muy buen rendimiento. Dentro de .NET también he realizado proyectos (aunque personales) con F# para aprender sobre programación funcional y su integración en el ecosistema de Microsoft.
En segundo lugar tenemos a TypeScript para realizar desarrollo web. Aunque es cierto que comencé con JavaScript, el problema de este lenguaje es el caos que genera su desarrollo en proyectos más grandes. Es por esto que siempre uso TypeScript en mis desarrollos, aportando ese orden y limpieza que JavaScript necesitaba. Entre las herramientas que más uso con TypeScript se encuentran React con NextJs, Angular y Capacitor para desarrollo multiplataforma. Si bien comencé mis primeros pasos en desarrollo web con Blazor en .NET, rápidamente pasé a aprender React y Angular ya que está mucho más integrado a nivel mundial y creo que es más óptimo a nivel de desarrollo.
Por último, también desarrollo aplicaciones multiplataforma nativas con herramientas como Kotlin Multiplatform (usando SwiftUI y Jetpack Compose nativo) o Flutter. Ha sido mi último gran descubrimiento, con el cual estoy disfrutando mucho realizando mis propias aplicaciones nativas para subirlas a google play store y app store.
Infraestructura
Infraestructura
Por otro lado, utilizado muchas herramientas que para mí son básicas en el ciclo de vida de cualquier aplicación como son las bases de datos, los contenedores y los servicios de mensajería entre otros. Es por eso que conozco a fondo tanto bases de datos relacionales con SQL Server o PostgresSQL entre otras como bases de datos no relacionales con MongoDB.
Por último, respecto a los servicios de mensajería el que más he utilizado es RabbitMQ para delegar tareas en segundo plano como envío de emails o post-procesado de imágenes en servidor, y en cuanto a contenedores utilizo Docker, no solo para desplegar mis aplicaciones si no para tener un entorno de desarrollo unificado y fácil de ejecutar.





