10 years as a professional developer.
On December 8th, 2018, I celebrated 10 years as a software engineer. This post is a collection of my memories and lessons learned over the years.
A decade ago, I was living in Brazil and had just started as an intern at a multinational consulting firm. Our office was small, and my main role was supporting and fixing bugs in a Telecom service. My proudest moment came when the service couldn’t process a customer order for 31,000 new lines due to a timeout issue. I discovered the problem was caused by two nested loops, and I refactored the code to separate them, which allowed us to successfully complete the processing. I was proud because it was the first time I used algorithm analysis to solve a real-world problem outside of college. The most valuable lessons I learned at Accenture were how to communicate and collaborate with different people.
Between 2010 and 2011, I moved away from my hometown, worked at two different companies within seven months, and then moved back to work at Accenture again for the entire year of 2011. At that point, I was feeling disillusioned with my career, mostly because I was working on CRUD applications that offered little learning or interesting challenges.
In 2012, we moved to Brasília, Brazil’s capital, where there were many contracting opportunities for Java developers like myself. I landed my first job as a contractor, marking a fresh start and renewing my commitment to my career. That year, I earned three Java certifications (Java Programmer, Java Web Developer, and Enterprise Java Developer) and one IBM certification (Object-Oriented Analysis and Design). I also completed Hibernate/JPA training and became the team expert in ORM. During this period, I mainly worked with the Java EE stack and Flash ActionScript (RIP). It was around this time that I developed a strong interest in Clean Code, coding best practices, and software architecture.
In 2013, I joined a startup, but it didn’t work out. There was a clear mismatch between the CTO’s expectations and my own. Two key lessons emerged from that experience:
- Never work at a family business where you’re an outsider.
- Always align expectations upfront.
Later that same year, I started a contract with the Brazilian Ministry of Education, which I thoroughly enjoyed. I worked on a project that helped Brazilian students study abroad, serving as the primary owner of the system’s reporting module. I handled requirements, design, development, testing, and monitoring deployment. That role taught me the importance of taking full ownership of the products I build.
Then, in 2013, I received an email from an Amazon recruiter inviting me to a hiring event in São Paulo, Brazil. Initially, I didn’t think I stood a chance—algorithms had never been my strong suit—but I pushed through the imposter syndrome and decided to give it a shot. For the next three weeks, I worked day and night solving problems and revisiting key data structures and algorithms: lists, trees, sets, maps, sorting, searching, and graphs. Long story short, I passed the hiring loop and received an offer from Amazon to join them in Seattle, WA, in October 2014.
Since 2014, I’ve worked at Amazon on three different teams: Amazon India, Customer Reviews, and now AWS Builder Tools. At Amazon, I’ve learned all sorts of fascinating things: how to monitor and measure metrics, set up alarms, and orchestrate solutions that interact with multiple services. I also had the opportunity to write my first API that would be used by millions of people worldwide. I’ve written and read code in a variety of languages. Now, at AWS Builder Tools, I help create tools that enable Amazon engineers to be more productive and deliver solutions with higher quality.
That’s the 10,000-foot view of my career—starting as an intern in a small office in my hometown and becoming a software engineer at one of the world’s largest tech companies. I hope this article inspires others to carve their own paths.
Cheers!