Graduated in mechanical engineering
Fullstack software developer
and mobile developer

Test First Culture

The only way to grant a software reliability and maintainability is through tests. So nothing better than starts with those. Tests are fast and simple, and gives you the safety to refactor your code without fear by letting you know if you are breaking something or not.

Architecture Concern

Some problems with commercial software now days are that MVP not alway is thought in long time terms, and because of that features and the product extensions became more and more difficult to implement and the system becomes a big nightmare.

Feature Documentation

The effect of a feature documentation in a code base is underestimated. Sure if you wrote some feature you know exactly what you've done, but if you don't touch it for 3 weeks? Would you still remember what have you done? All endpoints? All the functionalities? Probably not, so why not document your features and save you some time of studying yur own work?

Summary


About

Has worked from web projects to a mobile and desktop apps. Always looking for the best and pragmatic way to solve the problems in a way that minimize the costs either computational and financial.
Has experience with agile software development such as Scrum and Kanban and real world experience with application's deployment flow.
Has preference for oriented object approach since the most code design patterns were written in OOP languages and lots of clean architecture principles in S.O.L.I.D are more suitable to that paradigm.
Believes that all the code conventions need to be decided consciously and approved by all the people in the development squad or team, and the details of the implementation should be the last concern. The test culture must be present in all projects to grant the reliability of it, and with it the process of code documentation is almost none, since the tests documents the code it self.

"A good architecture maximizes a number o decisions not made... The architecture should make the choice of tools irrelevant."
— from Laracon 2018 by Robert C. Martin


Skills and Good Practices

  • Modeling problems with Domain Driven Design.
  • Test Driver Design development.
  • Monolithic applications.
  • API Rest.
  • GraphQl.
  • Microservice communication.
  • gRPC with Protocol Buffer.
  • API's unit and integration tests.
  • Continuous delivery.
  • Continuous deploy.
  • Semantical versioning.
  • Clean code.
  • Hexagonal architecture.
  • Clean architecture.
  • Agile development such as Scrum and Kanban.

Technologies

  • Golang.
  • Rust.
  • Python3.
  • Java.
  • JavaScript and Typescript with Nodejs.
  • PHP.
  • Docker and Docker-Compose.
  • Continuos Delivery with Jenkins pipeline.
  • Amazon Web Services (Lambda Functions, SNS and SQS).
  • Infrastructure as Code with Terraform.
  • API documentation with Swagger.
  • Linux environment.
  • Git and GitFlow.

Frameworks and Libraries

  • Gorilla Mux & GoRM.
  • Tokio & Diesel.
  • Flask & SQLAclhemy.
  • Unitest & PyTest.
  • Nestjs & TypeORM.
  • Reactjs.
  • Jest & SuperTest.
  • React Native.