Post

Looking back to connect the dots

Cover Large Web Apps

Introduction

Today I woke up and I realized that I have been working in the software industry for more than 10 years (To be more exact 👴 14 years now). I have seen many people grow in their careers, and I have always been curious about how they did it, everyone has a story to tell. I have read many articles and books about this topic, I have worked in different industries, and changed the career path a few times, so finally I want to share with you some of the lessons I have learned from my career.

The beginning

Software Test Engineer: The old good 2000`s

Since I started my career I wanted to write code (I’ve always consider myself as a self-taught person), however for someone without experience nor a degree in computer science, it was hard to get a job as a software engineer in 2006. I started as a Software Test Engineer for a Company of Financial Services, making sure the Cobol applications were working as expected, while I was working to type faster, learning DOS commands, reading books about C++ and Java, understanding how the slow Internet worked, meeting people with random nicknames in a IRC with proud hackers, and trying to understand the Linux world, and playing with JavaScript, CSS, and HTML.

At that time knowing how to code in Java and PHP was a trending topic in the world, we didn’t have the clear concept of Frontend and Backend, we were just developers or programmers, probably life was simpler back then.

After that I grew up becoming as a Semi Senior Test Engineer in a Payments industry, working with Java, Maven and moving to the web world, playing with Selenium to automate some flows, Jmeter to test the performance of the applications, and Mantis to report the bugs. I still had my desire to move to the development world, so I got the Java Programmer certification and a few months later I got my first job as a Software Development Engineer.

Software Development Engineer: The new era

After getting my first job as a Software Development Engineer in a Ads and Marketing industry related to real-state, I learned about many ways to the job working in a dynamic team and a fast pace way. I ended-up working late many times, refactoring code, reading other’s code, learning from mistakes like going to production without testing, fixing things on production, having scripts to fix things directly in the database. Probably at that time the things were not as organized as they are now, and I thought the Agile methodology was a joke.

Moving forward I found new opportunities on the road, I started working as a Semi Senior Developer in a Health Care industry. This time the things were better, working with talented people, learning about Design Patterns, many JavaScript concepts and understanding how jQuery worked. I was amazed to work with such a talented team, that I felt the first time about the Impostor Syndrome.

Quickly I learned about new ways to deliver code, to have a proper testing review, agile stories described using BDD, versioning, changelogs and for the first time I was working as a proper Full Stack Developer creating full end-to-end features, however I had the feeling that I was missing something, and it was the opportunity to work in another region of the world.

Leveling Up the career with English

In 2014 I realized the only way to grow in my career was to learn English, so I started learning by myself with Youtube videos, practicing Duolingo, reading books in English, and watching movies and tutorials with subtitles, just to accelerate the learning process. After that I started taking Interviews in English with the shame of not knowing how to speak properly, and sometimes I felt frustrated about my bad pronunciation. After a few months of consistency I got my first job as a Senior Software Engineer in a company with presence in the Digital Agency World.

At this company everything was different, the people were more talented, the projects were more complex, the clients were more demanding, the challenges were bigger and the salary higher. I had to speak often in English to give my status in the daily meetings, present the demo to the clients in the end of each sprint, I was working closely with the Product Owners, Software Architects, QA Engineers, and a lot of talented people in some internal communities, and to sum up, I was mentoring some Junior Developers and Interns.

When I had the opportunity I moved from the Back End Role to the Front End Role which I enjoyed more, mainly because I loved to see the interaction on every web application and feel how my work contributed to an amazing user experience to the clients, and at the same time I was creating something beautiful and useful on top of technologies such as Nodejs, Express.js, Backbone.js, MVC patterns, bundlers, pre-processors and different levels of testing.

Don’t settle, be bold

After almost two years of working, learning, growing, and sharing my knowledge, I realized the my it was time to keep moving forward in the Career path and take new challenges, so I moved to another company as a Software Developer in a similar industry, but shortly I got a better and unique opportunity to work as a Full Stack Specialist in an almost green field project for a company that was just acquired by a big company in the Financial industry.

Working for a bank at first glance seemed strange, but it was not just a bank, it was a startup inside a bank, and the project was to create a Digital Experience from scratch, so I was part of the Core Team that was responsible to create the Front End and Back End of the Digital Experience for customers. I was working with the Product Owners, Software Architects, QA Engineers, DevOps Engineers, Security Engineers, working with global teams, coordinating with the UX Designers, Business Analysts, Project Managers, and Stakeholders.

At this time working in a product based project I learned many things related to Product Experience, User Experience, Design Systems, Docker, Security, Processes, Compliance, Monitoring, KPIs, OKRs, Agile Teams and how to work in a cross functional team, working in a defined domains, creating Microservices architecture that could be used by many applications, and later on creating Micro Frontends that could be used by many teams. It was a great experience to work in a Digital Transformation project, and I felt that I was part of something big, I was part of a community leading the Front End part with Angular and other technologies such as Nodejs, TypeScript, Reactjs.

Time flights when you are having fun, and after a few years working in this project, I was promoted to Senior Advanced Software Developer, and then to Software Architect, I think I was living one of my dreams and greatest goals in my career, and I was proud of myself, but I knew that I was missing something, and it was the opportunity to work in another region of the world.

Moving to another country and starting again

During COVID time when the world was locked down, I got an opportunity in the same company to work in Canada, at that time I had another offer from a Germany company with a bigger role, however, I thought that working in an English speaking country would be better for me, the only downside was that I had to start again from the Software Developer role, but I thought it was a good opportunity to learn new things, meet new people, and grow in my career.

In February 2021, I finally moved to Canada working as a Software Developer, I contributed to Design System and using my skills in Front End, Back End, Architecture, negotiation I had the challenge to run a Global pilot project to promote the Software Reusability in the company, and I was part of the Global Team working with people from different countries, and I was proud to be part of the Global Community.

In order to work in a Global Team I had to learn more about Time Zones, Cultural Differences, Communication, Remote Work, DevOps, KPIs, OKRs, prioritization, and how to lead by example, creating a Community of Practice to share knowledge, reading a lot of InnerSource, identifying pains or challenges from other teams/regions, and finally understanding more about the Business and the Company Strategy, reporting to Managers, Directors and VPs.

By time that I’m writing this article I’m working as a Senior Software Engineer in a Global Team, helping to improve the Developer Experience, promoting the Software Reusability, writing technical documentation and helping teams in some Large, Distributed and Global projects.

Connecting the dots

In summary looking back and connecting the dots I have:

  • Worked as a Tester Functional Engineer, Automation Tester, Back End Developer, Front End Developer, Full Stack Developer, Tech Lead, Software Architect, junior many times in some fields, but also mentor of many people.
  • Been in different industries such as Financial, Payments, Ads and Marketing, Health Care, Digital Agency, Financial, Bank, Digital Transformation, Global Team.
  • Learned there are some pillars, fundamentals and principles that don’t change very often, while some technologies, frameworks, libraries and tools change every week and use different names.
  • Failed many times, but I learned from my mistakes, and I tried to improve myself every day.

Right now I’m learning about how to become a Staff Software Engineer, and I’m pretty sure the dots will connect in the future, and I will be able to share more lessons learned from this path, however, after connecting the dots I also realized that I have some regrets that probably could have changed my career path, and I want to share with you some of them.

My regrets

I wish I had …

  • … started to write code earlier.
  • … finished many of my side projects in my Github account.
  • … learned Data Structures and Algorithms earlier.
  • … learned about Design Patterns earlier.
  • … kept writing articles and sharing my knowledge with the world.
  • … started to learn English earlier.
  • … started to learn about Docker and Kubernetes earlier.
  • … learned how to manage my time and speak in public earlier.
  • … learned how to negotiate and lead earlier.
  • … learned about Cloud Computing earlier.
  • … mentored more people and learned from them.
  • … given more talks and workshops in conferences.
  • … documented more about my career path and lessons learned.

I know that I cannot change the past, because that past made me who I am today, however, after connecting the dots I can influence the future and change the present, so I will keep learning, growing, sharing, and connecting the dots to become a better person, a better professional, and a better leader.

This post is licensed under CC BY 4.0 by the author.