Summary
Born in the 90s, I grew up in southern Italy surrounded by martial arts, anime, video games, and computers.
I fell in love with computer science when software was still distributed on floppy disks.
I started my career as a Mobile Developer when Android was just emerging. Later, I took on roles such as Web Developer, Backend Developer, Tech Lead, and IT Manager.
Today, I am an IT Architect with more than 10 years of experience in consulting companies and corporates.
Hobbies
Experience
Since '21Paramount
IT Architect
Micro Frontends, Microservices
CSR, SSR, SSG
TS/JS
React, Next.js, etc.
Nx
Webpack, Babel, swc, etc.
Node.js, NestJS, GraphQL
Redis
Jenkins, GitHub Actions, etc.
AWS, Anthos
C4 Model
Other...
'18 - '21Vodafone
IT Architect / IT Manager
Micro Frontends, Microservices
JS/TS
React
Adobe Experience Manager
Lerna
Node.js, Tomcat, etc.
Java
Spring, Camunda, etc.
Oracle, MongoDB, Kafka, etc.
AWS, Azure
C4 Model
Other...
- Lead and support team members for effective collaboration and project execution. People management responsibilities include talent development, resource planning, conflict resolution, and fostering a positive work environment to ensure the team's success in delivering quality architectural solutions.
- Collaborate with stakeholders, including clients, product owners, and developers, to understand and analyze the functional and non-functional requirements of the system. Ensure that the architecture aligns with these requirements.
- Develop the high-level design of the software system, defining the overall structure, components, modules, and their relationships. This involves making decisions on the architecture style, such as microservices, monolithic, or others.
- Make key decisions regarding technology stack, frameworks, databases, and other architectural components. Consider trade-offs between various options and choose the most suitable ones based on project requirements.
- Identify potential risks in the project and develop strategies to mitigate them. This includes addressing technical, business, and operational risks that may impact the success of the project.
- Provide guidance and oversight during the development phase. Conduct code reviews to ensure that the implemented code aligns with the architectural design and meets quality standards.
- Create prototypes or proof-of-concept implementations to validate the feasibility of certain design decisions or to explore innovative solutions before full-scale development.
- Optimize the performance of the system by identifying and addressing bottlenecks, ensuring scalability, and considering factors such as response time, throughput, and resource utilization.
- Work with project managers and stakeholders to estimate the costs associated with implementing the solution. Consider factors such as hardware, software licenses, development effort, and ongoing maintenance.
- Create and maintain comprehensive documentation that explains the software architecture, design decisions, and rationale. This documentation serves as a reference for developers and other stakeholders.
- Collaborate with vendors and third-party providers to evaluate and select external components or services that may be part of the overall solution. Ensure compatibility and alignment with organizational standards.
- Work closely with development teams to ensure that the architectural vision is understood and implemented correctly. Foster collaboration and communication among team members.
- Design solutions that integrate seamlessly with existing systems and technologies. Address interoperability challenges and define integration points to ensure a cohesive and efficient IT environment.
- Address security concerns and implement strategies to safeguard the system against potential vulnerabilities and threats. This includes designing secure authentication, authorization, and data protection mechanisms.
- Plan for the long-term evolution and maintenance of the software system. Anticipate changes and ensure that the architecture is flexible and adaptable to accommodate future requirements.
- Stay updated on industry trends, emerging technologies, and best practices in software development and architecture. Apply new knowledge to enhance the effectiveness of architectural decisions.
- Provide leadership, mentorship, and guidance to the development team. Help team members understand and adhere to architectural principles and best practices.
- Foster collaboration and communication between different teams, including development, operations, and business units. Ensure that everyone involved understands the architectural vision and goals.
'17 - '18Atos
Senior Software Engineer / IT Project Manager
Java
JS/TS
Struts 2
Angular
Ionic
Node.js, Tomcat, etc.
Other...
- Provide technical leadership and guidance to the development team, offering expertise in software design, coding practices, and architectural decisions.
- Conduct thorough code reviews to ensure adherence to coding standards, best practices, and overall code quality. Mentor junior developers to enhance their coding skills.
- Tackle complex technical challenges and problem-solving, demonstrating a deep understanding of algorithms, data structures, and system architecture.
- Lead and contribute to the planning, estimation, and execution of software development projects. Take ownership of project components or features.
- Stay updated on industry trends, emerging technologies, and best practices in software development and architecture. Apply new knowledge to enhance the effectiveness of architectural decisions.
- Identify opportunities for code refactoring and improvements to enhance the maintainability, readability, and extensibility of the codebase.
- Create prototypes or proof-of-concept implementations to validate the feasibility of certain design decisions or to explore innovative solutions before full-scale development.
'15 - '17IBM
Full Stack Developer
Java
JS/TS
Angular
Android
Spring
Node.js, Tomcat, etc.
IBM Algorithmics RTCE
Other...
'14 - '15Open Reply
Android & Mobile Hybrid Developer
Java
Android
ProGuard
Fabric (now Firebase)
Adobe Photoshop
Other...
- Tackle complex technical challenges and problem-solving, demonstrating a deep understanding of algorithms, data structures, and system architecture.
- Lead the development of applications, ensuring seamless integration and functionality.
- Make key decisions regarding technology stack, frameworks, databases, and other architectural components. Consider trade-offs between various options and choose the most suitable ones based on project requirements.
- Address security concerns and implement strategies to safeguard the system against potential vulnerabilities and threats. This includes designing secure authentication, authorization, and data protection mechanisms.
- Stay updated on industry trends, emerging technologies, and best practices in software development and architecture. Apply new knowledge to enhance the effectiveness of architectural decisions.
- Create prototypes or proof-of-concept implementations to validate the feasibility of certain design decisions or to explore innovative solutions before full-scale development.
- Create and maintain comprehensive documentation that explains the software architecture, design decisions, and rationale. This documentation serves as a reference for developers and other stakeholders.
2013University of Liverpool
Android Developer
Java
Android
Adobe Photoshop
Other...
- Lead the development of applications, ensuring seamless integration and functionality.
- Create prototypes or proof-of-concept implementations to validate the feasibility of certain design decisions or to explore innovative solutions before full-scale development.
- Create and maintain comprehensive documentation that explains the software architecture, design decisions, and rationale. This documentation serves as a reference for developers and other stakeholders.