I was rather lost in my CS Ph.D. program at the University of Waterloo. With a degree from another country (UK) and in another area (maths), it was not easy to find an entry-level Software Engineering job, especially against the steep competition of Waterloo grads.
After months of preparation & interviews, I was prepared to accept any full-time Software Engineer offer from anywhere. I’m grateful the team at OANDA took a chance on me as a new grad, so I signed up without any hesitation, or the faintest idea of what could be negotiated.
The Work
Software Engineer (Sep 2015 – Apr 2016)
OANDA had just gone through an “Agile transformation” before I joined, and I landed on the team responsible for all the customer interfaces (i.e. desktop GUI, REST API, MT4 integration).
After a few weeks of onboarding, I was a major contributor to a UI refresh project for the desktop GUI written in Java.
Over the quieter holiday season, I also volunteered to collate & analyze some user data (e.g. their UI setup, language, etc), looking for insights to help personalize the product. This was an early exploration into data science and machine learning.
Exit
I was disheartened by a number of compounding factors around performance & compensation:
- I found out that I was meaningfully underpaid, as I didn’t know how to negotiate.
- I was given the same default “medium” rating as a visibly underperforming fellow new grad, with the explanation of “insufficient data”, as we had both only joined around September.
- For the same reason, I was given $0 end-of-year bonus, while I felt like I deserved a pro-rated amount, or at the very least a $50 Amazon gift card.
Being a new grad in my first full-time job, I didn’t know what to do with my dissatisfaction, other than to leave, so I did.
Takeaways
- Always negotiate an offer.
- On the technical side, I gained familiarity with the fundamentals of a modern software stack (e.g. git, jira, Jenkins, REST, etc.) as well as the modern development process (e.g. branching, code reviews, continuous integration & delivery).
- I also picked up a good amount of tips & tricks from my experienced coworkers on debugging, navigating a legacy codebase, and collaborating with another team.
- Organizationally, I received somewhat formal “Agile” training, and was instilled with a process-driven development philosophy, which I followed rigorously for the first 5 years of my career.
- I learned a lot about the domain of foreign exchange, kick-starting my long-term interest in the FinTech space.
People
- I appreciated the leadership of Chris Wells & Jay Primeau giving me a chance to join the team.
- Rob Danek and Alan Chan taught me so much about being an effective software engineer, and I’m glad to have become good friends with them too.
- Michael Reimer became a mentor who I’ve kept in touch with to this day.