Basic Information | |
---|---|
e-Mail: | [email protected] |
Website: | http://www.devsdmf.io |
LinkedIn: | https://www.linkedin.com/in/devsdmf |
GitHub Profile: | https://github.com/devsdmf |
SpeakerDeck: | https://speakerdeck.com/devsdmf |
Experienced software architect/engineer, focused in scalable and distributed software design/development, advocating for the software development best practices, using TDD and BDD in a daily-basis. Specialist in backend engineering with technical-background in C/C , Java, PHP, Python, JavaScript and Scala, with experience in MySQL, MongoDB, Redis, DynamoDB, ElasticSearch, ActiveMQ, Kafka streams, Amazon Web Services (AWS) and more. Also, with experience designing distributed systems using DDD and other architectural and software engineering approaches like Event Sourcing, Event Collaboration and Actor Model-based systems.
Twilio is the leading customer engagement platform, providing products and tools to send SMS, WhatsApp, place calls, video conferences and others. At Twilio, I've worked on the Professional Services organization, helping customers to be successful using Twilio providing:
- Architecture design to solve customer's problems using Twilio products
- Technical advisory on product usage, best practices and troubleshooting
- Development of reusable assets used as sample code / quickstart for new customer projects
- Development of Twilio Flex plugins to customize Twilio's contact-center solution using ReactJS and NodeJS
- Documentation of architecture design decisions along with other SAs
Twilio Products:
- Flex
- Frontline
- Functions (Serverless)
- Programmable Messaging (SMS, MMS, WhatsApp)
- Programmable Video
- Studio
- Sync
- TaskRouter
Technology Stack: NodeJS, Java, Python, React
Sensedia is an API platform that offers professional consulting services in software architecture and backend development, and in this role I'm working as a consultant for a customer in the payment processing market, and my main responsibilities consists in:
- Analysis, design and development of a scalable, reliable and secure platform to develop payment-processing and banking services including automation, testing and software develivery tools
- Design and implementation of reference architectures that meets the requirements of the product engineering teams
- Teach the developers how to use the available reference architectures and platform services
- Analysis, development and documentation of libraries to access and use the available platform services
- Perform consulting sessions with the product engineers, helping them to design the product architecture using the available platform services
Technology stack: NodeJS, TypeScript, Python, Microsoft Azure, Docker, MongoDB, Redis, etc.
Sympla is the biggest SaaS ticketing platform in Brazil, and in this role I'm acting as the principal architect in the Engineering department, currently working in the whole platform architecture, migrating from a monolithic to a service oriented architecture approach. As a senior software engineer and principal architect, my main responsibilities consists in:
- Analysis and design of business domains with product managers and analysts in order to identify the necessary services to compose the system's architecture.
- Analysis, development and improvement of the existing software development processes with engineering managers enabling the squads to being high performers.
- Analysis, development and documentation of new software systems using PHP, Java and Python to improve the product experience.
- Research and development of new technologies and architectural patterns to solve complex problems in a scalable and maintainable way.
Technology stack: PHP, Java, Python, JavaScript (NodeJS), Docker, Kubernetes, Rancher, MySQL, MongoDB, Redis, AWS Kinesis, ElasticSearch and more.
After finished my job as a Technical Product Manager, I've got back to my previous role as a Software Architect, now working in the Fulfillment and Shipments team, responsible to:
- Analysis and development of internal and external system integrations for the existing shipping carriers through the new technology stack using Java and Scala, addressing scalability and reliability issues.
- Maintainance of the existing systems in the core platform to keep backward compatibility with the existing shipping carriers.
- Analysis, design and development of new software systems to support the company strategy for shipments, including new services to manage fulfillments through a public API.
- Attend to product architecture commitee meetings in order to discuss and help other software architects to design and address common issues between different business domains.
Technology stack: PHP, Java, Scala, JavaScript, MySQL, MongoDB, Docker, Akka, Apache Kafka and more.
As a Technical Product Manager, I've got the challenge to build a new engineering team from scratch. The Ecosystem team had the mission to enable customers and partners to extend our product through public APIs in order to solve complex business problems. In this position I was responsible to lead the development of an API-based product, where I had to:
- Collect meaningful inputs from both internal and external stakeholders to develop a product backlog.
- Prioritize the product backlog using different strategies, always looking for the company OKRs.
- Support a team of product engineers and product designers, running daily, weekly and monthly-based rituals and meetings in order to complete the product backlog.
- Provide team both technical and behavioural feedback through retrospective meetings and performance review sessions, enabling them to be high performers.
- Technical writing of API documentations, developer resources and releases of new features delivered in production.
- Development and maintainance of SDKs and sample projects that serves as tools and reference to developers that are aiming to integrate with out public API.
Tiendanube is an ecosystem of services that provides products to build e-commerce systems through an intuitive and extensible platfrom that makes it easy to start your online business.
As a Software Architect, I've got to tackle the challenges in the Consumers team, responsible for the purchase experience. I've worked to achieve the best solution for architectural problems in the migration process from a monolithic to a service-oriented and micro-services architecture. My main responsibilities were:
- Analysis, design and development of a new service responsible to process consumer's payments, aiming to replace the actual solution inside the monolith platform in PHP. This new micro-service was developed using a Scala based stack, implementing Actor Model using Akka framework, MongoDB for the persistence layer for the event sourcing and ActiveMQ for IPC.
- Attend to Product Architecture Comitee meetings in order to help other architects to design the macro-architecture of the company products, using DDD to split the monolith in domain-oriented services.
- Design, define and document IPC's for both internal and external integrations.
Technology stack: PHP, Java, Scala, MySQL, MongoDB, Docker, Akka, ActiveMQ, Redis and more.
For the last two years in company, I've acted as the Lead Engineer in the web/mobile platform team, being responsible for:
- Analysis, design and development of the backend architecture for the mobile e-commerce platform
- Help other engineers as a technical reference for the product development and key decision advisor
- Research and development of tools and frameworks for the engineers working in the platform
- Management and prioritization of the product backlog in a technical view along of the product leads and company executives
Technology stack: PHP, Python, JavaScript (NodeJS), MySQL, MongoDB, Docker, Redis and more.
One year after starting my job in the company and with the team growing I've got a set of new responsibilities, now focused in the backend architecture and development, and also the platform stability in production environments. Now, beyond the software development responsibilities, I was also responsible to:
- Monitor and maintain the e-commerce platform infrastructure doing performance tweaks in order support large processing times needed by background tasks dispatched by internal system components, also doing security fixes in order to platform reliability and security.
- Implement and maintain a self-hosted version control system (GitLab).
- Research and analysis of new technologies to be used in our backend stack.
- Develop and maintain a fresh new mailer service to be used by the new version of the CRM platform that was being developed by the another team. This new mailer service was named AwMailer and was developed using PHP and C . The core functionality now is an open source project available at GitHub, but the internal extension for outgoing IP address balancing stills a proprietary project.
Technology stack: PHP, C Ansi, Python, JavaScript (NodeJS), MySQL, MongoDB, Redis and more.
ISET is a technology company from Belo Horizonte, Brazil, that provides digital products to its customers. The main product is an e-commerce platform (iShopping), integrated with other company products like CRM (iMarketing) and chatting (iChat) systems.
As a software engineer, I started to work with the e-commerce and chatting platform, mainly responsible to:
- Maintain and implement new features in the e-commerce platform using PHP as the main language.
- Maintain and implement new features in the chatting platform using PHP and JavaScript.
- Integrate partner's services into the e-commerce core platform, like payment gateways, shipping carriers and new sales-channels, to improve the merchant's experience.
- Develop and maintain internal tools to help other teams to integrate their products into the ours.
- Implement a new contracting system for the company products from scratch using PHP, BackboneJS with MarionetteJS as the technology stack.
Technology stack: PHP, JavaScript, MySQL, Redis and more.
Caravane was a social-travel startup based in Belo Horizonte, that offers a platform to organize and manage caravans (a shared-trip model). I was one of the co-founders and I've worked mainly as a hands-on CTO along of the other founders. My main responsibilities was:
- Research the technology application to meet the market needings with help of the other founders.
- Prioritize along of the other members the product backlog.
- Develop the MVP for market validation, mainly in PHP and NodeJS for backend and vanilla JS and HTML for the frontend.
- Build and validate dashboards with product metrics provided by monitoring and product analysis tools.
Aplus Tecnologia is a web-development agency where I mainly worked as a software developer.
This was my first experience as a full-time software developer, where I had the opportunity to learn more about the software development process from the initial analysis of a customer’s problem, to the delivery of the software artefact in the production environment. During this time, my main responsibilities was:
- Research and implement new technologies from scratch to meet the business requirements of each company’s customer.
- Analysis and technical documentation of the software development process.
- Develop web applications using PHP, Ruby and JavaScript.
- Maintain and improve two company products, a local guide website for restaurants and pubs and an ERP software.
- Deployment and monitoring of applications running both in VPS and shared-cPanel based hosting servers.
This was my first IT job, I was a course instructor in a local school, teaching classes about computer-related topics, the classes was mainly:
- Basic Computing: How to use a personal computer to do simple tasks like internet browsing, e-mail conversations, write documents, spreadsheets and slide presentations using Microsoft Office's software suite and so on.
- Advanced Computing: How to setup a computer for the work environment, how to manage computer files and its different formats and compression tools, how to manage data using Microsoft Office Access, and so on.
- Web Design: Classes about design and coding web pages using basic HTML and CSS techniques.
- Web Development: Classes about web development using PHP and MySQL databases.
- Hardware e Computer Maintenance: Classes about the computer components, how to setup a new computer from the scratch, backup techniques and broken component replacements.
- Setup and Administration of Computer Networks: Classes about network setup using Microsoft Windows Server, Active Directory configuration and also the configuration of network devices like routes, repeaters and hubs.
Pontifical Catholic University of Minas Gerais (Jan 2015 - Jun 2017 / Hold)
Polytechnic School of Minas Gerais (Jan 2009 - Dec 2011)
Microsoft Student to Business (Jul 2011 - Dec 2011)
- Programming/Scripting Languages (separated by proficiency):
- Advanced: C/C , Python, PHP, JavaScript (NodeJS), Shell Script
- Intermediate: Java, Scala, C
- Basic: Ruby, Go, Rust
- Frameworks and Tools (separated by language/technology):
- PHP: Symfony, Zend Framework, Silex, Laravel, CodeIgniter, Slim Doctrine, PHP Core Extension Development
- Java: Spring, Springboot, Play
- Scala: Play, Akka, Artery
- C : Boost, Qt
- JavaScript: jQuery, BackboneJS (and Marionette), AngularJS, Elm
- CSS: Sass, Less
- NodeJS: ExpressJS, SailsJS, Socket.io
- Hybrid Mobile Development: PhoneGap, Ionic
- Python: Flask, NumPy, SciPy, PyAudio
- Database and Object Storages: MySQL (and MariaDB), MongoDB, DynamoDB, Cassandra, Redis, Memcached
- Operating Systems: Linux, OSX, Windows
- Web Servers: Apache, nginx, Tomcat
- Versioning: GIT
- Infrastructure: AWS, Google AppEngine and Google Cloud Plaftorm
- Methodologies and Patterns: RESTful, OAuth, JSON, XML, OOP, SOLID, Design Patterns, Self-Documenting, Scrum, XP, Continuous Integration, Continuous Delivery, TDD, BDD
- Plus Experience: API Design, Scalable Software Architecture, Cloud Infrastructure Engineering, SaaS, PaaS, IaaS, Microservices Architecture, Distributed Software Architecture
- Module Audio Extension - A PHP extension to play module audio files in CLI environment. (https://github.com/devsdmf/php-mod-player)
- DataMonkey - Simple ORM for PHP projects built on top of Doctrine. (https://github.com/devsdmf/datamonkey)
- AwMailer - Mailer service for mail marketing applications that allows you control your campaign, processes, custom message body, HTTP headers and some other features. (https://github.com/devsdmf/awmailer)
- Slice HTTP Library - A thin PHP Library to perform HTTP requests (https://github.com/devsdmf/slice-http)
- Symfony Framework - The Symfony PHP framework (https://github.com/symfony/symfony)
- Zend\Cache Silex Component - Cache provider for Silex framework (https://github.com/devsdmf/silex-zend-cache-provider)
- more on my GitHub
- Framework-agnostic Code (Cover Article) - https://issuu.com/imasters/docs/imasters_28_v5_issuu
- The Journey of a PHP Developer - https://medium.com/@devsdmf/the-journey-of-a-php-developer-682e13e7c7cd
- Vamos Seguir os Padrões? - https://medium.com/@devsdmf/vamos-seguir-os-padroes-539232f2314
- Solidariedade em Desenvolvimento de Software - https://medium.com/@devsdmf/solidariedade-em-desenvolvimento-de-software-e2b4ad978437
- Commit Your Team to an Stable Version - Using GIT in your team, the right way.
- puc.min.js - Introdução à JavaScript - An introduction course to the JavaScript language, presented at the "Summer School" program in the Pontifical Catholic University of Minas Gerais.
- GIT Versioning - From Padawans to Jedis - An overview about GIT version control and an introduction of how to use it correctly, presented at PUC Padawan's MeetUp group.
- PHP - Uma Introdução à Web Dinâmica - A introduction course to the PHP language, presented at the "Summer School" program in the Pontifical Catholic University of Minas Gerais.
- RESTful APIs - Let your apps talk to each other - RESTful APIs talk presented at the "Summer School" program in the Pontifical Catholic University of Minas Gerais.
- Scale Up - Modern Application Architectures - An introduction to micro-services architecture presented at the "Summer School" program in the Pontifical Catholic University of Minas Gerais.
- Polyglot Stack - Multi-lingual and Multi-paradigm Application Development - A brief discussion about the trade-offs in polyglot architectures in complex systems presented at the internal Tienda Nube Architect's MeetUp.
- Web API's From Scratch - An Introduction to the API Development World presented at the Gama Academy's Programming Course.
- Parallel Processing with Daemons in PHP - Presentation about parallel and distributed processing using PHP presented at Campus Party Minas Gerais 2017.
- PHP: Extending The Core - Why You Should Learn It - A talk about how to create and extend PHP with extensions directly in its core, presented at TDC and PHP Conference Brasil 2017.
- Essential Tools for PHP Architects - A talk about essential tools for every PHP architect, presented at PHP Conference Brasil 2017.
- Framework-Agnostic Applications - A story about components - A talk about Framework-agnostic code presented at PHP eXperience 2018, check the presentation video here.
- Scaling PHP with Daemons and Long-Running Processes - A talk about how to scale PHP with background processing, presented at PHP Conference Brasil 2018.
- Framework-agnostic Code - A story about business and code - A revamped version of the previous framework-agnostic talk, presented at PHP Conference Brasil 2018.