W23 and S23 @ Wave

September 11th, 2023

For the winter and summer of 2023, I had the opportunity to join Wave Financial as a Software Engineer co-op student. Below is a reflection of my time there where I'll share my goals, what I did, and general thoughts on the experience working on their banking and accounting team.

Employer

Wave is a financial technology company that specializes in providing financial services to small business owners and entrepreneurs. Based in Toronto, Canada, Wave Financial was founded in 2009 by Kirk Simpson and James Lochrie. The company gained significant attention for its free accounting and invoicing software designed to streamline financial management for small businesses. Wave's products included accounting, invoicing, payroll, and receipt scanning, all of which aimed to simplify the financial aspects of running a business. In 2019, H&R Block acquired Wave Financial, further expanding its reach and services in the financial technology industry.

Wave Financial's mission was to empower small businesses with the financial tools and resources they needed. The company's approach of offering free accounting software with optional paid add-ons made it a popular choice among startups and small businesses looking to manage their finances more efficiently.

My Role

My role at Wave was as a full-stack/mobile software engineer. I worked on two different teams, the Banking team and the Accounting team. On the banking team, I worked on redesigning the banking onboarding flow in their mobile app using react native.

Once I switched to the Accounting team, I began working on Wave's new receipts feature. I worked on building the UI on both desktop and mobile as well as working on some of the backend changes as well.

Along with the above, I also worked on bug fixes, creating Datadog monitors, and demoing new features.

Winter Goals

  1. Familiarize myself with the company's tech stack: React Native, GraphQL, AWS

    This has been a consistent goal across my various co-op placements. Not to learn the same technologies but to become familiar with the company's tech stack. By the end of the term, I was quite proficient in React Native and GraphQL. However, my team's focus didn't heavily involve AWS, so my opportunity to delve deeply into cloud infrastructure was somewhat limited. Nonetheless, I remain committed to actively expanding my knowledge in this area.

  2. Write end-to-end tests using the Detox testing framework

    While working with the accounting team, my main responsibility was helping to build the new receipts feature for the mobile app. To thoroughly evaluate the app's functionality, we needed to develop end-to-end tests. By the end of my term, I had written multiple detox tests and had become quite skilled at creating robust tests. I also learned how to handle some of the unique challenges presented by each operating system.

  3. Integrate 3rd party vendors

    I primarily worked on the front-end aspects of the project, whereas the 3rd party integration with our vendors was handled mainly on the backend. As a result, I didn't have direct involvement with the vendor's API or its integration into our app. Nevertheless, I learned a great deal about the API integration process through active participation in meetings and communication via Slack channels.

Summer Goals

  1. Learn how engineering practices are determined and followed

    Throughout the co-op term, we organized several personal events, including workshops where our team would collectively assess our engineering practices. These sessions provided a platform for us to brainstorm potential enhancements to our practices, explore the integration of new technologies into our development workflow, and evaluate the continued relevance of certain practices. This experience proved highly valuable, as it not only deepened my understanding of the company's specific practices but also exposed me to broader industry standards.

  2. Use Sentry and Datadog to monitor and log data and errors

    During my summer at Wave, I wanted to enhance my proficiency with logging and monitoring tools, an area in which I had some exposure in previous co-op positions but lacked in-depth knowledge. Throughout this work term, I worked on creating new monitors on Datadog and analyzing errors in Sentry. These tools, I realized, are incredibly feature-rich, and while I made significant progress, there remains much more to learn. This ongoing learning journey is something I intend to prioritize in my future endeavours.

  3. Learn more about typical engineering career progression

    I had a general understanding of different career progressions in software engineering, but I wanted a deeper insight into these roles to help me chart my career path. During some one-on-one discussions with my manager, we explored engineering career progressions in more detail within Wave. This gave me a much clearer picture of the various roles, helping me clarify my career aspirations.

Conclusion

Overall, my time at Wave was a great experience. I worked with some awesome people on multiple teams, including developers, designers, product managers, and more. This was also the first co-op term where I was able to meet my team in person multiple times. Not only for social events but also on normal working days. I enjoyed working on Wave's new receipts feature, and I'm excited to see where it leads the company. Looking back, it was a fulfilling and rewarding experience in my professional development.

photo of the south corner of the new office

Acknowledgements

I'd like to thank everyone on the banking and accounting team for making my time at Wave incredibly great. Each team member generously offered their assistance whenever I encountered challenges, helping me arrive at effective solutions. I'd also like to thank my team manager, Fitore, who skillfully facilitated meetings, organized events, and always sought feedback to improve the working dynamic. Lastly, I want to thank the other co-op students. While we may not have all worked together directly, their presence significantly enhanced the overall experience, making it more enjoyable and relatable.