Self-learning
Pre-copium
During my first co-op search in 1B, landing an internship — let alone a single interview — felt borderline impossible.
For context, I’m enrolled in a co-op program at Waterloo, where students alternate between study and work terms, completing up to 6 internships by graduation. At the time, my coding experience was limited to basic Python, C, and ✨ Racket ✨ (a very unpopular language taught in Waterloo’s first-year CS course).
At first, I was initially hoping for some sort of SWE job, but by April, I was applying to quite literally anything... Nonetheless, I was fortunate enough to secure a last-minute, non-technical internship later in May.
Looking back, my struggles boiled down to a few key things:
I was a first-year student with no relevant work experience, stuck in the classic chicken-and-egg problem, where you need experience to land a job, but you need a job to gain experience.
I had no personal projects to showcase my skills.
I didn’t start coding at the age of 5 and had no Google or NASA internships under my belt. 😔💔
Jokes aside, after spending a whole term applying to internships while juggling assignments and exams, I set out to use my free time over the summer to pick up some real technical skills, in hopes to make my next job search a little easier.
After some thought, I decided to learn full-stack development, as it seemed like a foundational skill worth learning and one of the most accessible paths into the SWE industry.
Learning style
The common advice for learning any technical skill is to just "build projects". However, I personally find that diving into projects without any foundational knowledge isn't the most effective approach for my learning style, and I also wanted to avoid the classic trap of tutorial hell.
Instead, I looked for a structured course that I could study through first. After some research and Reddit browsing, I landed on Full Stack Open, a free online course by the University of Helsinki, covering essentials like React and REST APIs.
Learning full-stack development
From mid-June to late-July, I spent about 2 hours per day working through 7 sections of the course:
- Part 0 - Fundamentals of web apps (HTTP requests)
- Part 1 - Introduction to React (components, props, useState)
- Part 2 - Communicating with a server (forms, promises, useEffect)
- Part 3 - Programming a server with NodeJS and Express (REST APIs, MongoDB)
- Part 4 - Testing Express servers, user administration (JWT)
- Part 5 - Testing React apps (Cypress)
- Part 6 - Advanced state management (Redux)
- Part 7 - React router and custom hooks (routing, styling)
Overall, I think the course did a great job of covering the fundamentals, with hands-on exercises that progressively built mini-projects. So if you're looking to get started with a free online full-stack course, I would highly recommend checking it out.
Building a project
To apply what I learned, I wanted to build a full-stack project from scratch, as I firmly believe the best way to learn is by getting stuck, breaking things, and problem solving.
After a month of grinding, I finished designed, developed, and deployed Stockle.ca, a stock-themed version of the viral Wordle game. If you're interested in the technical details, feel free to check it out .
Overall, it was a valuable learning experience, as I got to independently work on multiple aspects of application development — including design, backend, frontend, and infrastructure — and gained more knowledge than I had anticipated.
Leveraging online resources
While building Stockle, I also made sure to take advantage of the free online resources available to help me debug and learn unfamiliar topics:
- ChatGPT (MVP)
- Github Copilot (free for students)
- Youtube (AWS tutorials)
- Stack Overflow (debugging issues)
Landing an internship
For my next internship search, I slapped Stockle onto my resume, which greatly improved my interview rate success and became a great talking point during interviews.
Overall, this experience reinforced a lingering idea that I had in my head, in that: your school and program don't matter as much as you might think.
Closing thoughts
Building Stockle was a super rewarding experience for me, as it helped me realize how much I enjoyed the process of transforming an idea into an actual app.
Moving forward, I hope to continue self-learning new skills, and while some university courses are great, at the end of the day, I believe that taking the initiative to learn things you’re genuinely interested in — whether through design teams, internships, or projects — is just as important.
Anyways, that's all from me! 🙂