Skip to main content

Cassandra Wells

SFU Student Undergraduate
Applied Sciences › Computing Science › Software Systems
Co-operative Education › Local Co-op

Position Title
In my time at Improving Vancouver I have been able to take the skills and knowledge that I have gained from SFU and been able to learn how it can be applied in the real world.
Experience Details
Introduction + Preparation
Previous Experience

As this was my first Co-op in software development, all I had to go off of were the skills and knowledge that I had gained while at school and the hackathons I had attended. Through the courses I had taken and the hackathons, I learned a lot of different general skills and knowledge in working with programming. However, I lacked any real-world experience, such as extensive testing, code reviews, and writing long-term maintainable code, which are essential for professional software development.

Preparation Tips for Future Students

When looking for a Co-op, employers aren't always seeking someone who already knows everything, as they understand that students often lack experience. Instead, they are often looking for someone who can demonstrate their ability and willingness to learn new things. Throughout your Co-op experience, you will encounter numerous challenges and situations where you might have to admit, "I don't know," and that's perfectly fine. What matters most is showing that you are actively trying to figure things out, being open to seeking help, and, most importantly, being receptive to assistance from others.

Above all, during your Co-op, your main objective is to learn and gain experience. So, approach it with an open mind, a willingness to learn, and the perseverance to work through failures.

During my Experience
Orientation and First Weeks

Orientation at a new company can be very overwhelming, and working remotely can make it even more cumbersome as there is no one physically present to guide you through everything. The first few weeks were a blur of setting up software and accounts, learning about how my team operates, understanding the company's history, attending individual meetings with all of my team members, administrative staff, and other teams.

A lot of information was thrown at me, and it was very easy to become overwhelmed. However, what helped tremendously was having two "buddies" from my team who were there to support me during the initial onboarding process. They were always available to help with any questions, no matter how trivial, and they were incredibly welcoming and happy to assist me until I felt more comfortable and settled in my role.

Learning and Adaptation

As this was my first time working on a large codebase within a team, there were numerous new things to learn and adapt to.

The first aspect was the realization of how much slower code is written in the real world compared to working on projects for school. While school projects often start from scratch and follow a set grading curriculum, working with a substantial codebase requires diving into the existing code, understanding its workings, and then carefully making changes to achieve the desired outcome without causing any unintended issues.

Speaking of avoiding issues, due to the complexity of the codebase and the multitude of moving parts, every piece of code written had to undergo extensive testing. Ensuring that the code worked precisely as intended and remained robust against potential changes in the future became paramount.

Lastly, the introduction of code reviews was a significant adjustment. Every piece of code written went through multiple rounds of reviews by several team members. It became evident that writing code was just the initial step; the real challenge was ensuring that everything met the high standards set by the team, leading to numerous revisions and code rewrites.

Accomplishments and Challenges

Throughout my software development Co-op job, I encountered numerous challenges that differed significantly from my experiences in school. Some of these challenges were unexpected and highlighted the uniqueness of real-world development. As someone with limited experience, estimating the time and effort required for certain tasks proved to be tricky; I sometimes found myself overestimating or underestimating the complexity of certain issues. Some tasks took much longer than anticipated, some were far more intricate, and occasionally, despite investing considerable time and effort, we had to come to terms with the realization that certain goals were either unattainable or no longer aligned with our objectives.

However, it is precisely these challenges that make my accomplishments even more rewarding. Each time I contributed code that made it into production, be it a functional addition or a bug fix, I could proudly say, "I accomplished that." Though in hindsight, the changes may seem modest, I have developed a deep appreciation for the extensive thought, problem-solving, and testing that goes into every piece of code.

Social and Extracurricular Activities

During my time at Improving Vancouver, I have witnessed how they prioritize work/life balance by consistently organizing various activities and social events for colleagues to participate in. They place a strong emphasis on fostering a sense of community and camaraderie among team members.

Among the regular activities are coffee meetings, where colleagues are randomly paired up to chat and connect, providing an opportunity to get to know each other better. Additionally, there are weekly social sessions where we all come together online to hang out and play games for an hour, promoting a relaxed and enjoyable atmosphere. Furthermore, the company hosts random draws, granting lucky employees the chance to enjoy a paid lunch with others, further reinforcing a sense of belonging and appreciation.

Beyond these regular events, Improving Vancouver arranges large social gatherings throughout the year. These events range from movie screenings and barbeques to social dinners, adding a touch of celebration and fun to the work environment. Moreover, there are informal gatherings organized by colleagues themselves, such as rock climbing or badminton sessions.

Reflection & Tips

This job has been an exciting experience, allowing me to meet new people and acquire new knowledge. I consider myself fortunate to have had the opportunity to work for this company, particularly within the team I'm a part of. I've had the privilege of learning and developing significantly, thanks to my team's willingness to mentor and collaborate with me, and in return I felt that I have been able to make meaningful contributions for them.

Every new ticket I worked on was like a loot bag of problems to work through and solve, each one letting me learn more about the code base, data structures, Java code, and problem solving in general. Although having the hard tickets could be frustrating while working through them, I can look back that all I had learned and gained from going through that experience and use it to help myself on future tickets, or abstract the methods I had learned to just about anything.

Most Valuable Aspects of This Experience

I believe the most valuable aspect of this experience was being able to apply all of the skills that I had learned in school into a real world situation where I could make a meaningful difference. Coming out of this I feel that all of my skills have improved in a big way, completely changing how I even think about writing code.

I now know how to write good clean code that is maintainable, I can write tests to check that everything works the way it is supposed to, I gained insight into how to find bugs using the debugger, I can better look at someone else's code and figure out how it works, I understand how to work and write code as a team, and so much more. All of these are things that I can take forward with me into the rest of my university career and has paved the way for all code I write in the future.

Connection to Academic Studies or Career Goals

This job has reinforced my love for software development by giving me real world experience in what the day to day work is like, along with all of the challenges that come along with it. The multitude of different things I have had the pleasure of being able to work on in my time here has shown me that I should always be open to trying new things and keep my eyes open during course selection to try something new.

Advice for Future Students

Working you first Co-op job in the field of your choice can be intimidating but just remember this is made to be a learning experience. It is expected that you won't know everything and you should always be asking questions, seeking advice from those who are knowledgable, and not be afraid of failure.