Allan Weber

Utrecht · Netherlands · +31 0 636061199 · a.cassianoweber@gmail.com

As a Senior Engineer, I help companies to improve their development process and make software with high value for the business with code and design quality, improving security, reliability, and scalability.

What drives me is to automate as much as possible, guide new engineers, and learn constantly.

I always take the ownership in the projects I am working, but for that, I need to not only like what I am doing but also believe in the project and company.

I love to lead the adoption of new technologies, helping my team to be more efficient and have more performance.

Agile and Scrum techniques are very important to me, such as sprint planning, sprint review and sprint retrospective, always trying to remove any kind issues or impediments.

Team player is one of my main characteristics, not only to get things done but also to enjoy free time with my teammates, during lunch or any happy hour.


Experience

Senior Software Engineer

ING/iSense Consulting

Context

ING is the largest bank in the Netherlands, is has also a massive presence in Belgium, Germany, England and many other countries. I am a iSense consultant inside ING, however, being a consultant does not means I have less responsibilities or importance to my team, on the opposite.

Situation

I started as a Senior Software Engineer taking care of a legacy monolith java application. This application is responsible to handle authorizations for large business accounts. When a company, that is ING customers, hires for example an accountant, this new employee can have access to the account to handle obligations, such as payments, statements and etc. The Mandates API is the backbone of this process, I am responsible for it. My main responsibility is to modernize this API. The team is also composed of TIBCO developers and is my responsibility to guide them to Java. Because we have only one front-end developer, and many front-end applications, sometimes I also help with that.

Tasks

My main responsibility is to modernize this Mandates API, for this I am refactoring this monolith, applying not only a modern microservice architecture but also Hexagonal Architecture for every project involved, so we have isolated and easily maintainable code. Help migrating old Angular 1.7 applications to lit html, when the front end tasks are overwhelming the team. Make sure our API is available for all environments, because it is heavily consume all over the bank's projects. Monitore usage and scalability of this API.

Activities

  • Code with Java 8
  • Look for scalability and resilience.
  • Automate tests with Karate, Test Containers, and Newman.
  • Go through each team to fulfill all the requirements to consume/expose any functionality.
  • Comply with bank's security definitions
  • Analise projects requirements to find the best solution in terms of availability, performance, price and sustainability.
  • Write unit tests for backend.
  • Write integration for backend.
  • Perform code reviews for Java.
  • Migrate angular 1.7 to lit html
  • Results

  • Moved from monolith to microservice.
  • Refactored applications to a Hexagonal architecture.
  • Guided TIBCO developers to became Java developers.
  • Technologies

    Java 8, Spring Boot, Spring Framework, Asynchronous API, JUnit, Kafka, Azure Devops, Kubernetes

    July 2020 - Present

    Senior Software Engineer

    QUBY/WAES Consulting

    Context

    Quby is a customer of WAES, the company is part of Eneco Group (one of the biggest energy providers in the Netherlands). The company is responsible for creating and sell Toon, a smart thermostat that helps the final customer to have total control of his gas. energy and water consumption.

    Situation

    I started as a Senior Java developer taking care of a couple of microservices and guiding some embedded developers that are migrating from C++ too Java development. One of my main attributions, in the beginning, was not only guide those developers but also refactoring the actual codebase using best practices, providing logging and a better way to troubleshooting the applications. During my last months at Quby, as I fixed and implemented all necessary features and improvements regarding Smart Schedule Application, I joined to the Platform Team. The Platform Team is responsible for provide all infrastructure services, such as authentication, logging, monitoring, metrics, and also some back-office services like orders, customers, location and so on.

    Tasks

    I was responsible for getting the things done at the Smart Schedule Application. The Smart Schedule Application is a group of microservices that advise the user about the usage of their thermostat, to save energy (gas and electricity) and save money. Together with the data science team, we can provide, based on a huge amount of data, the best insight about energy and how to save customers’ money. In addition to my responsibilities with Smart Schedule Application, I am helping the platform team. During this time with the platform team, I fixed some important bugs and helped the team to implement contextual logging and metrics to improve our troubleshooting capacity. I also refactored a service called Quby Registration, that was using Spring Framework 3 and XML Context, to a modernized situation with Spring Boot 2, WebFlux and improving code quality and coverage.

    Activities

  • Code with Java 8 and 11, Reactive Programming and Reactive Architecture.
  • Devops and automation were two important skills of my work there, using Jenkins to deploy and custom pipelines to have a suitable automatic deploy to all environments.
  • Support and migrate legacy code, refactoring to new java and spring version, using TDD and DDD.
  • Perform talks and meetings for the Java guild, in order to help C++ developers to have a better knowledge about the Java environment.
  • Analise projects requirements to find the best solution in terms of availability, performance, price and sustainability.
  • Develop from scratch new services to release new end users' features.
  • Write unit tests for backend.
  • Write integration for backend.
  • Perform code reviews for Java.
  • Based on OKR, define the best way to delivery useful features to the final users.
  • Results

  • Created and delivered in many environments the Smart Schedule Application.
  • I refactored some microservices to a DDD structure, using TDD as guidelines.
  • I aligned the knowledge and perspectives about the Java environment with new developers.
  • Migrate a huge service from Spring Framework 3 and XML Context, to a modernized situation with Spring Boot 2, WebFlux and improving code quality and coverage.
  • Technologies

    Java 8, Java 11, Spring Boot, Spring Framework, JUnit, RabbitMQ, Jenkins, AWS, DynamoDB, Maven, WebFlux, Mono.

    August 2019 - June 2020

    Senior Software Engineer

    CWI Software/Sicredi

    Context

    Sicredi is a customer of CWI Software, it is a digital bank and I’ve been working in the Risk management application. This app is responsible to control provisions for each money that the bank provides to the customers. When a customer uses some bank’s money, for example, a loan, cred card or anything else that costs money to the bank, the risk management application must save a percentage of this money based on the customer and operation rating, this is necessary for the bank to have financial health if customer does not pay back this money.

    Situation

    My team has 6 developers, including me, all developers are full stack and responsible for the entire application lifecycle, since microservice design to support, including coding, DevOps, CI, front-end design and development and so on. I am the tech lead for the Java and front-end applications.

    Tasks

    I was responsible for Java rest APIS, front-end development and I’m starting to help with ETL and big data routines in python applications. My main responsibility was to code very fast rest APIS that goes to MongoDB and integrates with other systems to provide insights to the risk users. All microservices and front-end run with containers in docker. I am responsible, together with the PO, to meet with the business team to decide about new features and backlog periodization as well. I do lots of scrum ceremonies like planning, review, retrospective, but I propose chapters as well with other teams to discuss difficulties and solutions.

    Activities

  • Code Java features to serve front-end applications with token security and restful APIS.
  • Code java to consume massive data from a non-SQL database.
  • Code Angular front-end application providing nice insights for the users about the bank financial risk.
  • Code Python ETL and big data routines and transform massive data to presentation data to the front-end and rest APIS applications.
  • Write unit tests for both, front-end and back-end.
  • Write integration tests for both, front-end and back-end.
  • Write automated tests for front-end.
  • Perform code reviews for Java, Python, Angular.
  • Help the architectural front-end team to write reusable front-end components.
  • Pair programming with junior developers to help them.
  • Pair programming with architects to improve my knowledge.
  • Give coding chapters.
  • Correct some Java and Angular assessments.
  • Results

  • Started all front-end and rest APIS development for risk application, they did not have any, it was an only batch process.
  • Help the architectural team to define the authentication process for the bank internal users in the new bank back office portal.
  • Starting to work with reactive Java.
  • Learn a lot about python.
  • Technologies

    Java 8, Spring, Kubernetes, Gradle, Angular 7 and 8, Docker, Jenkins, MongoDb, TDD, GitLab, JUnit, DDD, Rest, WebFlux, Python, Pandas, PyMongo, Oracle.

    December 2018 - July 2019

    Senior Software Engineer

    CWI Software/Agibank

    Context

    Agibank is a customer of CWI Software, it is a digital bank as Sicredi, and my first client as a contractor at CWI. I’ve worked in the CRM application. This application is responsible to manage all bank data about the bank customers and is accessed by more than 3000 users inside the Bank, mainly in the agencies or on the streets in outside campaigns.

    Situation

    The CRM application has all information about the customers like, accounts and statements, loans, cred cards, insurance, support calls, and messages, etc. This application is responsible for leads management as well, the team was responsible for reading massive files with customer information, we got messages from Facebook or from the bank website or any source, treat and enrich this information and make these customers make available for use for the application users. Other responsibilities of this application were to make VoIP calls, so we integrated with VoIP solutions called Olos, from Brazil, to make and to receive phone calls, and create a solution to do calls for lots of leads at the same time and transfer to the user which customer that attempt the call, to the user sell some bank products to this customer. My team had 8 developers, including me, all developers are full stack and responsible for the entire application lifecycle, since the microservice design, including coding, DevOps, CI, front-end design and development and so on. I started as only a developer, but 4 months later I became the tech lead responsible for lead management applications. As we worked in a high-pressure environment because it was a regular bank going to the digital environment and we needed release features all day, we estimated tasks with hours, not in points, so we needed to be accurate about the tasks estimates and meet the deadlines. At the beginning of the project, it was composed of 3 .NET Core microservices, but as we were working we decided to create more Java microservices because of the way to work with Rabbit and Mongo as faster than .NET Core 1.2, and because of custom configurations as well, that I thought it was better to do with Qualified Beans.

    Tasks

    I was responsible for Java rest APIS, front-end development. My main responsibility was to code very fast rest APIS to integrate with other systems or present data from SQL Server and MongoDB. I was responsible, together with the PO, to meet with the business team to decide about new features and backlog periodization as well about the lead management application. I did lots of scrum ceremonies like planning, review, retrospective, but I propose chapters as well with other teams to discuss difficulties and solutions.

    Activities

  • Code Java features to serve front-end applications with token security and restful APIS.
  • Code Java features to process and enrich data, transporting these data between microservices using RabbitMQ queues.
  • Code Angular front-end application providing nice insights for the users about the bank’s customer data.
  • Code Angular front-end application providing leads information.
  • Code and support .NET Core restful CRM application.
  • Code and support .NET Core application to integrate with VoIP solution to make and to receive calls in the front-end application, connecting with sockets.
  • Write unit tests for both, front-end and back-end.
  • Write integration tests for both, front-end and back-end.
  • Write automated tests for front-end.
  • Perform code reviews for Java, C#, and Angular.
  • Help the architectural front-end team to write reusable front-end components.
  • Pair programming with junior develops to help them.
  • Pair programming with architects to improve my knowledge.
  • Give coding chapters.
  • Correct some Java, C# and Angular assessments.
  • Results

  • Started all front-end and Java rest APIS development for CRM application, they already have some APIS with .NET Core and they were thinking about front-end stack.
  • Decreases a lot the downtime between microservices communication implementing RabbitMQ besides direct Http.
  • Decreases the crashes between microservices implementing the Tolerant Reader Design Pattern.
  • Help the architectural team to define the authentication process for the bank internal users in the new bank back office portal.
  • Help the architectural team to implements API gateway with WSO2.
  • Technologies

    Java 8, Spring, Kubernetes, JUnit, RabbitMQ, Angular 4 and 7, .NET Core, Docker, Jenkins, MongoDB, TDD, GitLab.

    September 2017 - December 2018

    Senior Software Developer

    TOTVS

    Context

    Totvs S/A is the biggest software house in Brazil, they provide lots of software solutions in many technologies. I came back to this company to help to develop the new Healthcare solution for huge hospitals in Brazil.

    Situation

    I worked in the Patient and Bills squad, responsible for managing patients' accounts and bills in the hospital. We were 8 people, 7 developers, and 1 product manager/PO/Scrum master/leader. As I had a lot of experience in the legacy version, I started helping the legacy team to fix application bugs and improve queries and procedures' performance. Unfortunately, I was looking for something more challenging and innovative, so after 4 months I decided to accept an offer from CWI.

    Tasks

    I was responsible for fix bugs in legacy .NET application, wrote with ASP.NET WebForms and Oracle database. Beyond the application bugs, I was responsible for decrease queries and procedures execution time, perform better uses of database management. Provide and consume SOAP web services to integrate with other systems. Improve UX using better styles and HTML code.

    Activities

  • I programmed ASP.NET WebForms application.
  • I programmed C# application.
  • Created and fixed Oracle queries and procedures.
  • Developed SOAP web services.
  • I programmed HTML and styles to improve UX.
  • Results

  • Almost cleared the issues backlog in 4 months.
  • Improved queries and procedures that took almost 10 minutes to run to less than 1 minute.
  • Improved queries that took more than 1 minute to few seconds or less than 1 second.
  • Technologies

    NET 4.5, MVC, PL/SQL, Web Services, Bootstrap, JavaScript, Oracle, Tuning.

    May 2017 - September 2017

    Java, Angular Developer / Tech Leader

    Sispro Software Empresarial

    Context

    Sispro is an ERP development company. They provide taxes, financial, HR and MRP solutions for Brazilian companies. The company is almost 50 years old and a reference in Brazil.

    Situation

    At this stage of my career at Sispro, I was Tech Leader responsible for 2 projects, they were: Material requirements planning (MRP) and on promise NF-e.

    Material requirements planning (MRP) is a kind of software used in industries to control manufacturing stages and material requirements to produce what they manufacture.

    NF-e is digital taxation for Brazilian companies, the companies must send digital files to the government about each sale or purchase they make, for example, this file is an XML file, and a pdf with this transaction must be sent to the customers. I called it on-promise because in this version the customers pay for the use or some cents for each document they sent to the government.

    Unfortunately, the company decided to freeze the investments in innovation, moreover, I couldn't see any career progression for me, so I decided to leave the company, took one month to study and look for a new challenge.

    Tasks

    I was responsible for design and implement each application, with my team. Sometimes specifics requirements were necessary for some customers, then I was responsible to travel to the customers, get these requirements, implement and then, after the development lifecycle, show to the customers and ask for their approval. I was responsible for choosing a better technical solution for each application, do concept proof and implement the solution, always looking for delivery the best solution for the customers and the lowest cost possible.

    Activities

  • Code Java features to serve front-end application with token security and restful APIS.
  • Code angular front-end application.
  • Modeling database solution.
  • Support customers in 24/7 service on call.
  • Analise and implement solutions and new technologies.
  • Training junior developers.
  • Visit customers to get requirements.
  • Show the results to the customers.
  • Results

  • I delivered nice and performance applications and solutions to the customers.
  • I left the company after trained my replacement.
  • The company earned a lot of money with the requirements I implemented for the customers.
  • I helped the company to implement Scrum.
  • Technologies

    Java 7 and 8, Spring, JUnit, RabbitMQ, Angular 2 and 4, SQL Server, Oracle, AWS.

    June 2014 - April 2017

    Java, Angular, Outsystems Developer

    Sispro Software Empresarial

    Context

    Sispro is an ERP development company. They provide taxes, financial, HR and MRP solutions for Brazilian companies. The company is almost 50 years old and a reference in Brazil.

    Situation

    At this stage of my career at Sispro I started the development of NF-e solution integrated with ERP, not on-promise.

    Tasks

    I was responsible for design and NF-e application, integrating with ERP application. The application was developed with Outsystems Low Code Solution, but it couldn't communicate with the government because of certificate credentials and depending on the state or city there were different web services to consume, so almost 60% of the application must be in Java. Sometimes specifics requirements were necessary for some customers, then I was responsible to travel to the customers, get these requirements, implement and then, after the development lifecycle, show to the customers and ask for their approval. There was a version of this application to run in desktop for supermarkets, so I wrote this in Java with swing, but after done, to improve the performance and deploy, I decided to rewrite it with NodeJs and run with Electron.

    Activities

  • Code Java to consume and expose web services and rest APIs.
  • Code Java features to generate and read XML.
  • Code angular front-end application.
  • Support C# legacy NFe application.
  • Modeling database solution.
  • Support customers in 24/7 service on call.
  • Analise and implement solutions and new technologies.
  • Training junior developers.
  • Visit customers to get requirements.
  • Show the results to the customers.
  • Results

  • Delivered nice and performance applications and solutions to the customers.
  • Replaced a legacy solution for NF-e to the new one developed my team, led by me.
  • Technologies

    Java 6, Spring, JUnit Outsystems, NodeJs, Java, Spring, .NET, SQL Server, AWS.

    June 2012 - June 2014

    Java, C#, Outsystems Developer / Junior Architect

    Sispro Software Empresarial

    Context

    Sispro is an ERP development company. They provide taxes, financial, HR and MRP solutions for Brazilian companies. The company is almost 50 years old and a reference in Brazil.

    Situation

    At this stage of my career at Sispro, I was a Junior Architect responsible to provide research, concept proof and provide solutions to the developer. I was responsible for research and successfully implement Outsystems solution to improve the developer’s delivery performance. Outsystems is a Portuguese low code platform to develop web applications.

    Tasks

    I was responsible for research and successfully implement Outsystems solution to improve the developer’s delivery performance. I Implemented Outsystems architecture and application design. Create a development process, control application performance and errors. Research libraries, solutions, etc. Execute concept proof to validate solutions. Help developers about their doubts with C#, Java, VB6, and Outsystems.

    Activities

  • Architectural development.
  • Test solutions implementation and performance.
  • Write libraries to C#, Java and Outsystems applications.
  • Help and training developers.
  • Results

  • Successfully implement Outsystems platform.
  • I showed myself an excellent developer and leader, so the company gave the responsibility for many other applications, in my next career steps at Sispro.
  • Technologies

    Java 6, Spring, JUnit Outsystems, Java, Spring, .NET, SQL Server

    June 2011 - June 2012

    Web Developer

    TOTVS

    Context

    Totvs S/A is the biggest software house in Brazil, they provide lots of software solutions in many technologies. I came back to this company to help to develop the new Healthcare solution for huge hospitals in Brazil.

    Situation

    At that time Totvs was initiating the development of a new healthcare solution, to sell to the HCor, the biggest heart hospital in Brazil. As I had worked at Sispro in my previous job, they offered me a position as in the architecture, so I left Totvs.

    Tasks

    Develop and maintain an accounting system for large hospitals in Brazil. Improve UI by applying UX concepts and responsive design. Develop a system for PDA using windows mobile and Web Services SOAP and REST, this system is responsible for making inventory controls in hospitals. Some pieces of this application were Silverlight to do a better UX at that time.

    Activities

  • I programmed ASP.NET WebForms application.
  • I programmed C# application.
  • I programmed Silverlight.
  • Code windows mobile application for PDA
  • Created and fixed Oracle queries and procedures.
  • Developed SOAP web services.
  • I programmed HTML and CSS to the front-end.
  • Results

  • I successfully create my first “mobile” application with windows mobile.
  • Technologies

    C#, .NET 3.5, Windows Mobile, SQL Server, Oracle, PL/SQL, IIS, Silverlight.

    October 2010 - June 2011

    Developer

    Sispro Software Empresarial

    Context

    Sispro is an ERP development company. They provide taxes, financial, HR and MRP solutions for Brazilian companies. The company is almost 50 years old and a reference in Brazil.

    Situation

    I started my developer career at Sispro in a program that they teach a new developer from the basics of how to code in Visual Basic 6. I was selected for this program because I did a logic test and I was very good.

    Tasks

    After 2 months of learning how to code with VB6 I started to work in the legacy MRP solution. I was responsible to create new features and fix bugs and so on. Develop and customize Server Controls Library for use by enterprise developers. I supported the architecture in migrating the desktop platform to the cloud environment of the company applications. After showed that I love to learn and code, they gave me the chance to help in the VB6 to C# migration.

    Activities

  • I programmed with VB6.
  • Wrote queries to Oracle, SQL Server, DB2 and Sybase.
  • Migrate legacy applications developed in VB6 to .NET C#.
  • I programmed several Server Controls Libraries.
  • Results

  • Successfully started to code.
  • Helped to migrate VB6 code to C#
  • Technologies

    VB6, .NET 3.5, SQL Server, Oracle, SQL Server, DB2, Sybase, Unit Test, Reflection.

    May 2008 - October 2010

    Education

    Universidade do Vale dos Sinos - Unisinos

    Bachelor's degree
    Bachelor in Analysis and Systems Development
    March 2016 - December 2020

    Skills

    Programming Languages & Tools
    • Java 8, Java 7, Java 6
    • Kubernetes
    • Vanilla JavaScript, Typescript
    • Spring Framework, Sprig Boot, JUnit
    • C#, .NET Core, .NET Standard, .NET Framework (2.0 to 4.6.2)
    • Unit Test, TDD, Integrated Tests
    • Sql Server, Oracle, MongoDB, Redis, PL/SQL
    • RabbitMQ
    • Outsystems
    • Agile Development & Scrum
    • Mobile-First, Responsive Design
    • Agile Development & Scrum

    Interests

    Apart from being a web developer, I enjoy most of my time being outdoors. I like to pratice sports such hiking and bodybuilding. I enjoy eat hamburguers and stay as much as possible with my wife.

    When forced indoors, I follow a number of sci-fi and fantasy genre movies and television shows, and I spend a large amount of my free time exploring the latest technology advancements in the back-end, front-end and devops.