Senior Software Engineer2020 - PRESENTEmburse
Technologies: Test-driven Development (TDD), AWS S3, Continuous Delivery (CD), Continuous Integration (CI), TypeScript, AWS Chalice, React, Jenkins, GitHub, Gradle, Java, Amazon SQS, AWS Push Notification Service (AWS SNS), AWS DynamoDB, AWS Lambda, Python 3
- Led the development of a platform that allows customers from different business units to issue local/international payments to their end-users through a set of shared components (APIs, UI widgets, and async events) that integrate with TransferWise.
- Took part in the definition of general API structure/standards and Python development practices to have a uniform way of consuming and developing our AWS Lambda functions across different teams and projects.
- Collaborated with the engineering and product departments of multiple business units to define API/message contracts that would satisfy most of the different use cases, with the goal of parallelizing work between clients and producers.
Senior Back-end Developer2017 - 2020Nexonia
Technologies: AWS S3, TypeScript, Test-driven Development (TDD), Continuous Delivery (CD), Continuous Integration (CI), Domain-driven Design (DDD), Modernization, REST API, React, Bitbucket, Jira, Jenkins, AWS EC2, Gradle, RabbitMQ, PostgreSQL, Kotlin, Legacy Code, Spring Boot, Java
- Laid the groundwork to use dependency injection in different contexts of our legacy applications, and provided guidelines to apply its best practices in our more modern Spring Boot applications.
- Introduced the concept and some implementations of the Strangler Pattern to allow the team to gradually migrate a legacy architecture to a more modern one over time, piece by piece.
- Actively coached other developers on different areas such as tools, design, and architecture.
- Introduced and applied concepts of hexagonal and onion architecture as ways to better separate infrastructure and domain code, opening the door to easier maintenance in either layer and reuse of domain logic under different scenarios.
- Reduced daily ERP account sync time from eight hours to less than one hour for one of our biggest customers by introducing differential syncs with low impact changes in legacy code.
- Improved execution of several daily long-running monolithic tasks by parallelizing processing across different workers, improving processing time and memory consumption per machine.
- Introduced Kotlin as a JVM alternative language for some of our newer back-end services.
- Worked closely with the principal engineer and lead DevOps to refine architectural decisions and create the needed infrastructure/tools that allow other engineers to apply them.
- Proposed changes in our code review and merge strategy processes to make pull requests smaller, more frequent, more focused, and easier to review.
- Maintained and developed functionality in the context of Agile.
Java Software Developer2017 - 2017Solutions Medias 360
Technologies: Test-driven Development (TDD), Socket.IO, Continuous Delivery (CD), Continuous Integration (CI), MySQL, MongoDB, Elasticsearch, Bamboo, Maven, Node.js, Single-page Applications (SPA), AngularJS, Amazon SQS, AWS Push Notification Service (AWS SNS), AWS S3, Redis, Hibernate ORM, Spring Boot, Java
- Developed functionality and bug fixes for different microservices used by multiple web and mobile applications using Spring technologies, Hibernate, Redis, and JAX-RS/CXF.
- Developed functionality and bug fixes for a front-end application using AngularJS, with a Node.js back-end serving as the API bridge between the web application and the different microservices' APIs.
- Integrated some of our pre-existing business logic with an external partner application using an event-driven architecture based on AWS SNS and SQS.
Java Software Developer2015 - 2017Nexonia
Technologies: Legacy Code, Gradle, Jenkins, Bitbucket, PostgreSQL, Google Web Toolkit, Java
- Worked as a full-stack developer on the development of an enterprise time and expenses management web application.
- Maintained the existing code base by fixing reported issues and providing a detailed description, cause, and steps to reproduce for them to make them easier to understand, test, and deploy by the QA team.
- Led the development of two refactoring projects by doing extensive analysis, providing clear documentation, and distributing the tasks accordingly within smaller subsets of the web/server team (developers and testers) to meet the planned deadlines.
Full-stack Developer2014 - 2014Khalis Foundation
Technologies: MySQL, CSS, jQuery, Kohana, PHP
- Developed Keertan Network, a Sikh multimedia search engine that allowed users to search, upload, play, and categorize several types of audio media files.
- Wrote algorithms that analyzed data from audio and/or parsed CSV files to automatically fill basic track information and create associations with existing database records.
- Created a parser for evaluating custom SQL-like expressions used to define the descriptions of displayed tracks.
Full-stack Developer2012 - 2014Siaconca
Technologies: PostgreSQL, Hibernate ORM, Google Web Toolkit, Java
- Worked as a full-stack developer and designer for an enterprise web application aimed at the car dealership industry.
- Designed and implemented user interfaces using Sencha GXT and GWT, with their corresponding back-end processes using Java EE.
- Used the Hibernate ORM framework and query language to communicate with the application's data layer while maintaining compatibility with PostgreSQL and Oracle databases.
- Created an in-house tool to dynamically design, generate and export .xls reports based on data found on the application’s database (tables, views, and stored procedures) and the user’s input.
- Improved account login security by implementing 2-step verification and a schedule-based system to allow login hours or days depending on the user’s account privileges.