Sunday 7 February 2016

Co-op Reflections 2.1: (Overdue) End of Term Thoughts

How has a month into the new year already passed? Between a flurry of holiday celebrations and the start of a new school term, I haven't had the opportunity to sit back and reflect on all the things that I learned throughout my second co-op term. 

Companies Big vs. Small
After spending my first co-op term at a very small company with around ten employees, working at BlackBerry was a huge change. Not only was the culture very different, but there were suddenly so many processes to get used to; from online seminars on protecting IP, to meetings on the results of user studies for our apps, it was clear that everyone was a lot more careful regarding all aspects of their work. This was an interesting new perspective, as all of a sudden there were many more people, other than engineers, invested in a single product. I got to spend a lot of time in meetings that ranged from "what does this have to do with me" to fresh insights into things that I never would have considered about the software that I was working on. This was really valuable to me, and I really enjoyed hearing what people in different roles had to say about both the development and business sides of the company.

Doubting Myself
Things were actually really overwhelming during the first couple of weeks. During my previous term, our codebase was tiny and, having started a major portion of it from scratch, I was very familiar with the majority of the code. After being used to such a comfortable advantage, the much larger and confusing codebase at BlackBerry took some time to get used to. Furthermore, the extent to which I was familiar with Android consisted of single-activity lab applications from ECE 155, or what should more accurately be known as "not-really-Android-applications-at-all". This meant that in the beginning, I was really confused by the general structure of things and how different pieces fit together. Unfortunately, this caused me to lose quite a bit of confidence in myself; I questioned my own perspective on things, afraid that if I spoke up, my opinion would be wrong. Looking back, I really regret doing this because I realize that I likely would have gained more from speaking my thoughts, regardless of how they were taken. However, on a positive note, I definitely improved upon adapting to unfamiliar code and understanding how certain processes worked without knowing all the pieces. 

Making an Impact
Things definitely picked up in the second half of the term, where I got to head up a performance improvement for the Tasks app. This was an awesome project for me because I got to see it through start to finish, from the design process all the way to implementation. The highlight of the process was getting to lead a design meeting, complete with thoroughly written design documents. This was really fun and allowed the whole team to get involved with suggestions and discussion; everyone on my team was really supportive, and their feedback was duly noted. In the end, my feature led to drastic improvements in performance times, reducing UI lag during screen loading, scrolling, and rotation, from over five seconds to under a second. I was really proud of this feature as it definitely made a noticeable impact on user experience in the Tasks application.

Self-Motivation is Hard
Switching pages to life outside of work, at the start of the term, I had a list of things that I planned on learning on my own time. As weeks turned to months, that list started to shrink, partly because I'd completed them, but mostly because time was running out. I think part of the reason it was so hard to convince myself to keep learning was because after a long day at work, especially after looking at a lot of code, all I wanted to do was enjoy my free time. While there was a lot that I wanted to get done, and things I was really interested in knowing more about, it was at times difficult to find the momentum to propel myself into the start of a new project. This term taught me a lot about my own work ethic, and how I shouldn't always aim to get too much done; looking at such a large list, it's hard to know where to start. In the end, focusing on smaller, manageable goals helped me to be the most productive.

Despite the many ups and downs, I really enjoyed this term. To an extent, I miss the interesting challenges that I encountered every day and the different it took to solve them; I definitely miss the people on my team, who were helpful and supportive along each step of the way. Overall, I had a fantastic experience working at BlackBerry, continued to improve my skills, and now whenever I walk by a Priv in a mall, I can take pride in knowing that I contributed to a small part of the phone!