We built NUSMods
(And some other things...)
Disclaimer
This talk is made up of our opinions and experiences.
Your results may vary.
No. 1 thing Google looks for?
Learning Ability
- Technology moves really rapidly
- Important to large companies
- Even more important to startups
- Eventually overtake those with more experience
Optimize for Learning (Not grades)
- Grades matter most before university
- University is a whole new ball game
- Choose what you want to learn
G.P.A.’s are worthless as a criteria for hiring, and test scores are worthless. ... We found that they don’t predict anything.
Laszlo Bock, senior VP of people operations for Google
Optimizing for Learning
- Not optimizing for grades doesn't mean it's ok to get C's
- You'll naturally get decent grades
- How much learning value vs. time spent?
Don't take easy modules
just to pull your CAP up
- Challenging modules force you to learn
- Pick electives you find interesting, not easier
S-shaped Learning Curve
Key: Increase Learning Efficiency
- Learning accelerates over time
- Small efficiency gains have compounding effect
Multiple Monitors
- 10% - 50% boost in productivity
- Diminishing marginal returns after dual monitors
- Sweet spot: Two 24" monitors
Silence
- Very focused mental concentration needed, especially coding
- Deep state of flow desired
- Give total silence a try
- Earplugs / noise-canceling headphones
Sleep & Exercise
- Often neglected, especially with many deadlines looming
- Proven many times over to improve learning and memory
- Health benefits (of course)
How to get started?
Many modules in SoC are optional
Do modules because you want to, not because you have to
The Good Modules
- CP3101A Global Open Source Project
- CP3101B Web Programming and Applications
- CP3108A Independent Work
- CP3108B Independent Work (Orbital)
- CS3216 Software Development on Evolving Platforms
- CS3217 Software Engineering on Modern Application Platforms
The Origin of CS3216 and CS3217
- It all started with one man: Prof Ben Leong
- Allow students to work with the latest technology relevant to the industry
- Opportunity to work on their own ideas
CS3216 Software Development on Evolving Platforms
- About product creation and development, not just about coding
- Learn to deal with cutting edge and evolving technology
- Work in multidisciplinary teams
CS3216
- Lots of teamwork involved
- Chance to work with different talented people
- Multidisciplinary in nature (developers, designers, biz dev)
Course Structure
- 3 Assignments (Facebook App, App Seminar, Mobile Web)
- Blogging assignments
- Final Project (Any web-based application)
Why CS3216?
- Get to meet cool people
- Level up in web development. Fast
- Build something you are interested in
Notable CS3216 Projects
- Library for building real-time multi-users interactive apps
- Instant Hangout / Skype service
- Along with useful collaboration features
- No login nor download required
CS3217 Software Engineering on Modern Application Platforms
- Hardcore software engineering module
- Reason for the existence of PL1 (iMac lab)
- Each student is loaned an iPad for the course
Course Structure
- 5 Problem Sets (individual)
- Build a Puzzle Bobble game by the first half of the semester
- 1 Final Project (team)
- Build any iOS application of your wish
Why CS3217?
- Mobile is hot.
- More Facebook users are on mobile than desktops.
- Mobile developers are highly sought after.
Notable CS3217 Projects
Tenza Yakitori
Notable CS3217 Projects
Huntville
How to Survive CS3216 and CS3217
- Sleep less
- Make friends
- Learn fast
- Use libraries and frameworks. Do not reinvent the wheel
Personal Experience
- Very little handholding; thrown into the deep end of the pool
- Extremely fast way to level up
provided you don't die
- You'll never die alone even if you do
Hackathons
Eat. Hack. Sleep. Repeat
What's a Hackathon?
- Form a team and code over 24 hours
- Free food for a weekend
- Cool swag!
What should I hack?
- Anything! But usually there's a theme
Winning Strategies
- Swiss-army knife team
- A front-end deve with design experience
- Using the right tools to accelerate development
- All about fluff and showmanship
Swiss Army Knife Team
- Diverse and multiple roles.
- Back-end guy
- Front-end guy (who can design)
- Guy who can pitch
- Pick up new skills fast.
Showmanship
- Only 2-3 mins per presentation.
- Know what you want to demonstrate and rehearse the presentation flow well.
- Focus on the part that needs to be shown. Make sure those work!
Hard code the rest
Winning Hacks
SoundMesh
3rd in PennApps Fall 2013
Winning Hacks
Magellan
2nd Runner Up in Smart Port Hackathon 2014
Hackathon Experience
- Good way to learn a new library/framework
- Tiring but rewarding process
- Potentially complete your homework through a hackathon
Open Source Software (OSS)
- Observe and learn from real-world projects
- Empowers you to make an immediate impact on the world (Even with limited resources as a student)
- Collaborate and learn from more experienced people
Open Source (Most Of) Your Code
- GitHub is almost like a portfolio
- Push projects and significant homework to GitHub
- 5 private repositories free for students
Commit Logs from Last Night
Soloing: Starting your own OSS Project
- Put together everything you've been learning
- Don't worry if not polished
- You only see final product
Early NUSMods Release
Please refresh if the page doesn't load
NUS-Related Projects
- Scratch your own itches
- Directly accessible community of users
- Help your fellow students
NUSMods.com
- 65K unique devices
- 2.1 million page views
- Most visible student-led OSS project
- Use that visibility to benefit the community
NUSModifications GitHub Organization
- Check it out here
- Link or host other NUS OSS projects
- Yang Shun integrated Corspedia
- Ashray integrated ModMaven
Keeping it Going: Write Code Every Day
- John Resig, jQuery creator has a great blog post about this
- Develop the habit of working on your side projects every single day
Gamification: GitHub Streaks
Q & A
By Beng and Yang Shun