Go on shoot me, for writing something you already know.
But this just came to me. As a computer science student I often think about improving the world, with software and computers of course! The theme has been spinning around my head lately, and I'm really empty for ideas. So thinking to myself, perfect time to pick up some of these old projects that never went flying. But then it struck me, as lightning from a clear blue sky.
My motivation for making software, has always been to make something that I would like better than existing products. Like as in working with.
Example: a database system, that has SQL support(over HTTP-probably) and maybe RESTfull also, but is more like a document oriented database, not dependent on a fields existence. And instead of returning traditional row oriented data, maybe XML, or even better JSON data, since this document store should be object oriented.
Alright, this might seem complicated, it is - if you were to develop the whole thing yourself. A good datastore, not dependent on fields, and containing objects(probably related to different parent records), not easy(at least from my point of view). A server wrapping this datastore library, furthermore containing SQL optimizer and parser, REST supporting stuff, JSON/XML serializer, and some sort of effective request handling. Daunting task, and this is only my 5 minute overview of the example.
Back from the example - what struck me was, that developing software can be more simple than that. SHOULD be more simple than that. The philosophy of doing everything yourself in the first go, is absurd, probably unreachable! The solution is: Use existing libraries to get the base functionality, and then use your favorite language to wire things together. When more speed is required, find bottlenecks and write the library/program yourself, integrate it tightly with your existing wire-code, and when it works, generalize so you can provide the functionality to your other projects.
Then Repeat the bottleneck-finding-rewrite-code-process until software is completely written by yourself, release to manufacturing, sell product and support, profit!, sell company, PROFIT!
Well allright, you might not be writing for money, then just give your code and libraries to the community, such that I can read your code and make it myself afterwards :-)
PS.: Coming up, complaint about Google bloggers wysiwyg editor.