This is a blog post on my experiences, hurdles, and lessons learned during my initial months with ComplyAdvantage. The goal is to share insights as well as provide tips for new Junior Software Engineers or anyone new to the organisation. It will shed light on the company culture and help you understand what to anticipate and keep in mind during your first few months at the company.

Week 1: Welcome to ComplyAdvantage

My first week at ComplyAdvantage was mostly about understanding the business, what my team revolves around and looking through the extensive codebase of the services my team owns (e.g.‘Gerald’, ‘Arpeggio’ and the ‘Orchestration Layer’). The complexity was quite a lot to take in at first, but it was interesting to see the interplay of different services and libraries, which was something I had not previously encountered.

Upon my start on Monday, I had a meeting with my line manager who clearly outlined the expectations for the week. Subsequently, I was introduced and exchanged virtual hellos to each member of my team, also known as a 'squad' within ComplyAdvantage. Having consistent guidance from my line manager helped me settle into my new role. We regularly had calls where he explained anything I didn’t quite understand in further detail, whether this was ambiguities regarding the business, the codebase or anything I had problems with.

Week 2: Adding retries to webhooks and deploying to production

My second week at ComplyAdvantage was marked by the significant milestone of making code changes to an existing service, creating my first Merge Request (MR), and subsequently deploying those changes to production.

The task was to add retries to webhook requests sent to a service called Gerald (sends notifications for ‘Customer Screening and Ongoing Monitoring’, aka CSOM) from another service called Arpeggio (CSOM application). To equip myself with a thorough understanding of the task and the system I read through the existing documentation and sought clarifications from my line manager where needed.

Before jumping into coding, I familiarised myself with the basics of Golang, as the codebase is primarily written in it. Although I was initially unfamiliar with Golang I quickly picked it up from various resources via the help of my trusted old friend Google.

The deployment process to production can be briefly outlined as follows:

  1. Create a Merge Request (MR) for the code changes.
  2. Have the MR reviewed and approved by typically one or two fellow developers.
  3. Once approved, merge the changes into the main branch.
  4. Deploy the changes to a staging environment or playground to ensure they work as expected and that the service's functionalities are preserved.
  5. Sequentially deploy the changes to all production regions. I performed what is called Active Monitoring, which means verifying at each stage that all functionalities are maintained, nothing is breaking and that the change I made had its desired outcome using our observability stack. I could see the Counter metric I added increase every time my code triggered a retry. My change was therefore successful.

Deploying to production for the first time was admittedly intimidating. However, it felt great knowing that the small and humble change I made would have tangible benefits for our clients and improve the service going forward. Throughout the deployment process, I had the help and guidance from a fellow team member and it was invaluable in helping me gain confidence and know what to look out for. It didn’t take very long for the changes to go out to all the regions around the world, and very soon, I saw the tangible effects my changes made.

Tech Onsite and meeting the team

The company has a biannual event called a 'tech on-site'. This is a one-day event where people from all over the world working for the company gather in one location to have some fun and meet each other face-to-face.

My first onsite event involved

  • 🤝 Squad assemblies where we got to know everyone by answering a random question posed to each of us. E.g. ‘If you could have any animal as a pet what would it be?’ (My answer was a sloth as it is very low maintenance so I can just leave it to hang on the curtain railings at home all day)
  • 😂 A hilarious game of Chinese whispers that escalated into a mega session involving 40-50 people
  • 💣 A nerve-racking bomb defusing game
  • 🏗️ And the grand finale: A spaghetti and marshmallow tower-building contest. (Note: The software engineers' prowess in structural design was... shall we say, quite amusing 😅)

Overall, the day was filled with laughs and fun with people I had never met before but can confidently say that after sharing some struggles about a spaghetti tower's structural integrity, I felt more comfortable grabbing coffee and lunch the next time I saw them.

Reflection: Growing as a software engineer

Looking back at the first few months at ComplyAdvantage, I've learned and grown a lot. I've navigated a large codebase, got acquainted with new technologies, switched between various tools, and deployed to production multiple times. I've also seen how my work ties into the larger picture of fintech and contributes towards the company’s mission and goals.

It has been extremely fulfilling and exciting to work in an environment where, starting as early as the second week, even Junior engineers have the opportunity to make significant contributions that positively impact our clients.

These months have not just added to my technical skills but have also taught me about adaptability and continuous learning, which is arguably the most important thing a software engineer should have. It's been a valuable and fulfilling journey so far, and I look forward to what challenges (blood, sweat and tears?) lie ahead. 😊

🚀 Tips for new starters

  • 🤗 Take full advantage of on-site events and in-person events to make friends and engage with people from other squads and tribes. Nothing beats a real handshake compared to a digital one 🤝
  • 🔍 Explore the search functions in Gitlab, Confluence, and Slack as though you're a detective. Chances are, the answers to your questions are already there
  • 🧠 But having said that, if you’re blocked on something don’t be shy and reach out to someone❗
  • 🔐 Patience and resilience are your best allies when tackling complex problems, in addition to the tip above 💡

Author: Xiaohan Ma