Advice + Internships Page (#161)

Closes #140
Closes #141

Co-authored-by: Linna Luo <linnaluo18@gmail.com>
Reviewed-on: www/www-new#161
Reviewed-by: Aditya Thakral <a3thakra@csclub.uwaterloo.ca>
Co-authored-by: l42luo <l42luo@localhost>
Co-committed-by: l42luo <l42luo@localhost>
fix-md-font
l42luo 1 year ago
parent 40cc58df18
commit 09c704c94c
  1. 7
      components/HorizontalLine.module.css
  2. 7
      components/HorizontalLine.tsx
  3. 8
      components/Navbar.tsx
  4. 16
      content/advice/academic-advice.mdx
  5. 98
      content/advice/coop-advice.mdx
  6. 42
      content/advice/misc-advice.mdx
  7. 9089
      package-lock.json
  8. 3
      pages/_app.tsx
  9. 13
      pages/resources/advice/academic.tsx
  10. 52
      pages/resources/advice/coop.module.css
  11. 60
      pages/resources/advice/coop.tsx
  12. 13
      pages/resources/advice/misc.tsx
  13. 46
      public/resources/advice/codey.svg

@ -0,0 +1,7 @@
.line {
display: block;
margin: calc(1rem / 16) 0 calc(34rem / 16);
height: calc(1rem / 16);
border: none;
background-color: var(--primary-heading);
}

@ -0,0 +1,7 @@
import React from "react";
import styles from "./HorizontalLine.module.css";
export function HorizontalLine() {
return <hr className={styles.line} />;
}

@ -70,6 +70,14 @@ const menu: Menu = [
name: "CS Club Wiki",
route: "https://wiki.csclub.uwaterloo.ca",
},
{
name: "Advice",
route: "/resources/advice/coop",
},
{
name: "Internships",
route: "https://github.com/uwcsc/winter2022-internships",
},
],
},
];

@ -0,0 +1,16 @@
## Academic Advice
Find a nice group of people that you study well with and meet every once in a while to work on things together,
you can do that generally by asking around via messaging platforms/office hours. To avoid plagiarism, avoid discussing
intricate details of the solution but rather bounce ideas off one another, and leave yourself 30 minutes after the meeting
before you write up a solution
Try to complete your assignments without consulting your notes. It will be very challenging to do if you are not very confident
in the content and is a good indicator that you need to understand the content better! Try to review it again and do the
assignment without referring back to it.
Try to manage your pace when it comes to work. It’s really easy to burn out and lose motivation in the middle to end of the term,
when you need it the most. Give yourself a breather and take breaks!
Assignments can be pretty endless, so make sure you celebrate your small wins. Modularize your tasks and reflect on all the
work you’ve done over a period of time. It’s often much more than you think.

@ -0,0 +1,98 @@
## Coop Advice
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.
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.
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.
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.
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.
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.
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.
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.
Thank you,
[Name]
-------------------------------------------------------------------------------------------------------------------------------
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]?
Thank you,
[Name]
-------------------------------------------------------------------------------------------------------------------------------
Either way, it does not hurt to try as the worst they can say is no.

@ -0,0 +1,42 @@
## Social Advice
If you’re looking to watch movies with friends then you can either buy cheaper (Tuesday prices)
at the Student Life Center or Waterloo has a list of streaming sites where you can watch free movies.
Join different clubs or societies! They’re a great way to make friends and manage your time better.
Plus, it makes going through a school term much more fun.
Take up the opportunities for meeting people. You never know who you might meet. If you don’t put
yourself out there and take chances, it’s much harder to find a relationship, friendships, or even study buddies.
Be kind. Celebrate your friends’ successes when they get a co-op job and support them when they’re struggling
too. Waterloo is so competitive and sometimes it can be hard to navigate through, so make sure you’re giving
and getting a good support network.
Additional Resources
Along with your tuition fees, part of your library fees grant you access to a database of [free movies](https://media3-criterionpic-com.proxy.lib.uwaterloo.ca/htbin/wwform/006/wwk770?&kw=zkcode%7C000005%7C)
SE servers:
[discord.gg/ZtmRPc59](https://discord.gg/ZtmRPc59)
[discord.gg/XyQtsfe5](https://discord.gg/XyQtsfe5)
Group Leetcode server:
[discord.gg/kwCsCNb3](https://discord.gg/kwCsCNb3)
There are many online resources for interview preparation including https://evykassirer.github.io/playing-the-internship-game/ and https://github.com/viraptor/reverse-interview
If you have issues regarding courses, there are MathSoc class representatives who can help voice your concerns to involved faculty members.
Access to eBooks: https://subjectguides.uwaterloo.ca/compsci/books
More specifically O'Reilly Higher education: https://learning-oreilly-com.proxy.lib.uwaterloo.ca/home
There are a lot of helpful books/videos that can teach you a variety of things from finance to leadership to a variety of cs topics! (With recommendations, case studies and playlist to help you get started)
We have GPUs: https://uwaterloo.ca/math-faculty-computing-facility/services/service-catalogue-teaching-linux/access-teaching-gpu-cluster
List of math faculty services: https://uwaterloo.ca/math-faculty-computing-facility/services
Internship/Interview advice
https://www.techintern.io/

9089
package-lock.json generated

File diff suppressed because it is too large Load Diff

@ -5,6 +5,7 @@ import React, { ComponentType, ReactNode } from "react";
import { DefaultLayout } from "@/components/DefaultLayout";
import { Footer } from "@/components/Footer";
import { HorizontalLine } from "@/components/HorizontalLine";
import { Link } from "@/components/Link";
import { Navbar } from "@/components/Navbar";
import { ThemeProvider } from "@/components/Theme";
@ -19,7 +20,7 @@ export default function App({ Component, pageProps }: AppProps): JSX.Element {
return (
<ThemeProvider>
<MDXProvider components={{ a: Link }}>
<MDXProvider components={{ a: Link, hr: HorizontalLine }}>
<div className={styles.appContainer}>
<Navbar />
{/* Wrapping content with a div to allow for a display: block parent */}

@ -0,0 +1,13 @@
import React from "react";
import Content from "../../../content/advice/academic-advice.mdx";
import { Advice } from "./coop";
export default function AcademicAdvice() {
return (
<Advice>
<Content />
</Advice>
);
}

@ -0,0 +1,52 @@
.titleContainer {
display: flex;
flex-direction: row;
justify-content: space-between;
align-items: flex-end;
padding-bottom: calc(32rem / 16);
border-bottom: calc(1rem / 16) solid var(--primary-heading);
}
.title {
padding-right: calc(40rem / 16);
}
.adviceBarContainer {
display: flex;
justify-content: flex-start;
padding-top: calc(24rem / 16);
}
.adviceBarContainer > a {
padding-right: calc(48rem / 16);
color: var(--text);
}
.adviceBarContainer a:link {
text-decoration: none;
}
a.currentAdvice {
color: var(--primary-accent);
}
.content {
padding-bottom: calc(48rem / 16);
}
@media only screen and (max-width: calc(768rem / 16)) {
.titleContainer {
flex-direction: column-reverse;
align-items: center;
padding-bottom: unset;
}
.title {
padding-right: unset;
text-align: center;
}
.codey {
width: calc(140rem / 16);
}
}

@ -0,0 +1,60 @@
import Link from "next/link";
import { useRouter } from "next/router";
import React, { ReactNode } from "react";
import { Image } from "@/components/Image";
import Content from "../../../content/advice/coop-advice.mdx";
import styles from "./coop.module.css";
export default function CoopAdvice() {
return (
<Advice>
<Content />
</Advice>
);
}
export function Advice(props: { children: ReactNode }) {
const router = useRouter();
const path = router.pathname;
return (
<>
<div className={styles.titleContainer}>
<h1 className={styles.title}>Waterloo Undergraduate Advice</h1>
<Image src="/resources/advice/codey.svg" className={styles.codey} />
</div>
<div className={styles.adviceBarContainer}>
<Link href="/resources/advice/coop">
<a
className={
path == "/resources/advice/coop" ? styles.currentAdvice : ""
}
>
Coop Advice
</a>
</Link>
<Link href="/resources/advice/academic">
<a
className={
path == "/resources/advice/academic" ? styles.currentAdvice : ""
}
>
Academic Advice
</a>
</Link>
<Link href="/resources/advice/misc">
<a
className={
path == "/resources/advice/misc" ? styles.currentAdvice : ""
}
>
Additional Resources
</a>
</Link>
</div>
<div className={styles.content}>{props.children}</div>
</>
);
}

@ -0,0 +1,13 @@
import React from "react";
import Content from "../../../content/advice/misc-advice.mdx";
import { Advice } from "./coop";
export default function MiscAdvice() {
return (
<Advice>
<Content />
</Advice>
);
}

@ -0,0 +1,46 @@
<svg width="169" height="163" viewBox="0 0 169 163" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M51.1318 66.5245L70.2133 88.0394C70.2133 88.0394 28.4074 122.339 26.9088 122.011C25.4103 121.683 15.1879 110.702 14.9829 108.564C14.8695 107.382 27.1912 93.1679 37.5648 82.5335C46.5531 71.2481 51.1318 66.5245 51.1318 66.5245Z" fill="#1482E3"/>
<path d="M60.4613 97.6825L86.017 109.299C86.017 109.299 86.4817 120.45 80.2089 129.046C73.9361 137.642 63.9461 140.198 63.9461 140.198C63.9461 140.198 31.0273 150.752 30.0172 150.209C29.007 149.667 23.1963 139.586 23.3166 137.986C23.3831 137.1 31.8943 128.662 40.4812 123.006C42.1073 97.6825 60.4613 97.6825 60.4613 97.6825Z" fill="#1482E3"/>
<ellipse cx="145.07" cy="87.295" rx="23.9295" ry="26.2528" fill="#1482E3"/>
<path d="M46.9551 3.26573C46.9551 3.26573 53.9427 6.45994 57.3931 9.81421C62.305 14.5894 65.7535 25.2357 65.7535 25.2357L40.3375 31.413C40.3375 31.413 38.9662 20.3129 41.1388 13.7647C42.6149 9.31597 46.9551 3.26573 46.9551 3.26573Z" fill="#5CAFF9"/>
<path d="M48.4921 9.82917C48.4921 9.82917 53.4296 11.7742 55.8366 13.8845C59.2634 16.8888 61.5419 23.7176 61.5419 23.7176L43.2726 28.1579C43.2726 28.1579 42.4862 20.9993 44.1529 16.7242C45.2852 13.8198 48.4921 9.82917 48.4921 9.82917Z" fill="white"/>
<path d="M91.6162 3.26573C91.6162 3.26573 84.6286 6.45993 81.1782 9.81421C76.2663 14.5894 72.8178 25.2357 72.8178 25.2357L98.2338 31.413C98.2338 31.413 99.6051 20.3129 97.4325 13.7647C95.9564 9.31597 91.6162 3.26573 91.6162 3.26573Z" fill="#5CAFF9"/>
<path d="M89.7404 9.97088C89.7404 9.97088 84.4379 12.2245 81.8366 14.6281C78.1333 18.0499 75.6027 25.7501 75.6027 25.7501L95.0585 30.4788C95.0585 30.4788 95.9995 22.4292 94.2791 17.6522C93.1103 14.4068 89.7404 9.97088 89.7404 9.97088Z" fill="white"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M99.0148 140.643C93.3509 144.293 86.8827 146.308 79.7832 146.308C53.3514 146.308 25.1868 131.207 28.1788 82.1864C28.7673 78.4523 29.3064 74.8653 29.8229 71.4283C35.22 35.5182 38.1575 15.9736 69.3004 15.9736C95.0616 15.9736 102.97 35.7799 111.077 56.0822C113.595 62.3863 116.131 68.7382 119.227 74.5598C137.555 81.319 147.156 95.5379 147.156 112.389C147.156 134.19 129.502 139.897 99.0148 140.643Z" fill="#5CAFF9"/>
<mask id="mask0" mask-type="alpha" maskUnits="userSpaceOnUse" x="27" y="15" width="120" height="132">
<path fill-rule="evenodd" clip-rule="evenodd" d="M98.8031 140.644C93.1393 144.293 86.6712 146.309 79.5718 146.309C53.14 146.309 24.9753 131.207 27.9673 82.1868C28.5558 78.4527 29.0949 74.8657 29.6115 71.4287C35.0086 35.5185 37.946 15.974 69.0889 15.974C94.8502 15.974 102.759 35.7803 110.866 56.0826C113.383 62.387 115.92 68.7391 119.016 74.561C137.342 81.3205 146.944 95.539 146.944 112.39C146.944 134.19 129.289 139.897 98.8031 140.644Z" fill="#5CAFF9"/>
</mask>
<g mask="url(#mask0)">
<path d="M65.1466 101.592C67.0865 129.541 82.1064 155.6 57.2131 145.221C50.8915 144.735 41.686 129.541 39.7461 101.592C37.8063 73.643 43.5225 48.6306 61.6226 47.3743C71.4607 46.6915 82.4714 52.6303 79.6685 69.4668C78.2836 77.7856 64.4921 92.1616 65.1466 101.592Z" fill="white"/>
</g>
<circle cx="42.8409" cy="41.2967" r="16.4244" fill="white" fill-opacity="0.25" stroke="#2A2A62" stroke-width="2"/>
<circle cx="81.8702" cy="40.3646" r="16.4244" fill="white" fill-opacity="0.25" stroke="#2A2A62" stroke-width="2"/>
<path d="M57.9399 45.4759C57.9399 45.4759 60.7516 44.7789 62.5865 44.7789C64.4213 44.7789 67.233 45.4759 67.233 45.4759V48.2638C67.233 48.2638 64.4101 47.7992 62.5865 47.7992C60.7628 47.7992 57.9399 48.2638 57.9399 48.2638V45.4759Z" fill="#2A2A62"/>
<path d="M72.2703 59.6207C72.9709 66.8501 63.8639 68.4768 57.8859 67.302C51.908 66.082 49.8064 59.2592 50.7404 54.9667C51.6745 50.6742 57.2321 48.1891 63.21 49.4091C65.9655 50.6291 66.4325 51.9394 68.0671 53.566C69.9819 55.4186 70.589 56.7741 72.2703 59.6207Z" fill="white"/>
<path d="M59.1916 54.4221C61.642 54.4221 63.6284 53.2083 63.6284 51.7111C63.6284 50.2138 61.642 49 59.1916 49C56.7413 49 54.7549 50.2138 54.7549 51.7111C54.7549 53.2083 56.7413 54.4221 59.1916 54.4221Z" fill="#2A2A62"/>
<path d="M72.0818 63.0058C70.9142 64.0902 69.3263 64.9487 67.8318 65.5813C65.8703 66.4398 64.0022 67.2079 61.527 66.9368C55.2221 66.1686 51.2524 61.7406 51.7194 56.68C52.0464 52.9749 55.082 50.1282 59.0985 49.1794C53.6809 49.089 50.5052 52.4778 50.0381 57.4933C49.5244 62.9154 54.1947 67.976 60.4995 68.7442C65.6835 69.3767 70.3071 66.9368 72.0818 63.0058Z" fill="#2A2A62"/>
<path d="M59.1919 54.4258C59.1919 54.4258 58.9584 61.0679 65.8237 58.2664" stroke="#2A2A62" stroke-width="3.06671" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M59.1922 53.4694C59.1922 53.4694 59.1922 61.0151 53.4478 57.4455" stroke="#2A2A62" stroke-width="3.06671" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M122.046 102.281L147.601 113.898C147.601 113.898 148.066 125.049 141.793 133.645C135.521 142.241 125.531 144.797 125.531 144.797C125.531 144.797 92.6118 155.351 91.6016 154.808C90.5915 154.266 84.7807 144.185 84.9011 142.585C84.9676 141.699 93.4788 133.261 102.066 127.605C103.692 102.281 122.046 102.281 122.046 102.281Z" fill="#5CAFF9"/>
<ellipse cx="52.2742" cy="38.0042" rx="3.71721" ry="2.32326" transform="rotate(10.8273 52.2742 38.0042)" fill="white"/>
<ellipse rx="3.71721" ry="2.32326" transform="matrix(-0.982197 0.187851 0.187848 0.982198 77.7336 38.1933)" fill="white"/>
<path d="M96.1392 83.3516L79.2147 108.795C79.2147 108.795 45.3163 83.5934 45.4585 82.106C45.6007 80.6186 54.1928 67.1924 56.0363 66.204C57.0561 65.6572 70.6245 71.5456 80.8867 77.0026C91.5837 80.9541 96.1392 83.3516 96.1392 83.3516Z" fill="#5CAFF9"/>
<path d="M83.9814 44.5283C82.4347 46.6211 78.0746 49.5511 73.0086 44.5283" stroke="#2A2A62" stroke-width="2.752" stroke-linecap="round"/>
<path d="M55.3403 44.5216C54.0955 46.595 50.5864 49.4977 46.509 44.5216" stroke="#2A2A62" stroke-width="2.752" stroke-linecap="round"/>
<circle cx="22.7226" cy="68.4719" r="3.51679" transform="rotate(-28.4134 22.7226 68.4719)" fill="#2A2A62"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M23.9942 59.3844C25.9297 56.1954 26.169 52.0928 24.2658 48.5749C21.4125 43.3008 14.8239 41.3383 9.54972 44.1916C4.27555 47.045 2.31308 53.6336 5.1664 58.9078C7.0648 62.4168 10.6167 64.4599 14.3348 64.594L16.4948 68.5867L26.1475 63.3646L23.9942 59.3844Z" fill="#FFD25F"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M23.9942 59.3844C25.9297 56.1954 26.169 52.0928 24.2658 48.5749C21.4125 43.3008 14.8239 41.3383 9.54972 44.1916C4.27555 47.045 2.31308 53.6336 5.1664 58.9078C7.0648 62.4168 10.6167 64.4599 14.3348 64.594L16.4948 68.5867L26.1475 63.3646L23.9942 59.3844Z" fill="url(#paint0_radial)" fill-opacity="0.5"/>
<path d="M19.7554 67.8638C18.4719 65.4914 15.6613 60.2961 14.6865 58.4942C13.468 56.2419 10.4428 56.3644 10.3482 58.512C10.2432 60.8981 14.8745 60.0617 16.3361 58.9603C17.7978 57.859 17.1861 53.0657 15.3529 54.0575C13.3284 55.1528 16.0634 59.0303 18.5884 57.7419C21.1134 56.4535 22.0383 53.3522 20.3099 52.3851C19.0346 51.6715 15.3008 53.3871 23.0887 66.0604" stroke="#2A2A62" stroke-width="1.06708"/>
<path d="M15.8638 67.3304L25.4735 62.1316L27.0007 64.9543C27.4493 65.7836 27.1407 66.8197 26.3114 67.2684L19.7049 70.8424C18.8756 71.2911 17.8395 70.9825 17.3909 70.1532L15.8638 67.3304Z" fill="#525284"/>
<path d="M11.292 46.0471C14.0638 44.8322 20.3952 44.0881 23.5461 50.8307" stroke="url(#paint1_linear)" stroke-width="1.49392" stroke-linecap="round" stroke-linejoin="round"/>
<defs>
<radialGradient id="paint0_radial" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="translate(16.3054 56.1049) rotate(-94.6765) scale(13.3169 10.2037)">
<stop stop-color="white"/>
<stop offset="1" stop-color="white" stop-opacity="0"/>
</radialGradient>
<linearGradient id="paint1_linear" x1="21.7332" y1="36.7882" x2="18.6363" y2="50.6531" gradientUnits="userSpaceOnUse">
<stop stop-color="white"/>
<stop offset="1" stop-color="white" stop-opacity="0"/>
</linearGradient>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 7.8 KiB

Loading…
Cancel
Save