Featured Student: Jennifer MacFarlane

Jennifer MacFarlane: Computer Science

STUDENT: Jennifer MacFarlane

FIELD OF STUDY: Computer Science

 

"Take different positions in different areas of interest during co-op! This is your opportunity to be curious and explore - you may surprise yourself with what interests you.

 

Also - network! Getting to know your coworkers and peers doesn’t just make work a lot more fun, but helps you build your professional network. "

What is your field of study?

I took the Bachelor of Computer Science (BCS) second degree program and graduated in November 2019.

Why did you choose to enroll in co-op?

I was lucky to have a friend in their senior year of Computer Science recommend the Science Co-op program.

When I learned more about the program, I couldn’t imagine not applying! Not only would I gain meaningful work experience in my field, with the support and resources of the Science Co-op office and UBC, but I would get the chance to experience different areas of expertise and explore my interests at a time when I had no clue which roles existed or I’d enjoy the most.

Enrolling in co-op also meant being able to shift gears and take time off of coursework to apply what I’d learned in class.

Which positions did you work during co-op?

I worked at two different companies.

My first placement was an 8-month co-op term as a Web and Mobile Developer Co-op at BGC Engineering, an international consulting firm that provides professional services in applied earth sciences, where I worked on a geological engineering app.

The second was a 4-month term as a Software Developer Co-op at Hootsuite, a social media management platform, where I worked on the marketing website.

Walk us through your role as a software developer at Hootsuite.

During my role as a software developer co-op at Hootsuite, I joined a team of software developers working on the marketing website, which included building pages, apps and custom components using ReactJS and PHP to create the content management system (CMS).

I worked closely with the others developers on my team, as well as design and marketing, to deliver on sprint work and iteratively build out features in an agile environment. I felt like a part of the team while we completed tickets together, as well as owning smaller features with the support of my manager and the team’s guidance.

Was this a position that you initially saw yourself in as a Computer Science major?

Yes - my intent was always to become a developer.

Although my background in the arts made the journey to becoming a developer an uphill battle at times, as I had to (what felt like) rewire my brain to think differently, I always wanted to be a dev.

To this day, coding and solving problems is super rewarding for me – that’s why I continued on the technical track to where I am now as a senior engineer.

Can you share any projects that you worked on with BGC Engineering Inc.?

At BGC I worked on a geological engineering app called Cambio (you can check it out here).

It used the ArcGIS API in the .NET stack to assist with geohazard risk management - replacing the previously time-consuming and often manual work geological engineers would do in the field previously.

I worked across the stack, touching databases, backend, frontend, mobile – and even some design with the support of my team!

Did you use coding languages you were familiar with from school or use industry-specific software? How did you find the transition from academic learning to working in your industry?

Most of the languages and frameworks I used I had not yet been introduced to at UBC, as I did my two terms of co-op after completing only CPSC 210, 221 and 313.

However, I actually feel that having learned foundational concepts in academic-specific languages (like BSL in CPSC 110) prepared me to be a better developer. This is because it taught me to be language agnostic - many of the same software engineering principles, paradigms and philosophies apply across many different languages, so having a solid grasp of the basics helped me to pick up new languages fast as well as pick up new technologies when switching jobs.

Personally, I found it much easier to pick up languages on the job vs. in an academic setting - school teaches the more abstract concepts and industry solidifies this knowledge through practice with industry-standard tools and languages.

Were there any classes that you found especially helpful with preparing you for working?

All the required CPSC classes were integral for preparation for work and gave me a solid foundation on which to build.

In particular, I loved CPSC 310 - the project was open-ended, fun and I still use a lot of the theory that I learned from this, including test-driven development and the application of data structures and algorithms.

I also found CPSC 304 to be very relevant in my career, as databases are pretty ubiquitous. CPSC 313 gave me a deeper understanding of how programming, computers and mechanisms like caching work.

One class I wish I would have taken was CPSC 317, as I find that’s a bit harder to learn on the job vs. a classroom setting. I also enjoyed taking electives like PSYC and GRSJ classes. Arts classes helped me become more well-rounded: software engineering isn’t just about sitting down and coding - often the hardest problems to solve are not coding problems but people and communication problems!

Can you share your favourite experience while in co-op?

It’s so hard to choose!

I was lucky to have managers and teammates at both of my co-op positions that encouraged and challenged me. That said, I really enjoyed learning ReactJS with the help of my teammates at Hootsuite, as well as spending every single Friday lunch that summer eating pizza as a team at 33 Acres next door.

Building those relationships, both on the job and at informal social events, made me mentors and friends that I still see regularly. I loved the team and experience so much, that I ended up joining Hootsuite as a new hire after graduation.

What was your best achievement in co-op?

Owning and delivering my own project (“epic” in software development terms) at the end of my last co-op term.

I built a mobile navigation system during my term and it ended up being used in production code! It cemented what I had learned during my 12 months of co-op and helped me build confidence in my skills and in myself in general.

What did you feel most challenged by and how did you overcome it?

Probably the feeling of being overwhelmed by the amount of things I didn’t know and not knowing where to start on a problem. I overcame this in a couple ways.

First off, by communicating. I would ask questions early and often. There’s no shame in asking questions! Being open about what I did not understand and asking for help after being stuck on a problem gave my team the opportunity to coach and teach me. Importantly, before I asked my teammates for help, I spent at least an hour working on the problem and made a bullet list of what I had tried already. This clarified where I was stuck for the recipient of my question and made the most of their time.

I would also try to break down problems into manageable pieces that I could reason about independently. Making that prerequisite bullet list, before asking a teammate questions, meant that I had to try a few things on my own first! By thinking about problems piece-by-piece, I wrapped my head around the problem at hand and formulated better questions when they inevitably came up.

I’ll add that asking good questions and breaking down problems is a skill that I am continuously building and refining; it comes in handy every day in my career.

How do you feel co-op helped your personal growth?

Co-op helped build my confidence - not only in my area of expertise, but in myself.

I learned to be resilient and to develop grit: to persevere through challenges, to take accountability, to give and receive feedback and to celebrate wins as a team.

How do you feel co-op has helped your career?

Co-op has been invaluable in my career.

I even ended up returning to one of my co-op employers upon graduation. The experience that I gained during co-op helped me stand out as a new grad candidate and gave me experience in different areas. When I chose my first employer after graduation, I knew I would enjoy working there.

What advice would you offer future co-op students?

Take different positions in different areas of interest during co-op! This is your opportunity to be curious and explore - you may surprise yourself with what interests you.

Also - network! Getting to know your coworkers and peers doesn’t just make work a lot more fun, but helps you build your professional network. Eventually that network will help you take new steps in your career when you are ready for a change or new opportunity. You can make the most of this opportunity by participating in social events, putting your hand up for volunteering for opportunities that arise at work (social or otherwise), keeping an open mind and having a positive attitude.

What are you looking forward to after graduation?

I already graduated, but I can tell you that I looked forward to saying goodbye to tests and hello to starting full-time at an employer I already knew I’d love!

Published: January 2024