Flavio Pezzini
Verified Expert in Engineering
Software Developer
Bologna, Metropolitan City of Bologna, Italy
Toptal member since July 17, 2017
Flavio is a senior Java architect and team leader with extensive experience working on complex projects for multinational companies, such as Growthday.com, Dell, IBM, Ernst Young, Optiva, and Deutsche Bank. He has diverse experience across industries such as banking, telecom, eCommerce, travel, and sports management. Flavio's strengths include communicating effectively with multiple teams, resolving conflicts, and mentoring professionals on long-term engagements.
Portfolio
Experience
Availability
Preferred Environment
IntelliJ IDEA, Git, MacOS
The most amazing...
...project I’ve worked on was developing and maintaining six applications with millions of lines of code and extremely complex telecom business transactions.
Work Experience
Full-stack Developer
PLS Logistics - Main
- Rewrote a script to read emails from an email inbox using the Microsoft Graph API and generate database records.
- Worked on the metadata from these email messages, then fed into an AI engine that performs OCR on the email attachments.
- Based on the JSON payload returned with the list of fields and values found in the documents, this script then uses a big list of business rules to update the database records accordingly.
- Ensured accurate and stable results. The business rules contain dozens of edge cases, and the code is covered in unit tests for all the important decisions.
- Rewrote the security portion to adjust to the Microsoft Graph API once it became clear that the old basic authentication would be terminated by Microsoft.
- Coded several feature improvements and fixes on the legacy ERP application, always improving the code by adding test coverage where it made sense and clearing all code linter warnings.
- Cloned an extensive application written by a 3rd-party vendor, trying to achieve feature parity in a very short amount of time.
- Automated a series of manual processes performed by the business to ensure the billing department pays the carriers correctly.
Senior Java Developer
flexEngage
- Wrote a data pipeline that utilizes Kotlin, AWS SNS, and SQS to fetch certain statistics out of a list of customer transactions.
- Contributed to this pipeline that is designed to handle large amounts of data and is built using a combination of asynchronous messaging and event-driven architecture.
- Investigated and solved several issues blocking the existing legacy application from running within Docker on an M1 MacBook.
Java Architect
GrowthDay
- Vastly improved the application's security by identifying gaps in the infrastructure setup.
- Added code validations following the ideas from secure by design to ensure the security of the data from the application.
- Extracted a microservice to handle all the notifications sent through OneSignal to offload the main server.
- Created features with high-quality software using TDD and SOLID principles in a fast-paced environment.
Java Architect
Superior Consulting Services - Ralf Lüttgen
- Created a REST service to use an existing list of back-end beans that stored information about a telecom company infrastructure. Added integration tests using REST Assured.
- Developed migration services to pull data from legacy systems and transform them before storing them in the new system.
- Created a SOAP service to use an existing list of back-end beans that stored information about the company infrastructure and added integration tests using SoapUI.
Java Architect
IMFyi
- Recovered the source code from a WAR file (decompiler), added back all the Java generics lost during compilation, figured out all the necessary dependencies, and generated a proper pom.xml file with all of the correct versions.
- Fixed a nasty concurrency issue in production that was causing timeouts and essentially crashing the site every 15 minutes. This put the site back in business and allowed them to have more clients accessing the site simultaneously.
- Solved massive performance issues with pagination in certain pages on the UI—pages that took 8–10 seconds to load started loading instantaneously.
- Generated a list of recommendations and architectural plans in order to move the application to a more modern platform.
- Set up the application locally and generated a comprehensive guide for future developers on setting up their environments.
Senior Java Developer
Tremor
- Developed features to add to the auctioning platform.
- Hunted down and patched bugs by creating the necessary unit tests to demonstrate the bug's existence and then fixing them.
- Refactored portions of the code to be safer, more performant, and more precise, following the industry-wide guidelines and recommendations from SonarQube.
- Created a layer of abstraction on top of AWS services so that it would be possible to test the application locally without hitting AWS quotas when testing portions of the system that did not require AWS.
Senior Java Developer
Ernst & Young
- Contributed to a three-month-long project to provide secure storage of files for client applications.
- Implemented Spring Security to authenticate users via SSO and basic authentication.
- Stored the file metadata using Spring Data, initially transitioning to MySQL and then moving to PostgreSQL.
- Refactored the source code to bring it up to standards.
- Implemented new endpoints and made adjustments to existing REST endpoints.
- Tested using both unit tests and JMeter for performance assessment.
Chief Java Architect
Optiva
- Troubleshot and fixed the most difficult issues assigned to the team.
- Designed and implemented code changes to the applications following the latest code-quality recommendations.
- Built a root cause analysis for production crashes and slowness issues, including heap dump, garbage collector logs, thread dump, log analysis, and VM tuning.
- Created solution architectures, algorithms, and designs for solutions that scale to the customer's enterprise and their global requirements.
- Developed my expertise in one or more of the customer's proprietary enterprise software products.
Senior Java Developer
PrestoSports
- Built a Java web system responsible for collecting data about collegiate sports teams in the US and Canada.
- Developed new features such as a user interface to allow users to automatically watch sports seasons into the next year.
- Addressed existing bugs, not merely fixing the bug itself but finding the root cause and applying the definitive fix.
- Fixed critical production issues by identifying the root cause and creating plans to avoid the problem in the future.
- Contributed to peer reviews and solution-brainstorming meetings for my team and other teams as well.
- Refactored code to address new needs; for instance, an overhaul of several system modules to upgrade the TinyMCE framework to the latest version. This included processing and sanitizing embedded videos (both hosted and from YouTube).
Java Support Engineer
IBM
- Created usage and health reports based on various log files using shell scripts and Java for a large (20,000+ users) project-management system.
- Monitored system health by checking RAM, CPU, and disk usage.
- Took part in the deployment processes executing all the Linux and database steps and ensuring that the other professionals did their part on time according to the overall plan.
- Offered system health and production feedback to the main development team so that they could improve the application.
Senior Java Developer | Team Leader
Freelance
- Developed Java back-end systems for the Malaysian government responsible for providing various permits.
- Recruited professionals to complete various website-building projects.
- Managed professionals related to project website building, including features to a website, a whole website redesign, translations, and more.
- Developed an onboarding wizard that allowed a company to record information and images of new customers into their system.
- Conducted peer code reviews of junior colleagues providing detailed feedback.
Project Manager
TAM
- Managed TAM's (the largest Brazilian airline) back-end systems in the travel industry. These systems are connected to Amadeus (one of the largest tourism software companies) and other third-party systems.
- Ensured that the projects were delivered on time and were feature complete.
- Communicated with all the teams at TAM, Amadeus, and third-party contractors.
- Produced project plans and updated them accordingly.
- Provided daily status reports to the upper management.
Project Manager
CPMBraxis (via Bradesco Bank)
- Managed a team of 15 analysts and developers working on six projects using Java and mainframe (COBOL) technologies for the banking industry.
- Interviewed candidates for the various positions available.
- Updated MS Project files according to the latest changes in the project execution.
- Took part in requirements gathering and clarification meetings.
- Mentored professionals towards improving their careers.
- Acted as a mediator during conflicts, looking to find a compromise between the various stakeholders.
Support Analyst Level 2
Dell
- Led and managed bridge conferences towards a quick resolution of high severity issues–such as when Dell.com's website went down. It was about recruiting to the call all the necessary human resources and drive the issue to resolution.
- Updated the documentation and executed a root cause analysis afterward.
- Drove the resolution of lower severity issues, including being the point of contact between business areas and the development teams–taking full responsibility for the issue until it got resolved.
- Produced trend analyses of the production incidents to provide feedback to development teams.
- Trained professionals on the applications involved in the online store.
Team Leader
Compasso (via Sicredi Bank)
- Managed a team of business analysts, technical analysts, and developers on integration projects between the legacy ERP and the new ERP using Oracle ODI.
- Worked as an interpreter between the subject matter experts from the Indian ERP company and the local analysts that only spoke Portuguese.
- Distributed tasks to the analysts and developers and followed up towards resolution.
- Led daily standup meetings towards keeping everybody up to date with the latest from the project.
Team Leader
CPMBraxis (via Deutsche Bank)
- Led a team working on auditing/reporting Deutsche Bank UK projects. I was also responsible for providing third-level support to an auditing application, which ensured that the data produced by a number of applications were correct.
- Reported status updates to the upper management weekly.
- Mentored professionals towards improving their careers.
- Implemented pre-sales processes and participated in those pre-sale events.
- Interviewed candidates looking to find top-notch talent for the projects.
Senior Java Developer
Dell
- Worked as a Java developer on the application responsible for communication with vendors on the software and peripherals store at Dell.com.
- Wrote modules to produce sales reports using JDBC queries and exporting to CSV files.
- Built XML parsing modules necessary to provide additional features to the vendors that had their ERPs connecting to our application.
- Worked on requirement clarification processes with the US team.
- Helped improve the logging of the application, producing more detailed data.
Java and COBOL Developer
CPM Braxis Capgemini (via Bradesco Bank)
- Developed COBOL modules for the banking industry. These modules ranged from reports to data processing modules that would read data from either text files or Db2 databases and produce output files with the updated data.
- Developed servlets that interacted with the COBOL modules and displayed data in JSPs.
- Tested the integrations between the COBOL and Java parts of the framework.
- Conducted software peer reviews of my colleagues, providing objective feedback on their work.
- Helped setup version control so that the team could be more productive.
Experience
Shopping Budget — Variation of Knapsack
https://github.com/flaviopezzini/shoppingbudget-permutation/Molly wants to buy laptops for her school, and I use Java to determine how many laptops she can purchase by comparing the vendors available. Each vendor sells the laptops in batches, with a quantity identifying how many laptops are in each batch, the price for the whole batch, and the parameters determining which laptop batches Molly should purchase for her school based on the available batch size and price.
I developed a Java-based solution that required permutation and dynamic programming. It involved a variation of the common knapsack 0/1 solution.
Sample input: 50 [20,19] [24,20]
• Molly has 50 dollars to spend.
• The first vendor has 20 laptops per batch, and each batch costs 24 dollars.
• The second vendor has 19 laptops per batch, and each batch costs 20 dollars.
The possible answers are 40 and 38.
If she buys from the first vendor, she will spend 48 dollars (24*2), and since she's buying two batches, the total quantity is 40 (20*2). However, if she buys from the second vendor, the maximum amount would be 38 since each batch has 19 laptops, and she'd run out of money after the second batch.
The final answer is then 40 since 40 is higher than 38.
Strava App to Format the Athlete Weekly to Copy/Paste to an Internet Forum
https://github.com/flaviopezzini/stravaweeklyComparing Poker Hands in Rust
https://github.com/flaviopezzini/rust-poker-handIt served as a starting point in my track towards learning Rust.
Education
MBA in Business Administration and Management, General
Fundação Getulio Vargas - Porto Alegre, RS, Brazil
Certificate in Web Development
Universidade Tecnológica Federal do Paraná, Pato Branco - Pato Branco, Brazil
Skills
Libraries/APIs
REST APIs, Spring REST, Jackson, jQuery, JOOQ, JSTL, PubNub, JMS
Tools
Apache Maven, Git, IntelliJ IDEA, Postman, Jira, SonarQube, Amazon Simple Notification Service (SNS), Jenkins, TELON, Apache Tomcat, Microsoft Project, WildFly, SoapUI, REST Assured, ActiveMQ, Amazon Simple Queue Service (SQS), Terraform
Languages
Java, COBOL, Java EE 7, Java EE 8, Web Services Description Language (WSDL), HTML5, JavaScript, TypeScript, Kotlin, PowerBuilder, CSS, Rust, SQL
Frameworks
JPA, Spring, Jakarta Server Pages (JSP), Spring Security, Spring Boot, JUnit, Bootstrap, Angular, Hibernate, Mockito, OAuth 2, JSF, AngularJS, Selenium, Apache Velocity
Paradigms
REST, API Architecture, Agile Software Development, Microservices, Agile
Platforms
Jakarta EE, Unix, Java EE, Visual Studio Code (VS Code), Docker, Linux, Amazon Web Services (AWS), MacOS, JBoss, Apache Kafka, Oracle, JVM, Kubernetes
Storage
Spring Data, Spring Data REST, MySQL, PostgreSQL, Microsoft SQL Server, Google Cloud, JSON, Sybase, IBM Db2, Amazon S3 (AWS S3), MongoDB
Other
API Design, Product Ownership, Software Development, APIs, OAuth, Vi, Architecture, CI/CD Pipelines, Product Management, Microsoft Graph API, Pub/Sub, Containerization, Cloud, SOAP, Shell Scripting, Web Services, CSV File Processing, Algorithms, Web Development, TinyMCE, Software Architecture, Legacy Code
How to Work with Toptal
Toptal matches you directly with global industry experts from our network in hours—not weeks or months.
Share your needs
Choose your talent
Start your risk-free talent trial
Top talent is in high demand.
Start hiring