Preface

Firstly, there are a lot of good advice here so do take a look at it first. This article will be somewhat similar, given from my own personal perspective. Rapid bullet style. Note this list is not intended to be followed rigidly!

You are in year 1. Now what?

  • Take CS1101S seriously. Finish the quests on top of the missions, talk and discuss with your friends if needed. You will learn a lot and build up your foundations
  • Understand and practice Wishful Thinking (or Blackbox-ing), you will start to appreciate it more and more
  • Create a Github account
  • Join the NUS Hackers chat
  • Look out for CS related CCAs where you can work on technical stuff. Raffles Hall Developers for instance, or NUS Fintech Society, or Google Development Club. Note that StartIT, Computing Club, and NUS Hackers are more “committee” based clubs rather than technical clubs
  • Take part in CS1101S’s sumo-bot challenge. It’s a fun experience!
  • Join some Hackathons. Eg. Hack and Roll (by NUS Hackers), Hack for Good (by GDSC), or the ones organised by other universities / organisations
  • Start learning version controls (eg. Git)
  • Start exploring the basics of frontend development - CSS, HTML, Javascript
  • Try creating a simple project and upload it to Github (A telegram bot, a static personal website)
  • Attend NUS Hackers events. Go for Friday Hacks talks once in a while. There are many interesting talks (and pizza and bubble tea)
  • Consider following Women in Tech and joining their events (if you are a girl)
  • Start using the terminal and do some basic UNIX
  • Join the Project Intern chat
  • Consider taking CP3108B to contribute to Source Academy
  • Get Github copilot (It’s free if you use your student account)
  • Do some sports. Join some fun CCAs for your hall/NUS, make new friends
  • Explore and learn a bit of Markdown
  • Start exploring Vim keybindings, or take it seriously when doing CS2030S (you might end up using it even after the course ends)
  • Don’t whine on Confessit or Reddit. Don’t let your grades affect your learning
  • Start working on your resume
  • Start thinking about what you want to do during the summer

It is almost Y1 summer. Now what?

  • Set up a Linkedin account and start applying for internships
  • One: If you are a beginner and you want to learn about building cool stuff (+ 4MC), consider doing Orbital
  • Two: If you manage to secure an internship in a tech role, considering going for it
  • Three: If you are a bit more experienced and you did not secure an internship, consider CVWO
  • Four: If you are interested in research, I think they have a new programme for it
  • Five: You can consider applying for Google Summer of Code, or contribute to open source projects like NUSMods
  • Six: Consider going for TIPS if you want to learn how to prepare for technical interviews. They will send out an email closer to summer
  • Seven: Relax and travel, spend time with your family and friends. It’s okay to spend time for yourself
  • Learn about how different technologies come together to make software works. Have a general understanding of what is frontend, what is backend. Server vs server-less. Frameworks vs libraries. How to host applications etc.

You are in year 2. Now what?

  • Start following more tech-ish content like Hackernews, or “tech influencers” like ThePrimeagen
  • Start reading up more about clean code and good architecture
  • If you have not, start exploring popular technologies not taught in class (eg. React, Tailwind etc.).
  • Don’t just use a technology, try alternatives and understand what problems they solve. Try creating a project using vanilla javascript, then try it with React. Try creating a project with inline CSS, then try using Tailwind. Try creating a project using React useContext hooks, then try using Redux. Try creating your own components from scratch, then try using component libraries like Material UI, then try Shadcn. Understand tradeoffs and differences
  • Try creating a personal website
  • Try blogging. Write about anything of your interest and share them! It can be philosophy, tech, baking, or anything!
  • If you like entrepreneurship, consider applying for NOC
  • If not, start researching what countries and universities you are interested to go for Exchange
  • Try being a TA for a mod you did well in
  • Try applying for interesting part time internships or research under NUS NSWS
  • Consider taking mods to contribute to NUS open source projects
  • Now you should have a better idea of what each computing CCAs does, consider joining one
  • Start thinking about what focus areas and industries you are interested in. Plan your mods for the next 3 years, accounting for NOC etc.
  • Join communities that align with your interests. Eg. If you are interested in AI, consider joining AI Space. If you are interested in entrepreneurship, consider going for events organised by NES or applying for nHouse
  • Don’t be shy. Start engaging with the communities. Ask questions in the telegram groups, reply to people. Create Github issues. Resolve them. Share your blog. Talk to people
  • Participate in the Advent of Code
  • Start spending more time to build things outside of academic related work. Work in a team, work on your own project, it does not matter. Start pushing code!
  • If your project starts to get serious, consider applying for the Venture Initiation Program at SoC for 10k and mentorship to take your project further
  • Start looking at interesting Github projects and starring them. Look at code. Look at other people’s code. Understand other people’s code. Navigate through large codebases
  • Start learning to work on large codebases (internship, open source projects etc.). Working on small personal projects and working on large projects with other people’s code is very different
  • Read documentations. Read Stackoverflow answers. Do not rely too much on ChatGPT.
  • Take difficult but interesting modules and don’t put too much emphasis on grades. Take CS3216/CS3217 if you want to challenge yourself and learn how to be a better developer. Do not take “easy” modules for the purpose of pulling up your CAP. Take modules to learn
  • Start applying for internships
  • If you want, start applying for overseas internships
  • Start getting serious with types. If you use Javascript a lot, start exploring Typescript. if you use python a lot, start adding type annotations to your python code
  • Understand tradeoffs, form opinions. Tailwind vs Styled Components? Server vs Serverless? Should functions be short?
  • Remember when I mention to follow “tech influencers” and “news”? Form your opinion about what you see based on your own experiences. Someone tweeted about why Vim sucks? Do you agree with their take? Why and why not?
  • If you have not, start exploring other paradigms that you are less familiar with. If you mainly work with web development, explore “low” level languages like C or Rust. Explore machine learning with python, explore mobile development with Swift. Explore game development!
  • If you have not, start exploring the different software engineering practices. Understand what AGILE, TDD is.
  • Start learning scripting with Bash. Start learning how to automate things. Start learning CI/CD
  • Start being serious about good pratices. Doing projects is no longer about getting things to “work”. Learn about design patterns like strategy pattern, factory etc. Apply them in your personal projects. Learn to detect code smell and avoid them. Refactor them. Follow coding conventions strictly but not religiously.
  • If you have not, learn about database operations

It’s year 2 summer now. Now what?

  • If you manage to secure an internship. Good! Focus on learning
  • If not, you should have the basic skillset to be able to build stuff. Work on an interesting project, or contribute to open source

You are in year 3. Now what?

Come back in the future.

You are in year 4. Now what?

Come back in the future.