9 programming habits for successful software developers