So if I am going to spend my time developing something, I want it to never go away. Facebook will go away. The iPhone will go away. These are fads.
What people who think like I do often fail to understand, is that most of the world doesn't think like we do. They want money. They want popularity. Even if it is fleeting.
My question is: Where is the balance? Think about investing. If you have a 20 year vision and invest in those companies, you have to have 20 years of patience. Plus, how do you know your vision of 20 years out is the correct one? How do you know how much vision you have? If you consistently think 5 years ahead of the masses, then buy companies that the masses will think are awesome in 5 years.
If you are 3 months ahead or one year ahead, then buy those kinds of companies.
It's the same with building applications. You are building applications ahead of time for a market that will want them by the time you are finished building it. For example, if you build a facebook app and that app is going to take 5 years to complete, well... facebook may be gone by then and you are wasting your time.
So what you are stuck with then, is building applications that don't take very long or are targetted toward a massive population with lots of investment and horsepower behind the app that can be built very quickly. Of course companies that can execute like this can make money building apps for one platform after another making money off the network effects within that platform. It's not just facebook, it's salesforce, quickbase, microsoft, java, oracle, php, the list really is endless...
So, to summarize, how do we determine how much vision we have? How do we determine how long it will take to build an app? How do we determine when the platform on which we build our apps will cease to exist -- if ever?