ENGLISH
My name is Javier Hernandez.
I studied a degree in Software Engineering - specialized in Computing - at the University of Alicante, as well as a master's degree in Software Development for Mobile Devices, specializing in iOS.
Everyday, when I develop software, I always try to take into account the following aspects:
- Refinement of tasks with the development team and client, with the aim of discovering the requirements of the different tasks and formulating these requirements in Gherkin format to implement them with frameworks such as Cucumber, in order to ensure that there is a common understanding between client and client. development team (Behavior Driven Development)
- once the requirements are formulated, implement them little by little, based on a design directed by the tests (Test Driven Development)
- Normally, in the discovery and formulation of the requirements, I try to associate them with concepts of the domain problem that we want to solve, in order to obtain an ubiquitous language that allows us to communicate with the different members of a company, and facilitates the modularization of the application (Domain Driven Design)
- The implementation of these tests and the code that is produced as a result of them, must follow the practices of Hexagonal Architecture (using for this the 5 SOLID principles)
- CI/CD/CD process improvements: I always try to find ways to automate and standardize the CI and CD flows we have with the use of new technologies, such as Bitbucket Pipelines or GitHub Actions today.
- task automation: Fastlane, Makefiles, scripting, etc.
- Along with BDD, TDD and DDD, I also like to use event-driven programming (EventBus pattern), in order to make code reactive (with semantics) to system side-effects.
- Management of tasks in order to resolve blockages that may arise on the team.
- Management of the different phases of the development process so that the features established for a given Sprint are achieved.
I define myself as a serious person who likes to always do things as well as possible, following an standard and impersonal process, in order to increase the concept of software symmetry in all possible aspects of a project.
Finally, I always love to study and keep up to date with all the technologies and good practices that can help me improve as a professional.
If you want to collaborate with me, do not hesitate to contact me!
SPANISH
Mi nombre es Javier Hernández.
Estudié el grado de Ingeniería del Software - especializado en Computación- en la Universidad de Alicante, además de un máster en Desarrollo de Software para Dispositivos Móviles, especializándome en iOS.
Durante mi día a día, cuando desarrollo software, siempre intento tener en cuenta los siguientes aspectos:
- refinamiento de tareas con el equipo de desarrollo y cliente, con el objetivo de descubrir los requisitos de las distintas tareas y formular dichos requisitos a formato Gherkin para implementarlos con frameworks como Cucumber, con el fin de asegurar que hay un entendimiento común entre cliente y equipo de desarrollo (Behavior Driven Development)
- una vez formulados los requisitos, implementarlos poco a poco, basado en un diseño dirigido por los tests (Test Driven Development)
- normalmente, en el descubrimiento y formulación de dichos requisitos, intento que estén asociados a conceptos del dominio del problema que queremos resolver, con el fin de obtener un lenguaje ubicuo que nos permita comunicarnos con los diferentes miembros de una empresa, y nos facilite la modularización de la aplicación (Domain Driven Design)
- la implementación de dichos tests y el código que se produce a raíz de ellos, ha de seguir las prácticas de Arquitectura Hexagonal (utilizando para ello los 5 principios SOLID)
- mejoras del proceso de CI/CD/CD: siempre intento buscar formas de automatizar y estandarizar los flujos que tenemos de CI y CD con el uso de nuevas tecnologías, cómo pudiera ser a día de hoy Bitbucket Pipelines o GitHub Actions.
- automatización de tareas: Fastlane, Makefiles, scripting, etc.
- Junto con BDD, TDD y DDD, me gusta usar también la programación dirigida por eventos (patrón EventBus), con el fin de hacer código reactivo (con semántica) ante side-effects del sistema.
- gestión de las tareas con el fin de resolver bloqueos que puedan surgir en el equipo.
- gestión de las distintas fases del proceso de desarrollo con el fin de que las features establecidas para un Sprint determinado se cumplan.
Me defino como una persona seria y que le gusta hacer siempre las cosas lo mejor posible, siguiendo siempre un proceso standard e impersonal, con el fin de aumentar el concepto de simetría software en todos los aspectos posibles de un proyecto.
Por último, siempre me encanta estudiar y estar al día de todas las tecnologías y buenas prácticas que puedan ayudarme a mejorar como profesional del sector
Si quieres colaborar conmigo, ¡no dudes en contactar conmigo!