Plan before you write. Many people seem to forget that mantra and just write. That doesn't work. You end up with a jumbled mess that's really hard to read afterwards and you'll hate yourself for not planning beforehand. Seriously, the amount of open source stuff I see that looks like it's just thought up as the author goes along is astounding.
For God's sake write tests! You don't have to write tests for every single method, but write them for important ones like the ones that parse information or do at least partly mission critical stuff in other threads.
Use breakpoints! Seriously, use them!
Use console logs! Or if you're building something like a mobile application, use a visual logger like CocoaLumberjack to read logs when you're not near your console.
Find good testers who are willing to help. This is very important. Testers who want to get into your beta testing just because they want new things first are useless.