Start looking for a co-op early. Although WaterlooWorks is quite reliable, there are many more opportunities outside of the job board. Being able to apply for jobs externally not only prepares you to look for jobs full time but it also provides a way to start your study term without having to worry about looking for a co-op.
If you have spent time diving into the codebase but you still are confused, schedule time with your mentor/coworkers to have a code base walk through. Write up questions to ask during the meeting and take notes of unclear parts of the code.
Check over your code at least twice before submitting your code review. Reviewing the code a second time may help you catch minor issues and/or problematic code that your reviewers may or may not comment on. If you are unable to figure out a solution to an issue, then reach out to someone for help rather than implementing a hacky solution. You will be more aware of your coding quality, less prone to ignoring issues, and overall be a more responsible developer.
Document any blockers you faced during onboarding, and how you overcame them because chances are others will face them too. These can be tips/advice you would give new hires. Feel free to share these findings with your team, because they want to make the onboarding process more efficient and up to date for future hires. Some examples of things to take note of are outdated/incorrect/missing documentation and the way the team does a specific task.
Create rituals for starting your day and ending your day. Studies have shown that not having a post work activity makes it harder to not think about work which leads to burn out and reduced productivity. Start your day by thinking about what you want to achieve and how you want to feel. End your day by doing an activity i.e exercising, listing todos for tomorrow, or even reflecting about the work day! This may help you have a more balanced lifestyle.
Set up a system to stay on top of your work. This can be as simple as setting up a to-do list ready for the day. The important thing is to be clear and intentional with your goals each day so you can optimize your focus on getting things done.
To make the best use of your time, set a time limit on how long you spend on the problem (e.g. 1 hour before you ask for help). Asking for help on an issue you’ve been stuck on for some time can be beneficial. It’s much better to take an hour of your mentor/boss’ time than to be stuck for days without any results. The solution may be team/organization specific and asking can save a lot of time. Be sure to try your best to solve the problem on your own first to maximize your ability to learn.
Asking for feedback from your manager/mentor throughout the term can go a long way. You can ask about your performance in certain areas and ways you can improve. These feedbacks can help determine what you should continue and/or change. For example, you can ask about their expectations and how you can achieve a specific rating on the employer co-op rating to set up specific goals.
Around the middle of the term, ask to go over your co-op evaluation form with your manager. In doing so, you will be able to modify your current goals to match/exceed your manager’s expectations. This is especially helpful for you to determine how you can achieve the co-op rating you want.
Meeting and networking with people in and outside your team is an amazing way to learn and meet new people. Coffee chats are a great way to learn about interesting roles and tasks others around the company perform. Try to set up coffee chats with others at your company as you might meet an amazing connection or learn about a really neat topic. This may lead to an idea of what you want to do in your future co-ops. A format you can use is: “Hey, I'm the new intern of [manager] and I was wondering if I could put something on your calendar so I can get to know you and your work a little better.”
Aim to make most/all of your code testable. This will ensure the code is functioning properly and will save time debugging in the future. This is a useful skill to have as a developer.
Each push request (PR) should focus on a very specific change/feature. Modularizing the changes will make reviewing the PR easier and quicker.
Negotiating compensation for an offer when you already have competing offers can be very beneficial for you and it’s normal to do. For a general guide, you can use the format:
Hello [Name of recruiter],
I am very interested in working [company name]. I have been given an opportunity at [another company name] that is offering [compensation]. Would it be possible for [the company name] to match/increase the compensation?
If you do not have competing offers you can still try to negotiate using the format:
Hello [Name of recruiter],
Given my experiences, would it be possible to increase the compensation to [compensation]?
Either way, it does not hurt to try as the worst they can say is no.