For my 4th co-op work term as a Software Engineering student at the University of Victoria, I had the opportunity to work as a co-op developer at Redbrick.
I was excited to learn new things, work with a dynamic group of people, and improve my ping pong skills. It was going to be a huge learning experience, especially since my previous work terms had all focused on mobile development for Android, which uses Java.
Things started off nicely with a tour of the office, an introduction to the company's products and history, an overview of their Agile process, and a detailed description of DeskMetrics - the project I get to work on.
Right away, I got to join the team in daily stand-ups and a backlog grooming session - the opportunity to work with the Redbrick products team was a great way to learn lots quickly, and have experienced developers keep me on the right track. In the breaks between learning about the project, I spent time setting up my workstation, figuring out how to use Vagrant for a development environment, and starting to read up on Django and Angular.
On my second day, I was given my first task! After digging around in the code base, and familiarizing myself with the project structure, I was able to update the label on a text field. Woohoo!
Although this was a simple, one-line change, it gave me a chance to make sure my git workflow matched what the rest of the team was doing, and to iron out other little setup issues on my workstation.
As I started to work on more tasks, I quickly realized that although I could figure out a lot of what was going on with Django on the fly, I’d need to spend some time getting familiar with some of the basics. I started by working my way through Django’s “Writing your first Django app” tutorial, to get familiar with Views, Models, Database Migrations, Templates and more. Between that and reading some of the Django REST framework API guide, I had a lot more understanding of how the “magic” actually worked.
This got me to a point where I could productively work on easier tasks, and only have to spend time researching specifics for more complex tasks.Once I started working on more complex front end tickets, I realized I needed to learn more about Angular and how its life-cycle worked. To get started, I worked through the Code School Shaping up with Angular.js tutorial, to learn about expressions, directives, and services.
Next, I spent some time looking up specific Angular topics in the Angular Developer Guide. One of the topics I found the most useful was the section on scopes, specifically the last part of it that covered how Angular integrates with the browser event loop.
I found that after looking at these tutorials and some of the documentation, I was able to get a grasp on enough of the basics of Angular and Django to start being productive, and spend time learning the specifics as needed. Over the following weeks, I had opportunities to work on exciting parts of DeskMetrics, such as adding extra data to an existing analytics report, investigate and fix a couple bugs, add a couple new features, and perform a significant refactor of how the dashboard charts request their data.
To sum up my co-op experience, and all of the things I learned in a few words is tough, but aside from getting to be part of a major product launch, I had a ton of fun, and even improved my ping pong skills!
Redbrick is proud to be a supporter of the Co-operative Education Program at the University of Victoria. The “co-op” program enables students to alternate time in the classroom with paid work terms in their chosen field of study.