I'm a Computer Scientist passionate about solving real problems with technology. I'm working in software enterprises since 2006 t-rex.
My main skill is backend engineering with distributed systems. I'm always studying software architecture and the correlated disciplines as well, like cloud computing and design patterns. Besides that, I love mentoring people and think engineering(culture and outcomes) in a strategical way, aligned with the company's main goals.
To contribute to society solving real problems, as part of a team, by building computer systems that work efficiently, sustainably, and reliably.
- Keep Learning - Always save some time to learn something new. There are two categories of knowledge to learn in parallel: Skills that will help your current job/goals and skills that will help you in your long term goals.
- Evolutionary Architecture/Design - It is important to keep evolutions on the software products. The evolution must be in a sort of aspect: engineering, UX, process, life cycle, operations, etc..
- Change only what is required - Baby Steps, Bottlenecks first - Don’t do change by the change itself. All change must be motivated by a real need, always keeping in mind the user/customer problem. To decide what is required, have collected data and metrics.
- K.I.S.S / M.V.P - When a new product/feature must be released, find the simplest solution to test it with the real users, besides that, document the technical decisions and technical debits that will be used on the evolution/improvement phase of the product life cycle.
- Any idea must be analyzed - No matter if a suggestion was made by the CEO or by a trainee, the idea must be analyzed anyway, without personal bias.
- Backend Engeering
- Java, Groovy
- Spring, Grails, Vert.X, Project Reactor
- Kafka
- Distribuited Systems
- High Volume transaction processing
- AWS
- Relational and NoSQL Databases
- Monitoring tools like: DataDog, NewRelic, LogDNA, LogRocket
- Tech Leadership
- JavaScript and TypeScript with NodeJS