Showing posts with label Co-op. Show all posts
Showing posts with label Co-op. Show all posts
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!
Wednesday, 11 November 2015
Midterm Updates: BlackBerry Priv + YHack 2015!
Hello, blog. I feel like each time I come back, I'm stunned at how much time has passed by. It's been a busy two months since beginning co-op, but I've been having a blast and taking everything in stride.
BlackBerry recently released the product that I've been working on over the last few months: the Priv, a brand new Android phone! I've actually been doing development on two of the apps for the phone, Tasks and Notes. Since I am an avid user of similar apps in my own day-to-day life (yes you, Google Keep!), I've enjoyed the experience of contributing to user experience as well as learning a lot in the process. In fact, this term has only further reinforced the notion that what we learn in school is far from actual development projects; although we did some Android development last term, it was so basic that I practically felt like I didn't know anything about Android while at work. Overall, this term has definitely been a steeper learning curve than the last, but my team has been ever so helpful and every day is a whole new learning opportunity. And of course, I can't lie, it's cool to know that features I worked on have now been shipped to customers worldwide!
I might be a bit biased, but after having used the phone for a few weeks, I must say that it's a very decent phone. I especially like the customizations that BlackBerry made to the Android launcher, which allows you to launch three different apps instead of just Google Now, as well as the addition of really handy widgets and shortcuts. Furthermore, in addition to the physical keyboard, even the virtual keyboard is a step up from the stock Android one; it offers really smart word suggestions on the letters themselves, which you can swipe up to select while you're typing. And last but not least, the Tasks and Notes apps of course! It's been really nice to see all the positive reviews of the phone so far; although it hasn't been out for too long, I think there's potential that only time will fully divulge.
I might be a bit biased, but after having used the phone for a few weeks, I must say that it's a very decent phone. I especially like the customizations that BlackBerry made to the Android launcher, which allows you to launch three different apps instead of just Google Now, as well as the addition of really handy widgets and shortcuts. Furthermore, in addition to the physical keyboard, even the virtual keyboard is a step up from the stock Android one; it offers really smart word suggestions on the letters themselves, which you can swipe up to select while you're typing. And last but not least, the Tasks and Notes apps of course! It's been really nice to see all the positive reviews of the phone so far; although it hasn't been out for too long, I think there's potential that only time will fully divulge.
YHack 2015: I Know That Feel
This past weekend, I had the opportunity to go back to Yale University for another year, for YHack 2015! Since it wasn't my first hackathon, I more or less knew what to expect, but the set-up this year was a bit different; instead of having individual rooms to ourselves, everyone was spread out around tables in a massive sports complex. It got a bit distracting at times, but it also meant getting to talk with the people around us.
I've always wanted to work on a social impact hack, so it was really nice to make a plausible idea come together at YHack. Our project aims to be an educational tool to benefit children with autism spectrum disorders. This actually tied in with my (as well as one of my teammate's similar) experience working with young children with autism to teach them social interactions. One of the difficulties that these children face is recognizing and differentiating between different emotions. And so, we created an application made up of two interactive games.
The first one is more simple of the two, and it involves the child matching images to different emotions.
The second game prompts them to take pictures using a webcam, in order to mimic different emotions. Together, the two games teach children to be able to both recognize and demonstrate emotions.
The web application was created using the Flask framework for Python to handle the backend work. Flask was interesting to work with as none of us had any experience with it - although, Flask is based on the jinja2 template, which I'd worked with previously during Google CSSI, so a lot of the code looked very similar and it was fairly easy to pick up.
We also tied in a SQLite database that we used to store account info as well as player results; this allowed us to create a stats page for each user, so that parents or educators could track the children's progress over time.
For the front end, we leveraged Bootstrap to scale our site, as well as jQuery to make and handle POST requests during the game so that we could display feedback and results without having to refresh the page. For the first game, we utilized the Flickr API to search for and display random images of people displaying different emotions. As for the other, we used a machine learning API from Indico that does facial emotion recognition to determine what emotions the pictures we took were displaying. Unfortunately, one of the caveats of relying on the Indico API was the for certain emotions, it wasn't as accurate as we'd hoped. We ended up trying to process the results we received back from it, but overall the accuracy still wasn't ideal. Still, we worked with the limited time and resources that we had in order to complete the project.
Feel free to check out our app on GitHub or DevPost! We were originally planning on deploying the site through the Microsoft Azure platform, but we ran into some issues with GitHub and Azure integration (later confirmed to be a known issue by people that we spoke to from Microsoft). Regardless, I am really happy that we were able to take an idea with the potential to make a difference in the lives of children, and turn it into reality. Part of the beauty of hackathons is being able to try something new and pour your efforts into making something interesting, and I am grateful that we came up with a unique idea that, if we have the opportunity to polish and improve accuracy on, could be an accessible and useful tool to support children and allow them to develop these necessary skills from an early age.
The first one is more simple of the two, and it involves the child matching images to different emotions.
The web application was created using the Flask framework for Python to handle the backend work. Flask was interesting to work with as none of us had any experience with it - although, Flask is based on the jinja2 template, which I'd worked with previously during Google CSSI, so a lot of the code looked very similar and it was fairly easy to pick up.
We also tied in a SQLite database that we used to store account info as well as player results; this allowed us to create a stats page for each user, so that parents or educators could track the children's progress over time.
For the front end, we leveraged Bootstrap to scale our site, as well as jQuery to make and handle POST requests during the game so that we could display feedback and results without having to refresh the page. For the first game, we utilized the Flickr API to search for and display random images of people displaying different emotions. As for the other, we used a machine learning API from Indico that does facial emotion recognition to determine what emotions the pictures we took were displaying. Unfortunately, one of the caveats of relying on the Indico API was the for certain emotions, it wasn't as accurate as we'd hoped. We ended up trying to process the results we received back from it, but overall the accuracy still wasn't ideal. Still, we worked with the limited time and resources that we had in order to complete the project.
Feel free to check out our app on GitHub or DevPost! We were originally planning on deploying the site through the Microsoft Azure platform, but we ran into some issues with GitHub and Azure integration (later confirmed to be a known issue by people that we spoke to from Microsoft). Regardless, I am really happy that we were able to take an idea with the potential to make a difference in the lives of children, and turn it into reality. Part of the beauty of hackathons is being able to try something new and pour your efforts into making something interesting, and I am grateful that we came up with a unique idea that, if we have the opportunity to polish and improve accuracy on, could be an accessible and useful tool to support children and allow them to develop these necessary skills from an early age.
Labels:
BlackBerry,
Bootstrap,
Co-op,
Flask,
Hackathon,
jQuery,
Priv,
Python,
Software Development,
Web Application,
YHack
Saturday, 12 September 2015
Co-op Reflections 2.0: Week One at BlackBerry!
It's been quite the extended break over on this blog while school took over most of my summer, after which I was able to enjoy three weeks of break before this term started. After getting some decent rest and being able to catch up with friends back home, it was soon time to jet back to Waterloo for my second co-op internship at BlackBerry!
Day 1
The morning of my very first day at the office was spent in a group orientation, where we got to learn a lot about BlackBerry's history, culture, and where they were as a company today. It was a really insightful session; as I got to know more about the company, quite a few of my preconceived notions changed. It was really inspiring to hear from employees who had worked at the company for many years, weathered its many changes, and were clearly still very enthusiastic and dedicated to their roles. Furthermore, we got to meet (albeit quite briefly) the fellow co-op students that would be working on roles throughout the company.
After lunch, I set off with my (very lovely and welcoming!) team and began to set-up my work environment. I'm really glad that I get to work on a Linux system! It's definitely a bit out of my comfort zone, as I'm still a dedicated Windows user so even much of the command line syntax is different, but it's funny because I was actually brushing up on Linux terminal commands a few weeks ago while on vacation. I've actually been hoping to become more comfortable with Linux operating systems, so this is the perfect opportunity to do it.
As for what I am working on, there isn't that much that I can say. And so for the rest of my co-op reflections this term I'm going to focus more on what I'm learning and goals that I have for improvement. I'm already very excited for what's to come!
Day 2
Today was exciting as my team attended a talk held by a Senior Manager of Software Product Management; it got me thinking more about some of the other aspects of software development. While it is easy to determine the technical requirements for a piece of software, there are many other perspectives that the software must be considered from in order for it to become a successful product. He discussed many products and their approach to tackling these additional perspectives, and it was interesting to consider things that I'd previously never given much thought to.
Day 3
I got to begin working on my first task for my team's project today! What started off as something that was supposed to be fairly straightforward ended up being more complicated than we'd originally thought, but I made quite some progress today and my mentor, as well as the entire team, has been so helpful in helping me out. Compared to last term, the process to push code is much more complex, for good reason as the code base is so much larger and there are many more people working within it. The learning continues everyday and I am really excited to move on into more in-depth tasks in the coming weeks. Our team uses Scrum, and so it's been really cool to see the various processes and methods that we'd learned about last term propagate into real-life applications at work. It's nice to be able to hear about what everyone is working on at our daily stand-up meetings, so that the entire team stays up to date on not only our own but everyone else's progress.
Day 4
I finished my first task today and also spent some time refactoring my code to clean it up as much as I could. Time continues to fly by so fast when I'm working, so I'm glad that I was able to finish my work in time for the weekend! I just need to test my implementation a bit more before it can be sent off for in-depth testing; since there are some issues with the test data, we plan on actually testing it with real data on Monday.
I also received my work phone today, a BlackBerry Passport! It's crazy because I remember writing about it from when I saw it pre-release at a BlackBerry information session during my very first term. I can't believe that it's already been a year since then and that I now get to use one for work. Like I mentioned in my other post, I really enjoy using the touch-sensitive keyboard, which is really convenient for typing fast because you can delete words and select word suggestions without taking your hands off the keyboard. As I only previewed it briefly last year, I look forward to playing around with it some more and discovering its full capabilities.
Throughout the week, there have been moments where I feel lost just looking at the codebase and times when I've felt frustrated that one problem leads to another. However, at the same time, there have been occasions when all of a sudden things become clear, or when seeing my feature come to life on a phone for the first time. I can truly say that I'm enjoying every moment, both the ups and the downs, as well as everyone who I've met along the way. Overall, it's been a really exciting first week and I am most definitely anticipating what's to come.
Day 2
Today was exciting as my team attended a talk held by a Senior Manager of Software Product Management; it got me thinking more about some of the other aspects of software development. While it is easy to determine the technical requirements for a piece of software, there are many other perspectives that the software must be considered from in order for it to become a successful product. He discussed many products and their approach to tackling these additional perspectives, and it was interesting to consider things that I'd previously never given much thought to.
Day 3
I got to begin working on my first task for my team's project today! What started off as something that was supposed to be fairly straightforward ended up being more complicated than we'd originally thought, but I made quite some progress today and my mentor, as well as the entire team, has been so helpful in helping me out. Compared to last term, the process to push code is much more complex, for good reason as the code base is so much larger and there are many more people working within it. The learning continues everyday and I am really excited to move on into more in-depth tasks in the coming weeks. Our team uses Scrum, and so it's been really cool to see the various processes and methods that we'd learned about last term propagate into real-life applications at work. It's nice to be able to hear about what everyone is working on at our daily stand-up meetings, so that the entire team stays up to date on not only our own but everyone else's progress.
Day 4
I finished my first task today and also spent some time refactoring my code to clean it up as much as I could. Time continues to fly by so fast when I'm working, so I'm glad that I was able to finish my work in time for the weekend! I just need to test my implementation a bit more before it can be sent off for in-depth testing; since there are some issues with the test data, we plan on actually testing it with real data on Monday.
I also received my work phone today, a BlackBerry Passport! It's crazy because I remember writing about it from when I saw it pre-release at a BlackBerry information session during my very first term. I can't believe that it's already been a year since then and that I now get to use one for work. Like I mentioned in my other post, I really enjoy using the touch-sensitive keyboard, which is really convenient for typing fast because you can delete words and select word suggestions without taking your hands off the keyboard. As I only previewed it briefly last year, I look forward to playing around with it some more and discovering its full capabilities.
Throughout the week, there have been moments where I feel lost just looking at the codebase and times when I've felt frustrated that one problem leads to another. However, at the same time, there have been occasions when all of a sudden things become clear, or when seeing my feature come to life on a phone for the first time. I can truly say that I'm enjoying every moment, both the ups and the downs, as well as everyone who I've met along the way. Overall, it's been a really exciting first week and I am most definitely anticipating what's to come.
Tuesday, 30 June 2015
A Busy Second Term + JobMine Round 2
As you can probably tell from the lack of posts since the beginning of May, this summer has been a busy one as I dove headfirst into my second school term. After a comparatively relaxed co-op term, the schoolwork took us all by storm and we returned to the seemingly endless cycle of labs, assignments, and quizzes. Now that it's already a week after midterms and just over a month until school finishes once again, I thought I'd write up some updates.
1B Term
Second term has been going really well so far; I feel that the courses are more interesting than in 1A, and we're learning a lot more completely new material (compared to reviewing high school topics for half of last term). This term has involved a lot of math, with both Calculus and Discrete Math courses; Discrete Math has been all about logic, from proving various integer relations to even a bit of basic cryptography. The proofs can get quite difficult at times, but it's been a refreshing break from calculus. Then, extending from last term are continuations of Physics, Circuits, and Programming. As Circuits mainly involves digital logic this term, the circuits labs have been really cool; we are working with VHDL to program circuit boards to simulate different tools such as a car controller, an elevator controller, etc. While I still prefer software over hardware development, the experience designing circuits and then interacting with hands-on controls has been a very fun experience.
Although the workload has increased quite a bit, I feel like I was better prepared for it and thus adjusted faster to the workload, as I've gotten used to what has to be done by when in order to finish everything on schedule. While the assignments have gotten more difficult, I've found the content across all courses to be a lot more interesting. Of course, there are still lectures that are hard to sit through, as well as professors that may not teach in the most easy-to-understand fashion; the 8:30 to 4:30 days aren't very enticing, but all in all I think this term has been much more enjoyable than 1A.
1B Term
Second term has been going really well so far; I feel that the courses are more interesting than in 1A, and we're learning a lot more completely new material (compared to reviewing high school topics for half of last term). This term has involved a lot of math, with both Calculus and Discrete Math courses; Discrete Math has been all about logic, from proving various integer relations to even a bit of basic cryptography. The proofs can get quite difficult at times, but it's been a refreshing break from calculus. Then, extending from last term are continuations of Physics, Circuits, and Programming. As Circuits mainly involves digital logic this term, the circuits labs have been really cool; we are working with VHDL to program circuit boards to simulate different tools such as a car controller, an elevator controller, etc. While I still prefer software over hardware development, the experience designing circuits and then interacting with hands-on controls has been a very fun experience.
Although the workload has increased quite a bit, I feel like I was better prepared for it and thus adjusted faster to the workload, as I've gotten used to what has to be done by when in order to finish everything on schedule. While the assignments have gotten more difficult, I've found the content across all courses to be a lot more interesting. Of course, there are still lectures that are hard to sit through, as well as professors that may not teach in the most easy-to-understand fashion; the 8:30 to 4:30 days aren't very enticing, but all in all I think this term has been much more enjoyable than 1A.
Revisiting JobMine
While May consisted mainly of getting back into academic mode, June was spent prepping for the second round of JobMine, which meant updating resumes and prepping for interviews. They say that finding your next co-op job should become easier as you gain more experience, but I actually felt more pressured this term to find a job that I wanted. Last term, I didn't really have any expectations of where I would end up working, but after working in a development role, I wanted to find another, hopefully better position, and so I dedicated probably even more effort to JobMine this round than last.
I was definitely more selective when applying to jobs this round, making sure that I only applied for development positions at companies that I was really interested in. Since I worked on web application development last term, I hoped to gain experience working in mobile development. In terms of my resume, since I now had relevant work experience, I was able to remove some older, less applicable experience from my resume and focus the information on development-related activities. I also made it appear more polished by updating the font and some styling. Throughout the job application period, I attended many employer information/networking sessions to talk with different team members, learn more about companies, and even give out my resume. This was really helpful because not only did I get a better sense of the company, I got to talk with the actual people that I could potentially be working with.
I ended up receiving eleven total interviews sporadically through the next few weeks. Since I now had programming experience, I knew that the interviews would be more focused on technical questions. And so, I prepared quite a bit for my interviews, especially for the first few. I found that brushing up on the specifics of major object-oriented programming concepts helped a lot; since I didn't use certain concepts very much throughout co-op, it was a good reminder of things that I'd previously learned. The interviews this round were definitely longer and more intensive, but I gained a lot of valuable practice for answering technical questions; it's one thing to program on your own, but a very different experience to write code under pressure during an interview. In particular, I tend to get overwhelmed by problem-solving questions that aren't even that hard to solve with a clear mind. Prior to next term, I hope to practice more so that I don't feel as stressed out while I am in the interview itself.
All in all, I ended up receiving five offers this term and it came down to deciding between what I wanted to work on. I'm really excited to be working at BlackBerry next term on one of the mobile development teams! After working at a small company last term, I'm looking forward to working at a bigger company and seeing how the team environment and workflow differ. Traditionally, BlackBerry has been focused on both software and hardware, but they are transitioning more towards software development now so I am already anticipating the projects that I'll be working on. As I was hoping to work on mobile development next term, I'm really excited for this opportunity to gain valuable work experience and learn a lot throughout the next term.
All in all, I ended up receiving five offers this term and it came down to deciding between what I wanted to work on. I'm really excited to be working at BlackBerry next term on one of the mobile development teams! After working at a small company last term, I'm looking forward to working at a bigger company and seeing how the team environment and workflow differ. Traditionally, BlackBerry has been focused on both software and hardware, but they are transitioning more towards software development now so I am already anticipating the projects that I'll be working on. As I was hoping to work on mobile development next term, I'm really excited for this opportunity to gain valuable work experience and learn a lot throughout the next term.
Friday, 8 May 2015
Co-op Reflections 1.2: Some Hindsight and A Little Foresight
I feel like these
posts are becoming a testament to just how fast time goes by! It is already the
start of the first week of classes back at Waterloo; with the academic course
load returning to full swing, I thought I'd take some time to reflect on my co-op
term before things get too crazy.
Looking Back
From feeling extremely overwhelmed to a nice sense of simultaneous challenge yet familiarity, I found myself immersed in many different sides of software development throughout the term. I was lucky to have started during a very busy time for the company; getting to see Dashboards transform from a true work-in-progress to a polished, commercial product was an incredible experience. While I got to work on many aspects of the application, the portion that I'm most proud of is the custom dashboard authoring experience, which I helped build from scratch; thinking back to the very beginning now, it amazes me that we pulled everything together to make it both functional and user-friendly. The responsibilities that I received gave me a more comprehensive understanding of the roles of a software developer; not only do you code, but you design your code to be effective, and test its implementation to (near) perfection. Communication with the team plays such a key role in efficiency; not only is clear communication imperative, but checking in frequently and asking lots of questions allowed me to stay up to speed with others' work. In fact, I almost wish I'd spoken up more; there is only so much that I could understand on my own; by asking more questions, I likely would've saved some time that was spent pouring over confusing parts of the code.
Throughout the term,
I was able to work on both frontend and backend code, which allowed me to
become familiar with the majority of our project. Through the full-stack
immersion, I improved my familiarity with C#, HTML, and JavaScript, as well as
even delving into a little bit of SQL. Work on a team with both a primarily
backend developer and a web developer, it was really interesting for me to see
how they think so differently; while the web developer focuses on user interface and intuitive user interaction across platforms, the backend developer concentrates on optimizing performance and functionality. It was really nice to be able to gain some knowledge on some of the intricacies that go into making the most out of the code.
Looking Forward
Looking Forward
One of the things
that I'm looking forward to learning more about is software design. It is one
thing to write code, but another entirely different experience to design
various components of a program for maximum code and performance efficiency. Up
until now, we have really only been learning how to program, not so much
actually making our programs. That’s why I’m really excited for our Embedded
Systems course this term, where we’ve begun to go over the components of various software engineering cycles. I think technical skills by themselves can only go so far; gaining a better understanding of how to design and implement good software is an important ability that'll help tie everything together.
Furthermore, we've begun working on Android application development! I've been really excited about this because it means getting to work with Java and a new platform - I have experience creating many web applications, so it's been fun building something so new and so very different from anything I've done before. This term in itself appears to be a lot more software-oriented than 1A, which I couldn't be happier about.
Furthermore, we've begun working on Android application development! I've been really excited about this because it means getting to work with Java and a new platform - I have experience creating many web applications, so it's been fun building something so new and so very different from anything I've done before. This term in itself appears to be a lot more software-oriented than 1A, which I couldn't be happier about.
I never thought that
I'd have the opportunity to work in Ottawa and subsequently explore its depths, nor that I
would begin my co-op experience diving headfirst into a development role.
Throughout the term, I was able to improve many skills, both technical and interpersonal. Above all, I think the most valuable lesson that this co-op term taught me is
that adventure is out there waiting to be found. When it comes down to it, the
beauty of co-op is getting to discover the diverse opportunities that one can
pursue in a particular field; I am already excited to see where I'll go next.
Wednesday, 25 February 2015
Co-op Reflections 1.1: The Midway Mark + What I'm Working On
It's hard to believe that this co-op term is almost halfway through; it truly feels like just yesterday when, thoughts scrambling, I spent the first day trying to understand just what I was getting myself into. I'm happy to say that it wasn't long before I was fully immersed in my project. I think what has really made this work term amazing is the fact that I am trusted just like a full-time employee, allowing me to take complete ownership of everything that I create. Before the term started, I'd imagined that, as a student, I would end up doing some small on-the-side tasks for my employer. It is one thing to just be given jobs to complete, and another completely different experience to be fully integrated into both the project and the team. I've been really lucky to get to be a part of that from the beginning and I'm really enjoying having a great deal of responsibility for the code that I write.
Speaking of what I'm working on, introducing Dashboards by Savision, a web application that gets data from Microsoft's System Center Operations Manager (SCOM) and displays it in an accessible and interactive fashion. Its first release is in early March! You can check out some more information about it here, or watch a quick demo below (which I helped to code!).
Speaking of what I'm working on, introducing Dashboards by Savision, a web application that gets data from Microsoft's System Center Operations Manager (SCOM) and displays it in an accessible and interactive fashion. Its first release is in early March! You can check out some more information about it here, or watch a quick demo below (which I helped to code!).
I am thrilled that during my time here, I'll be able to see the product launch and continue to work to improve its additional features. As this is the last week before the release, every day is a busy one and there is always a lot to get done; but being surrounded by a passionate team and getting to work on an interesting product means that even the various problems that we inevitably encounter each day can't compare to the individual and group drive to get the project ready. It's been really interesting for the past few weeks to participate in this change in dynamic as the first release wraps up; as we get closer to the day, everyone just keeps working harder towards bringing to life all that we want to achieve. The additional momentum has been fantastic; I've had a blast so far this term and I'm certain that it'll only go up from here.
Thursday, 15 January 2015
Co-op Reflections 1.0: The First Week
2015 sure came in fast around the corner; before I knew it, shortly after celebrating the New Year, my suitcases were packed yet again and I set off for Ottawa.
First impressions: Left: a very snowy landing in Ottawa. Right: the colourful waterfall, one of
the first sights after arriving in the airport.
the first sights after arriving in the airport.
Now, over a week later, I am continually amazed by how quickly time manages to fly by. From my very first day on the job at Savision Canada, I was put right to work, figuring out how to fix the first bug we came across, and gain a better understanding of the code from the project that I'd be working on. As my manager put it that day at lunch, "you're already doing more than 95% of your classmates on co-op today," and he was right - by getting to work directly with the code as I looked it over, I began actual work on my project right from day 1, and it's only continued to go up from there. And I'm grateful for this approach; despite the initial "I-have-no-idea-what-I'm-even-looking-at" moments, I feel that by jumping right in, I've learned a lot more in a faster amount of time, simply because I had to in order to determine the issue and solve it.
Differences
The one thing they never told us about in our programming class was just how different learning programming is from applying it. Last term, we only had to worry about three or four C# classes at max, all located conveniently in one file, but my project involves flipping through interactions between countless classes and their respective interfaces, namespaces, and files. Perhaps the most significant thing that I've taken away from my first week is that you don't need to understand every part of the code to do the work; in fact, that would be nearly impossible as there are files that I haven't seen or touched yet. Instead, as I work on different tasks, I'm slowly being exposed to different aspects of the application I am working on.
At the Office
One of the most important aspects of the job is the work environment and the people that you work with. Because the Canadian branch of the company is quite small, our office is open-concept meaning everyone sits together. I didn't realize that the Canadian office only works on research and development; this is great because although everyone around me is working on different projects, they never hesitate to try and help. Generally, we work in a very quite atmosphere where everyone focuses on their own tasks, but every now and then a random conversation that's completely unrelated to work will pop up. And I can honestly say that my co-workers are all very open and friendly; it's been really nice in these past few days to hear about their variety of experiences both inside and outside of work. My manager, in particular, has been wonderful about checking in about my progress as I work, and breaking down my project into meaningful yet manageable tasks. Being able to break down the large amount of work into smaller pieces and complete them one by one has definitely helped me to not be as overwhelmed and just generally work more efficiently.
All in all, I'm happy to say that I am truly pleased with what I'm working on. I think it's safe to say that you've found the job for you when time just seems to fly by at work. Although a day doesn't go by without their own issues and challenges to overcome, it's been interesting to work through them one by one and I've been learning so much throughout the entire process. At the end of week one, it was fun to see a quantification of the progress that I'd made:
At the Office
One of the most important aspects of the job is the work environment and the people that you work with. Because the Canadian branch of the company is quite small, our office is open-concept meaning everyone sits together. I didn't realize that the Canadian office only works on research and development; this is great because although everyone around me is working on different projects, they never hesitate to try and help. Generally, we work in a very quite atmosphere where everyone focuses on their own tasks, but every now and then a random conversation that's completely unrelated to work will pop up. And I can honestly say that my co-workers are all very open and friendly; it's been really nice in these past few days to hear about their variety of experiences both inside and outside of work. My manager, in particular, has been wonderful about checking in about my progress as I work, and breaking down my project into meaningful yet manageable tasks. Being able to break down the large amount of work into smaller pieces and complete them one by one has definitely helped me to not be as overwhelmed and just generally work more efficiently.
All in all, I'm happy to say that I am truly pleased with what I'm working on. I think it's safe to say that you've found the job for you when time just seems to fly by at work. Although a day doesn't go by without their own issues and challenges to overcome, it's been interesting to work through them one by one and I've been learning so much throughout the entire process. At the end of week one, it was fun to see a quantification of the progress that I'd made:
The green column indicates how many lines of code I added/changed, while the red column indicates how many lines I deleted. While it's interesting to look at to see how much I did, these numbers are trivial compared to what I have learned from the week, not only about programming itself, but the process of going about it. As I continue in my work, look out for more updates as I look forward to what's coming next.
Sunday, 21 December 2014
Mining for Jobs Part 3: JobMine Rankings + Where Am I Working?
It's been quite a while since I've updated this blog, but finals caught up to me and before I knew it, 1A was over! Our first university term was filled with lots of both fun and hard work, but most of all it honestly flew by so quickly that, coming home, I almost can't believe I just spent four months away. As I look forward to the next four months of co-op, I thought it'd be a great time to end off this series about JobMine and talk about perhaps what is the most relaxed yet also nerve-wracking part, ranking jobs.
JobMine works on a dual-ranking system; employers rank students that they interviewed based on preference, and the students who are ranked get to rank the employer. Then, the system will match students with employers based on the cumulative rank; after adding the two rankings together, the student with the smallest sum gets the job, and in the case of ties, JobMine works to ensure that as many students are matched with jobs as possible. Students who are ranked #1 receive an Offer; if they rank the company #1, the job is guaranteed to be theirs. Otherwise, you don't get to see what rank you are placed at by a company - the ranking status simply indicates Ranked. This is where it gets tricky; because we don't get to know our ranks, it comes down to a game of risk versus reward. Do you rank all your jobs #1 but risk not getting the one you most wanted, or do you rank them according to preference and risk not getting a job at all?
My own experience with the ranking system was entirely different from the risk/reward scenario I'd originally imagined. Out of thirteen interviews, I received eight Offers, three Ranked, and two Not Ranked (essentially a rejection). The large amount of job offers was so beyond my expectations that I was very overwhelmed; although this was clearly a fantastic situation to get caught in because I was guaranteed a job, it meant that where I ended up working was up to my own choice. If you know me, you'll know that I have a hard time making the smallest decisions, so having to make such a major choice in a weekend's time was a little stressful. There was quite the variety to choose from; eventually, I managed to narrow the list down, one offer at a time, by weighing the perks and drawbacks of each job. Because I hadn't asked about wages during my interviews, I didn't really know how much I was getting paid for each job; this was unfortunate as it may have made the decision a bit easier, but then again I wanted to pick my job based on the position rather than money. For each job, I mainly considered the role's responsibilities and the company location. It was definitely a process that included tough choices, but in the end I'm very happy with my decision.
With all that being said, I will be working as a Software Developer for Savision Canada near Ottawa for the next four months! Savision creates business management solutions, bridging the gap between information technology data and marketing. The company works with Microsoft System Center, and I'll be working with C#, so I thought that it'd be a great way to expand upon my foundational understanding of C# and explore how much more can be done with it. Furthermore, I've only visited Ottawa briefly before and it was a lovely place, so I am thrilled for the opportunity to explore the city some more while I am there. The combination of the job itself (where I'll be able to gain very relevant experience), what the company does (which sounds interesting and I'm excited to learn more about) and its location were what sold me for what I hope to be a fantastic work term during and out of work.
I aspire to do lots more writing over the break as well as many updates throughout the work term. The past four months have been a blast, and I can't wait to see what the new year will bring.
Tuesday, 18 November 2014
Mining for Jobs Part 2: Interviews
After two consecutive busy weekends applying for jobs, notifications of interviews began coming in on a rolling basis. I remember distinctly the nerve-wracking feeling of sitting in the Tatham Centre (where all on-campus co-op interviews happen), waiting to be paged for my very first interview; I hadn't had a legitimate job interview before, so I didn't really know what to expect. Sure, everyone can think of generic interview topics that have a good chance of being discussed, but especially for software development positions, it's hard to predict what combination of technical and general questions you'll be asked.
| If only it were this easy? |
From late September to late October, I was fortunate enough to receive thirteen interviews. These numerous experiences helped me not only to get used to the interview process, but also to build up confidence in answering questions on the spot. To sit in a small room with one or a few interviewers is intimidating enough, let alone having questions thrown at you with minimal preparation. I've never been a fan of public speaking, but I was able to see myself improve in my ability to articulate my experiences clearly and present myself as a good candidate for the job.
Throughout this period of time, my perception of how to handle an interview also changed; I learned that it is not so much about presenting yourself in the best possible light, but more about connecting with the interviewer. The interviews that I felt best about were the ones where I got to have meaningful conversations with interviewers, whether it was about their work or even their previous experiences. I think that one of the things we tend to overlook is that interviewers are great people to learn from. When I found out about my Google CSSI phone interview, I decided to make the most out of talking with the interviewer, who I knew was going to be an engineer at Google, regardless of the interview's outcome; I made the same effort with many of my co-op interviews. I think that if you can demonstrate that not only do you care about the job itself but also about the company and people behind it, you add a level of depth to your character that goes beyond merely talking about your accomplishments.
When it comes down to it, I think everyone has their own different way of tackling interviews; there isn't anything specific you can do that will guarantee anything. As long as you are prepared and let your natural character shine through, you will impress an employer sooner or later. Furthermore, since this is only our first work term, I'm sure there will be even greater things to come. Stay tuned for part 3, where I'll be talking more about (UWaterloo-specific) job rankings and where I'm working for the winter term!
Tuesday, 28 October 2014
Mining for Jobs Part 1: Applications
After two months of going though the job hunt process, I'm happy to say that I've found work for Winter 2015! As a first year, particularly Stream 4, I definitely felt the pressure from submitting my first application up to deciding which job to take. In this next series of posts, I'll be reflecting on my experience with the different steps of the job search and what I've learned from the first ever job search.
The University of Waterloo has an internal job search system called JobMine (which inspired the title of this series) for its co-op students to find and apply for jobs on. The first part of the job search consisted of reading through hundreds of listings and deciding which ones to apply for. JobMine limits applications to 50 per round, likely to prevent everyone from applying to everything. Without much previous job experience or even programming experience in general, it was a fine line to decide between the "safe picks", entry-level jobs that didn't require a lot of experience, and the "long shots", jobs where I didn't meet all the requirements.
The easiest way I found to sort potential jobs that I wanted to apply to was by three categories:
- Fits most requirements
- Fits some requirements
- Hard to get
From this round of the job search, here are some important things that I learned:
- Don't be overwhelmed by a long list of required skills: As a general rule of thumb, employers who list a lot of requirements generally aren't looking for someone who fits exactly all of them. I mostly applied to jobs from the first two categories above, but I also took a chance to apply for some "hard to get" jobs. You never know specifically when you'll fit well with what an employer is looking for; while it's good to be realistic, the required skills are only part of the picture.
- Don't be scared to apply to jobs that many people have applied to: I made this mistake when considering whether or not to apply for some jobs, in thinking "what chance will I have against tens or hundreds of other people"? Again, you just never know, so if it is a job that you really want, it doesn't hurt to take a shot.
- Be specific on your resume: Writing specific details about relevant skills or experience and how they'd apply on the job not only helps employers to connect your skills to their work, but also helps you in deciding what to talk about/elaborate on if you manage to snatch an interview!
- A cover letter isn't always the best way to go: I actually chose not to write any cover letters when I applied for jobs, because I didn't have a lot of time to personalize them for different jobs. From what I've heard, it's sometimes better to not include a cover letter at all if it's going to be a generic one. Unless you're confident that your true interest in a job or skills description shines through in a cover letter, it might be best if you just didn't include one.
Overall, I definitely learned a lot from the very first round of job application; thinking ahead, I will be changing my mindset a little when applying for jobs next round. I hope that these tips are useful to Stream 8 co-op students or anyone really who is looking for a job. Job applications are a crucial first step because they are the deciding factor for whether or not you receive an interview (which I'll be talking about in the next part). All in all, be prepared, don't be afraid of failure, and I'm sure the results will show for themselves.
Tuesday, 21 October 2014
Midterm Week Is Over
It's hard to believe that my very first university term is already half over. Last week, commonly referred to as "Hell Week" here at Waterloo, has been a whirlwind of studying for and writing all of our midterms in the span of five days. There were definitely a few stressful moments throughout the week, from unease about the very first exam (calculus) to apprehension over the notoriously difficult physics midterm. Reminiscent of the pressure that I'd felt during International Baccalaureate exams only a few months ago, this week seemed to bring about more anxiety due to it being our first official test of university. Whether it was self-motivation or simply the weight of stress - likely a combination of both - many of us spent the weekend of Thanksgiving studying rigorously for the midterms to come.
Since I am in Stream 4, midterms happened to coincide with the second-last week of job interviews for winter co-op positions (which I'll be talking about more in my next post!). I happened to also have one to two interviews a day, so I spent the week running around from midterm to interview, then back to my dorm to prepare for the next ones. Thankfully, we had the week off from classes, meaning that we could focus all our effort on exams. One of the main things I've enjoyed about living in residence is always having a group of people to study with; in high school, I preferred to study independently, and while I still like to study alone for more major exams, it really helps to have a network of people to go to with questions, where we're able to help each other out.
They key to midterms, I soon realized, is to study past exams. You can study lecture notes or the textbook for as long as you want, but it isn't as effective as studying actual exams from previous years. Often, it becomes easy to see patterns of questions you know for sure will appear again. University exams focus more on applying what you know versus simply just knowing it, so it really helps to practice examples and put your knowledge to the test.
Overall, midterms went by smoothly, and I am quite pleased with how I did. I think that they were a great introduction into how to better study for exams in university; it already feels as if finals are right around the corner. Thankfully, they're not all in one week, as they are quite heavily-weighted toward our final course grade. Now that exams are over, the focus is back on securing a co-op job; I'll be discussing some of my experiences with employer interviews soon, as Monday is when I find out where I'm working next term! More exciting details to come.
Since I am in Stream 4, midterms happened to coincide with the second-last week of job interviews for winter co-op positions (which I'll be talking about more in my next post!). I happened to also have one to two interviews a day, so I spent the week running around from midterm to interview, then back to my dorm to prepare for the next ones. Thankfully, we had the week off from classes, meaning that we could focus all our effort on exams. One of the main things I've enjoyed about living in residence is always having a group of people to study with; in high school, I preferred to study independently, and while I still like to study alone for more major exams, it really helps to have a network of people to go to with questions, where we're able to help each other out.
They key to midterms, I soon realized, is to study past exams. You can study lecture notes or the textbook for as long as you want, but it isn't as effective as studying actual exams from previous years. Often, it becomes easy to see patterns of questions you know for sure will appear again. University exams focus more on applying what you know versus simply just knowing it, so it really helps to practice examples and put your knowledge to the test.
Overall, midterms went by smoothly, and I am quite pleased with how I did. I think that they were a great introduction into how to better study for exams in university; it already feels as if finals are right around the corner. Thankfully, they're not all in one week, as they are quite heavily-weighted toward our final course grade. Now that exams are over, the focus is back on securing a co-op job; I'll be discussing some of my experiences with employer interviews soon, as Monday is when I find out where I'm working next term! More exciting details to come.
Sunday, 21 September 2014
The Job Search Begins: Highlights from Employer Info Sessions
Yesterday, co-op students in Stream 4 officially start applying for jobs through the university's internal job postings, JobMine. After exerting all efforts to perfect our resumes during the past weeks, it is finally time to put our skills to the test and apply to internships for the next term. Throughout September and October, companies big and small host employer information sessions around campus where they speak about their company and what projects they have been working on, to give students a deeper understanding about whether or not the company will be a good fit for them. Having been to a few sessions this week, here are some features from the talks, as well as some tips related to attending sessions.
Highlights
This past week, I attended information sessions for Facebook, Google, and BlackBerry. Each one had a slightly different setup; Facebook held a talk about security in computer network systems, Google discussed its Waterloo office and projects that they are working on, and BlackBerry mainly organized a networking session with recruiters from various departments.
Next, I attended an information session from Google, as I had been introduced to our campus recruiter from the CSSI team! The presentation was given by Steve Woods, Engineering Director of Google Canada. One of the interesting parts was about why Google chose Waterloo to set up its first Engineering office in Canada and how the company has worked with so many start-ups coming out of the University of Waterloo; I find it so exciting that Waterloo has fostered such a culture of technology engineering and entrepreneurship. We also learned about the many community initiatives that Google contributes to - many of these projects involve sparking children's interest and supporting underrepresented people in engineering. I thought it was fantastic that every Google is so active in encouraging younger generations to explore technology. In terms of internship opportunities, Google offers the Engineering Practicum Internship for first and second-year students, which unfortunately I am also unable to apply for this year, but I am definitely going to apply next summer!
The last information session I went to was for BlackBerry, which is based right out of Waterloo. Their session focused on a networking fair setup, with stations for various job departments to speak to recruiters and a display of current/new BlackBerry products. One of the exciting aspects of the session was having the opportunity to test out the unreleased BlackBerry Passport! The most interesting feature of the Passport is its full QWERTY keyboard with touch functionality. I feel that this feature is very innovative because it combined the traditional Blackberry keyboard with increased user-friendliness by allowing users to use the keyboard to control applications instead of touching the screen. It was fantastic to be able to try out and learn more about Passport.
I really enjoyed the networking fair because I got to speak one-on-one
with different BlackBerry employees: a Campus Ambassador who'd done two
co-op terms with the company gave us a lot of insight into what her role
was during her internships, and one of the recruiters for Software
Development answered many of our questions about first-year co-op students and internship opportunities,
which was very helpful. It was great to find out that BlackBerry has several internships tailored for first-year students in Winter 2015, which I am definitely considering applying for.
Tips
From attending these few sessions, here are some suggestions that I've gathered about making the most out of employer presentations (wherever they may happen):
Highlights
This past week, I attended information sessions for Facebook, Google, and BlackBerry. Each one had a slightly different setup; Facebook held a talk about security in computer network systems, Google discussed its Waterloo office and projects that they are working on, and BlackBerry mainly organized a networking session with recruiters from various departments.
The first information session that I attended was for Facebook. Much of the presentation went over my head as it was very advanced and technical. However, the presenters concluded with information about Facebook itself and available job/internship opportunities. At the end, I had the opportunity to speak with one of the recruiters; although I found out that Facebook mostly only hires students with a lot of experience (e.g. upper-years), it was through the recruiter that I found about Facebook U, a special internship-type program for first-year students. Unfortunately, the program is only available in the summer so I am unable to apply, but nonetheless it was great to find out about the opportunity.
Next, I attended an information session from Google, as I had been introduced to our campus recruiter from the CSSI team! The presentation was given by Steve Woods, Engineering Director of Google Canada. One of the interesting parts was about why Google chose Waterloo to set up its first Engineering office in Canada and how the company has worked with so many start-ups coming out of the University of Waterloo; I find it so exciting that Waterloo has fostered such a culture of technology engineering and entrepreneurship. We also learned about the many community initiatives that Google contributes to - many of these projects involve sparking children's interest and supporting underrepresented people in engineering. I thought it was fantastic that every Google is so active in encouraging younger generations to explore technology. In terms of internship opportunities, Google offers the Engineering Practicum Internship for first and second-year students, which unfortunately I am also unable to apply for this year, but I am definitely going to apply next summer!
The last information session I went to was for BlackBerry, which is based right out of Waterloo. Their session focused on a networking fair setup, with stations for various job departments to speak to recruiters and a display of current/new BlackBerry products. One of the exciting aspects of the session was having the opportunity to test out the unreleased BlackBerry Passport! The most interesting feature of the Passport is its full QWERTY keyboard with touch functionality. I feel that this feature is very innovative because it combined the traditional Blackberry keyboard with increased user-friendliness by allowing users to use the keyboard to control applications instead of touching the screen. It was fantastic to be able to try out and learn more about Passport.
| The BlackBerry Passport, soon to be released. |
Tips
From attending these few sessions, here are some suggestions that I've gathered about making the most out of employer presentations (wherever they may happen):
- Come prepared with questions: If you have specific questions that you'd like to ask the employer about, there will definitely be people there who can answer them and it is a lot easier to talk in-depth to recruiters in person than through email.
- Talk to employees: Whether it's during or after sessions, talk with people from the company. Even if you don't have any questions, employees offer a lot of perspective and more details on what it's like to work at the company.
- Bring your resume: This one applies more to non-co-op students, but if you bring a copy of your resume to a session, there will be recruiters taking them in or employees who can pass on your resume directly to one.
- Attend many different sessions: Each session that I've gone to so far has offered something different, not just in terms of company but also in content; even if you're not interested in a position at a company, the sessions are a great way to learn more about how they are contributing to the tech industry in general and you may be surprised at how the company fits with what you're looking for.
Subscribe to:
Posts (Atom)








