Conclusion - Michael's Software Works
Amazon
As you can see most of the software applications I've developed are not for some job or for some urgent need.
I developed them so I could learn more about programming philosophy and the programming language I happen to be using.
This is the spirit I encourage my fellow software engineers to develop and nurture because you gotta enjoy it! Plus it's just plain fun!
Programs like board games, FTP server and client, PC alarm are useful in real life.
Programs like voice driven calculator and speech recognition program may not be as useful as I just found it interesting to try the Microsoft Speech API.
Whatever purpose you have just enjoy programming and you'll go places!
With some creativity and passion, one can create something innovative on their own.
You don't need a teacher or anyone else to push yourself. All you need is PASSION. And maybe some craziness and oddity.