3 ms·
When I think about building software, I think about the long term benefits of the software to humanity, or if I'm working for a particular company, the benefit
by pj 17y ago
When I think about building software, I think about the long term benefits of the software to humanity, or if I'm working for a particular company, the benefit to the organization.
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?
- cellis 17y agoThat isn't possible. You can't think long term in an industry that changes every month. You must strike while the iron is hot!
- mechanical_fish 17y agoThe truth lies in between. You can think long-term while also delivering software for a fly-by-night platform. You just have to understand the difference between an app or business model and various instantiations of that app or business model. Just because Garmin's software for the Palm OS is obsolete doesn't mean Garmin is obsolete. The iPhone OS was originally developed for the NeXT cube, before many HN readers were born. Microsoft Word was originally written for Xenix systems, then ported to DOS, then the Mac, and finally ported to Windows. The obsolescence of the DEC PDP-7 didn't hurt the Unix platform. The fact that all of Electronic Arts' software is hopelessly obsolete within a handful of years hasn't stopped them from staying in business for decades. There are apps being prototyped on Facebook and the iPhone today that will have decades of life on one platform or another.
- mcav 17y agoYou can't build software that will last indefinitely unless you control the whole stack. Building on Facebook, you have dependency on their business to succeed. Building on Windows, you have dependency on Microsoft and Windows and backwards compatibility, etc. As long as the stack underneath you shifts, your software will break someday. You can maximize your longevity, though, if you build on a solid foundation and work at a high level. If you only use Python core, for instance, your software will probably work on machines for a long time -- as long as a compatible version of Python works on those systems. Contrast that with something OS-specific, which could break given future operating system versions. The same idea applies to the web and web frameworks. Building software is like building a house: The stronger and more resilient you build it, the longer it will last. With regular care, the house will last a long time... but left unattended, it will eventually rot and crumble at the feet of nature.
- jasongullickson 17y agoSo if I am going to spend my time developing something, I want it to never go away. Get into building furniture or mainframe software, because as long as you're developing for an emerging platform controlled by someone else (in particular, someone interested in making money), the chances of longevity are slim. If you zoom your lens out a bit though and look at developing your art (as opposed to developing a platform) then you can go on forever. There is a saying in the film industry (to paraphrase) that you only make one movie, you just keep making it over and over again. I see the same thing in any creative venture such as software; continually refining the singular vision of perfect code, which transcends platform, language and even developer.
- jamesk2 17y agoSpecific applications and platforms can have a short shelf life but really each application that is made can teach you things that can be used towards progressing towards the long terms goals for your company or humanity. I'm developing a twitter application. Twitter might or might not be a fad. I can't see so far into the future and while my prognosticating skills are decent, I'm not 100% certain. Hell, I thought friendster was hot. Anyway by developing this one application, I am learning about social tools (which I've never done before), neural networks, semantic analysis, markov models and a hell of a lot of stats techniques I previously did not have a lot of usefulness to me. In the grander sense, I was more comfortable with deterministic techniques rather than probabilistic techniques. If Twitter goes down for good, I lose some time but I take that new knowledge and make the next app that gets me closer to my 20 year goal.
- webwright 17y ago"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." How many people do you think said the same thing about the web in the early days? Lots of people passed on the opportunity to invest. Plenty of people said "$25 for a domain name? What a ridiculous way to spend money". Both Facebook and the iPhone are platforms and people are betting that they will be huge. Some platforms won't get huge and most will wither (Amiga, anyone?), but the people who bet on the right platform EARLY win big. They win big, they can benefit humanity in a big way, and their shit does not go away.
- Hexstream 17y agoSolution: Build a very high-level, declarative, domain-specific, semantic, platform-agnostic core for your app, and then generate most of your platform-specific port from that. You'll still need to customize some UI and behavior to respect platform conventions because you DON'T want a generic "cross-platform look and feel", but you'll otherwise be very agile about porting to whatever platform is hot at the moment.