Download PDF version · Download Cover Letter Up-to-date version of CV is available at https://narcisobenigno.github.io/cv
Over 15 years of professional software development across startups, scale-ups, and consultancies have taken me through diverse environments and teams across Brazil and Australia. I've worked with Golang, Java, Ruby, TypeScript, and Kotlin in both on-premise and cloud environments (AWS, GCP), learning to adapt quickly to different organisational contexts and technical challenges.
I can help organisations at any stage—early startups delivering and validating hypotheses with simple architectures, scale-ups modernizing architectures for sustainable growth while mitigating operational risk through frequent delivery and minimal disruption, or established companies strengthening team practices for sustainable delivery. This includes establishing DevOps practices with cloud infrastructure on AWS, Observability, expanding platforms internationally while balancing regulatory compliance with business delivery, and combining technical practices (TDD, Continuous Delivery, DDD) with collaborative approaches that enable teams to experiment, deliver incrementally, and maintain sustainable pace.
Recently, I've been developing and researching with AI, exploring how it impacts team dynamics, flow, software architecture, and collaboration patterns. If your organisation needs hands-on help with event sourcing adoption, international platform expansion, or strengthening agile engineering practices, I bring proven experience from global platform transformations and legacy migrations.
Joined as the first dedicated engineer after a temporary engineer validated product-market fit with a basic prototype (single API endpoint, Notion as database). My main responsibility was to improve sales by providing minimum features and assess the potential business and technical bottlenecks that were emerging.
The Notion-based system revealed critical bottlenecks: business processes built directly on top of Notion created deep coupling that required multiple iterations to decouple, poor technical and product observability, platform flakiness, and substantial manual operational overhead. Since Notion is not designed as a production database, removing this dependency was critical to avoid undermining the product's potential. After implementing initial features to enable sales, I led the re-architecture of the entire system. I've facilitated Event Storming workshops involving product, operations, sales, and marketing teams to inform the design.
The migration prioritized zero business disruption: the new architecture ran in shadow mode alongside the existing system, keeping the API unchanged so clients continued working without modification. Once validated, we switched to the new storage layer and backfilled historical data, giving older bookings the same capabilities as new ones.
This transformation significantly reduced manual operational overhead while unlocking analytics capabilities that were previously impractical: product and sales could now track individual agency performance, improve risk assessment, and build their own dashboards using low-code tools. All development maintained 24/7 availability with zero downtime throughout the transition.
CQRS Event Sourcing Event Storming Reactive Systems TypeScript Server Side Rendering web apps Node.js AWS Lambda API Gateway AWS SQS SNS EventBridge DynamoDB GCP BigQuery Data Studio TDD DDD Clean Architecture Agile Fintech Pulumi monorepo
InDebted is a debt collection company that relies on data to provide a smarter and more sensible approach, supporting customers to get their financial life back on track.
During my period at InDebted, I was instrumental in the platform's globalisation efforts. First, expanding to Canada which required adapting the platform to meet Canadian regulatory requirements. Then leading the more complex expansion to the US market, ensuring compliance with US-specific debt collection regulations.
A key technical achievement was absorbing the legacy platform into the new CQRS and event sourcing architecture. This migration preserved complete audit trails for old accounts and maintained data integrity and history for existing clients, ensuring no data loss during the transition.
Working within a team of 10 engineers, I collaborated primarily through pair and mob programming to tackle complex challenges and leading many of those teams tackling strategic goals. When timezone differences between US and Australia made mobbing impractical, we maintained regular check-ins to ensure alignment. Combined with trunk-based development, this approach resulted in minimal rework, low bug rates, and eliminated time spent on code reviews.
Throughout this work, I maintained the platform's 24/7 availability with zero downtime. The architecture enabled continuous experimentation and real-time impact measurement while ensuring the team could progress independently with fast releases and simple extensibility. As well as changing and implementing features into the Indebted's frontend application using React.
Agile Flow AWS CI CD Reactive Systems Lambda CQRS Event Sourcing Terraform SQS SNS S3 Aurora PostgreSQL SQL OO DynamoDB TDD DDD React golang monorepo
Worked as a consultant software engineer across two major engagements, helping organisations improve their technical practices and delivery capabilities.
At a large private company, I focused on frontend delivery using Angular, working closely with the team through pair programming to deliver features while applying TDD practices. I also provided architectural guidance on frontend codebase structure, helping establish patterns that improved code organisation and maintainability.
At Service NSW (government agency), I joined a team with already strong TDD principles and focused on delivering features while upskilling the team on advanced testing strategies and CI/CD pipelines. The engagement involved practical work with Kotlin on an AWS-based platform, establishing deployment automation that improved their delivery capabilities.
Agile OO TDD CI CD DDD Consulting skills JavaScript Kotlin
I worked within the legacy platform team, helping the team apply techniques described in the book "Working Effectively with Legacy Code" by organising Kata sessions to improve our skills and confidence when dealing with such codebases. Using Pair Programming to address issues, we first measured the problems to isolate the biggest sources of issues, then worked together to tackle them systematically. Through this approach, we introduced automated tests and improved the code base quality, solving years-long platform problems and improving user satisfaction. Furthermore, I was involved in the project to migrate from that legacy platform to a new one.
OO Working Effectively with Legacy code TDD DDD Strangler Pattern CI CD
I worked as a consultant on 2 major client engagements across e-commerce and pharmaceutical industries. On the first project—a large e-commerce platform—I was hired as the first engineer with previous Ruby ecosystem knowledge for a remote team based in another state. I served as the on-site ThoughtWorks team representative, helped prepare inceptions, and synchronised priorities across multiple stakeholders. I led major testing and design improvements to their codebase and enhanced delivery provider integrations, resulting in more stable and reliable services.
On the second engagement—an India-based project for a large US pharmacy company—I coached the team on design skills and TDD practices through pair programming. This resulted in significant improvements to their product development flow, including reduced bugs and faster delivery times.
Agile OO TDD DDD CI CD Consulting skills Ruby Java golang rest
Caelum teacher of Object Oriented Programming for 6 months. That was a great experience of teaching in one of best "bootcamps"-like in Brazil. For other professional experiences including positions at Locaweb, GoNow, and other organisations, please refer to my LinkedIn profile.