В общих чертах
1. Обрабатывай все возможные ошибки - сначала продумывай модель, потом прогай
2. Не спеши писать свои методы - сначала всегда проверяй, есть ли уже стандартная реализация
3. Знай возможности языка, на котором собираешься писать, чтобы по возможности использовать их по максимуму
4. К предыдущему - полезно знать, какую парадигму продвигают создатели языка - для её поддержки и заточен язык, её и стоит придерживаться по максимуму