I have more than 8 years of experience developing software. I've been working in four big spanish companies; Schibsted, Softonic, Atrápalo and Dinahosting, where I learned how to develop for high availability environments.
Softonic was a great experience because it allowed to me to learn very interesting things about how big companies work, real software life-cycles, continuous integration, code reviews, real TDD, SCRUM methodology...
Then I was working at atrapalo.com, learning about DDD and hexagonal architecture. The developing environment was mainly composed of new technologies (at that moment) such as Vagrant, PHP 5.6, Ansible, RabbitMQ, Jenkins as CI...
Now, I'm working at Schibsted. Here, the tech stack is the biggest in which I worked. The focus of the company is moving all into the micro-services architecture and everybody is open-minded to new ideas.
In me you can find a super active person who likes challenges and knows very well how to work in teams. I love teaching and learning because I love my job and I am passionate about do things in the best way, so I always try to find the cleanest solutions. Also I like to analyze and estimate the cost of different options and the impact of the different approaches to solve problems.
I’m very sociable, I have fitted perfectly with all my colleagues in the different companies that I worked and I'm also very used to communicating with various teams to discuss about achieving our goals in the best way.
I’m completely open to new things, our world is changing very fast and I'm comfortable and happy to work in an agile environment.
I am a big defender of TDD, the clean code rules (SOLID) and about applying all kind of tests in the proper way. Very interested in scalability stuff, reactive programming, high throughput messaging systems...
My first stage at Schibsted was about mentoring and learning. I teached about testing, ports & apapters architecture (AKA hexagonal), how to CI/CD, code review...
At the segundamano.es (later vibbo.com) team, we extracted core features like the search system to a microservices environment and then we were able to iterate that services without worry about the monolith anymore.
We had to deal with typical microservices problem like authentication, logging, alerts, messaging, scaling... I learned a lot about distributed systems, we do client side load balancing with Feign/Ribbon because we use eureka as service discovery. We use hystrix as circuit breaker and RxJava when it fits.Also, we send and receive events to Kafka mainly with Spring Cloud Stream.
In the second stage, my team was part of a global Schibsted project. I was the Tech Lead of one of the teams across multiple offices (Barcelona, London, Marrakech, Mexico and Belarus) developing an internal project for launching new sites easier and faster.
After one year, due to business priorities, Schibsted Spain required the Barcelona teams back, and now, after some reorganizations, I'm working int the core team of milanuncios.com.
As the core we are making the needed automations, designing how to break that monolith and deciding some base guidelines for new developments.
During all my time at Schibsted, I was contributing to a lot of things that are not only related to our team. As we have many products, we have some multi-tenant services that all the teams use. I proposed how these services should talk to each other and the implemented libraries to do it. Also I wrote a RFC (approved) about how we should produce data to Kafka compacted topics in order to be able to replicate needed entities and make creating new services and fast. In milanuncios we are currently implementing replication in that way.
Workflows management with Jira. Software lifecycle management, working in various environments.
Deployments managed with Jenkins.
Development of internal REST APIs using HAL model.
Test-driven development using PhpUnit.
Managing queues systems with RabbitMQ.
Scrum methodology.
My project was the "developer center" that corresponds to https://developer.softonic.com I worked on the whole project, software request form, statistics page (this part is using hadoop), mobile applications import from Google and Apple stores... And maintaining the back office part used to manage the upload software requests.
Development and maintenance of the public API for customers.
Backend development in PHP with Zend Framework, using a corporate ORM and MySql databases.
Improvement of my systems skills due to job nature (hosting company).
Frontend development in HTML5/Javascript.
Develop the mobile version of services management website,using Backbone, underscore, template systems like handlebars and HTML5 APIs like localStorage. All in a modular development with requireJs.
Port HTML5 mobile application to native Android app with Phonegap.