... it is a fundamental principle of testing that you must know in advance the answer each test case is supposed to produce. If you don't, you are not testing; you are experimenting.
90% of the functionality delivered now is better than 100% delivered never.
Do what you think is interesting, do something that you think is fun and worthwhile, because otherwise you won't do it well anyway.
Debugging is twice as hard as writing the code in the first place. Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it.