Me and Rocky

Giacomo Simmi

IT Architect

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
Snowboarding hobbyMartial Arts hobbyMotorbikes hobbyMusic hobbyPainting hobbySpearfishing hobby
Experience
Since '21Paramount logoParamount

IT Architect

  • Mass Media
  • Streaming
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 logoVodafone

    IT Architect / IT Manager

    • eCommerce
    • Telecommunications
    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 logoAtos

    Senior Software Engineer / IT Project Manager

    • Energy & Utilities
    • Retail
    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 logoIBM

    Full Stack Developer

    • Energy & Utilities
    • Banking
    • Retail
    Java
    JS/TS
    Angular
    Android
    Spring
    Node.js, Tomcat, etc.
    IBM Algorithmics RTCE
    Other...
      '14 - '15Open Reply logoOpen Reply

      Android & Mobile Hybrid Developer

      • Energy & Utilities
      • Banking
      • Retail
      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 logoUniversity of Liverpool

      Android Developer

      • Healthcare
      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.
      Keadex logo
      Keadex ©2024. Code licensed under an MIT-style License. Documentation licensed under CC BY 4.0.
      Privacy Policy  |  Terms & Conditions