The three-course meal from ACL — my experience as a co-op student

Hi, It’s Azmarie,

a Business/Computing Science student at Simon Fraser University. I just finished my incredible 4-month co-op with ACL as a Software Engineer in the team Titanium. I had a great time there learning and growing beyond my expectations. With all the interesting challenges, team collaboration, and career development opportunities that I have been given, I am confident to say, I left as a more skilled, humbled, and well-rounded developer.

Being a foodie and a self-claimed good cook myself, I love a three-course meal where the appetizer gets you excited, the entree is steamy and filling, and the dessert is just the most incredible piece of sweet that one can imagine. I also love making memories with my 5 senses on full blast every meal and every day.

Good working experience is just like fine dining — exciting, fulfilling and it leaves you a sweet after taste.
Photo by Jay Wennington on Unsplash

As I had such a great time working at ACL, I would love to present my experience at ACL as the form of a three-course meal and share it with you.

Bon Appétit!

Appetizer

My journey at ACL was destined to be an interesting one, and it all starts from the interview. People always say “never be late to a job interview”, well luckily I wasn’t. in fact, I arrived one day early.

Because of a competing offer and the 24-hour policy set by my university’s co-op office, I had to make a decision between accepting the first offer and cancel all upcoming interviews, or decline the offer and live with the fact that I may not get another offer for the term. Impossible as it seemed for me, I tried my luck at the third option — call ACL. I was honest about my situation and asked if they could arrange an interview for me on the same day.

And they said yes!

As a joint major student of Business and Computing Science, I had the fortune of a few previous co-op terms in various industry, yet still, my interview with ACL was like no other. I had an interview with soon-to-be my manager Leo Ping, a great leader and mentor, and Alon Sabi, the champion of people and culture in R&D. They started the interview light and breezy by introducing themselves, their roles, and what they enjoyed about working at ACL. Both of them were real and authentic, and they made me feel welcome and included and respected almost immediately.

I can tell from the short 45-minute interview that they are as interested in my personalities and interests as they were in my work experience and technical skills. From the first moment of the interview, the organization shows how much they are committed to creating an environment where everyone feels involved and valued and building a community with the people who connect with these values as well. As the interview went by, I was more confident that ACL would be a good place for me to learn and grow as a Software Engineer.

Entrée

So it starts.

Titanium Team Lunch

I joined team Titanium as a full-time Software Engineer. First time working on an enterprise codebase could be intimidating, and it makes me appreciate more of the support I received in my onboarding week. The ACL Academy online training courses and The ACL Way new hires orientation gave me the knowledge of the industry we are in and the business value our software provides for customers. It was a lot of information in the first week, but I did find it useful later on when I started to develop the cloud solutions because I understood where my work can fit in the grand scheme of the company’s mission/vision.

Participating in ACL’s Hackfest in my first week (Hackfest is a 2-day hackathon where everyone is encouraged to work on whatever you like, be it work-related or not)

Since I had more Javascript experience from personal projects prior to this co-op, I gravitated towards the frontend development as I started taking on tickets. One of the first tickets that I independently worked on turned out to be complete. rabbit. hole.

It was one of those technical enhancement tickets, replacing a <ExternalLink>component with the internal UI library implementation and remove the old code. After making this change, the console threw a TypeError complaining about this.context.t is not a function for an aria-label. Even if the whole App was supposed to be wrapped around a component that provides the context, the context is clearly missing here.

Why couldn’t the React component understand the joke?
Because it didn’t get the context. Get it?

Okay back to the topic, so I came up a few ideas for a few quick fixes:

Fix 1
Me: Wrap the problematic component with the context provider and 💥 this.context appears, I call it magic!
Code Reviewer: 😕 The whole app is wrapped around that, what happened to context? 
Me: 🤷🏻‍♀️
Fix 2
Me: add a passive check for this.context.t in the shared UI component, being a little defensive ain’t gonna hurt nobody 🤫
Code Reviewer: It won’t help the codebase if we just put on a defensive bandage for the ugly, being a little defensive just hurt somebody. 😕 
Me: 🤦🏻‍♀️

Okay, the code reviewer was right, I had to do it the hard way and find out what’s the root cause. With the help of many engineers across teams, soon I realized…

  • PureComponent is suspicious. Interesting article on this.
  • ConnectedComponent is suspicious
  • Passing in as a prop is suspicious

And I went down the Rabbit Hole.

Photo by Victor Larracuente on Unsplash

As we peel back the layers of composition, we end up with the base level component RawButton. And this component is using a helper function getTextFromNode to extract a meaningful aria-label from its children jsx node.

insert drumroll here…

But the function relies on rendering the children first with ReactDOMServer.renderToStaticMarkup(node)and that will NOT have access to context

This was a great learning experience for (the first week) me. Because it taught me some of the core spirits behind ACL’s engineers — relentless. They do not simply put on a bandage to a problem, instead, they ask why and they look for the root cause. Continuous improvement and codebase health really matters here.

This also leads me to my first sprint demo, where I presented Lessons from a Rabbit Hole to talk about my experience of figuring out my way (with a lot of help) through this problem. I am really glad to have worked for a company like ACL in the beginning of my career, where a junior developer is being held to an equally high standard of delivering great quality, bandage-free code, with the great team resources available anytime to help.

After my unforgettable lessons from the rabbit hole, it all becomes easier (and still exciting) from there. 4 months into the job, I have contributed and spearheaded into some important epics that my team focused on, for example, the company-wide rebranding efforts and the exciting React 16.8 upgrade. I was trusted to own and deliver my first 8-point ticket (the lucky 8 is the highest score on our story point scale) in a feature epic. And I also picked up a bit Ruby on Rails doing full-stack tickets!

Dessert

I enjoyed my time working at ACL, not only because of the interesting problems that I got to solve, the knowledge I gained from practicing my skills and guidance from mentors, but also the people, the culture, and the community here. That’s the cherry on top.

Titanium and Alchemist Team Event — Snowshoeing at the Beautiful Mt. Seymour

Toastmaster

If you don’t know what toastmaster is, it’s a c̶u̶l̶t̶ club for the purpose of promoting communication and public speaking skills, and it’s awesome. ACL has its own toastmaster club where sessions are hosted bi-weekly and I became an avid attendee since my first week. Honestly, I am never a fan of public speaking (don’t think I will ever be) but I do enjoy the opportunities of sharing experiences and perspectives with a group of like-minded people. The chair and the speech evaluators (and everyone honestly) were always really generous, encouraging, and also gives great constructive feedback.

After 3 months of being an audience, I signed up for a prepared 6-minute speech and shared my thoughts on Fear — Spring into Action with my fellow toasties. Toastmaster club at ACL is a safe space where people can get vulnerable, but also a place to be connected, engaged, and inspired.

Mingle Over Coffee

Craving coffee at 2 PM?
Craving bubble tea at 3 PM?
Craving beer at 4 PM? (Did I mention the free beer taps??)
Join #mingle-over-coffee channel for a partner in crime!

Mingle-over-coffee is a channel where two ACLers got paired up by a slackbot to meet over a drink of your choice. The point is for ACLers to learn more from the diverse range of people we have here and get to know someone whom we don’t normally work with. All three of my mingling experiences have been great. I learn about what it’s like being an R&D manager, Data Analyst Consultant, and Operations Business Partner, the challenges and opportunities at their roles, and even exchanges hiking recommendations!

Meetup at ACL

ACL Vancouver office is the heart of many meetups hosted in Vancouver — React, AWS, QA meetups and etc. As I am part of a non-profit Design Lab Vancouver, my manager was really supportive when I asked if I could use the meetup venue for the panel. Thank you, ACL!

Conclusion

My work at ACL was interesting and fulfilling, as it was a great mix of growing technical skills, understanding the business value that my work delivers, and collaborating with my super fun and superbly talented team.

4 months go by in a blink of an eye. I feel lucky and privileged to have worked with so many amazing and inspiring individuals.

Voila, I hope you enjoyed it.


Special thanks to my manager Leo Ping and my team Alvin Jiang, Kelly Chan, Max Fan, Mike Polowick, Raul Souza, and Richard Chong for making my adventure at ACL so valuable and precious! 🎉