"Nothing in the world can take the place of persistence. Talent will not; nothing is more common than unsuccessful men with talent. Genius will not; unrewarded genius is almost a proverb. Education alone will not; the world is full of educated derelicts. Persistence and determination alone are omnipotent. The slogan Press On, has solved and will always solve the problems of the human race."<p>Calvin Coolidge
I think another important thing to do is to choose a software development methodology for personal (or small group) projects. In my case, I like the agile software development for my personal projects, it makes the projects more enjoyable.
Sound advice, but I guess this is more for sticking with a craft and getting better at it.<p>Hmm, as a programmer who works for a salary, I think it is a very important skill to know when to quit the circumstances which are stopping you from being happy with your daily work.<p>You can be extremely spirited and self-motivated, but many things will gnaw away at your core. A micromanaging boss who thinks programming is easy (because he did it a decade ago), an office environment where you are regularly entangled in poisonous politics, or people who plain demotivate you.<p>When it is time to go, it is time to go. :)
I tell myself that this is exactly why its so important to be very selective in choosing what you work on. Its harder to give up if you really believe in what you are doing.