To survive…
1. Think of your app ideas early
Try to think of a fantastic app idea for the final project while you still have time, and do a half-implementation during Assignment 1 / 3. That’ll reduce the workload for the final project and you have more time to worry about marketing.
2. Scope your project well
The 80/20 rule is a rule of thumb that states that 80% of some effects come from 20% of some causes. For the CS3216 assignments, don’t bother coming up with full-fledged functionality with all the bells and whistles that make it usable long-term. That was our mistake for Assignment 1 — we implemented too many functionalities which caused a lot of backend headaches, yet the DB logs reveal that the TAs only used a tiny fraction of the full functionalities implemented. There were entire modules that were not visited at all.
Do the bare minimum of functionalities (the 20%) required to make the app usable, and do it damn well. Make sure the app design is a pleasant sight to behold and the interface is sleek.
3. Do your weekly blogs weekly
Don’t be like me and leave it to the end to backdate blog posts, like this one right now.
To get the best out of CS3216…
4. Pick your teammates well
One thing I somewhat regret is choosing to work solely in teams that I am familiar with. This proved to be an issue because the people I am familiar with are all alike – everyone is familiar with Rails, and are all equally good backend developers and equally shitty frontend designers. As such, while we did learn stuff along the way together, there is considerably less we could have learnt from each other.
If you’re a backend developer, work with a frontend designer at least once. That way, you’ll be able to see things from a UI/UX perspective instead of a functional perspective. And vice-versa for frontend designers.
5. Be daring with your ideas
Prof. Ben likes to say how if someone came up to him many years ago and pitched the idea of a social networking app that only allows posts less than 140 characters long, he would say that it’s stupid and crazy.
Many ideas may sound stupid at the beginning, but don’t just throw them out (else you’ll be stuck with no project). Give them a chance to develop and validate them rigorously.
6. Don’t do CS2103 + CS3216
CS2103 is yet another project-heavy module out there, and unless you have it well planned out, you’re extremely likely to end up with at least one burden teammate. If you’re lucky, he’ll slack and simply not do any work. If you’re unlucky, he’ll write such bad code that everyone has to clean up / redo afterwards, expect the entire team to babysit him, and to top it off he’ll throw a huge tantrum at the end of the semester about how the whole world has wronged him.
Rant aside, CS2103 took up even more time than CS3216 because we were down to a (3 – 1 = 2)-man team (thank god my other teammate was extremely capable, though equally screwed because he also took CS3216 simultaneously with me >_<). Software engineering in Java is extremely tedious and laborious, and you’ll find yourself spending a lot of time trying to whack Java to do what would have been two lines of code in any other language.