Paul Graham's most recent article, Hackers and Painters, makes a very important point that should be explained to all CS majors before they decide to major in CS:
The other problem with startups is that there is not much overlap between the kind of software that makes money and the kind that's interesting to write. Programming languages are interesting to write, and Microsoft's first product was one, in fact, but no one will pay for programming languages now. If you want to make money, you tend to be forced to work on problems that are too nasty for anyone to solve for free.All makers face this problem. Prices are determined by supply and demand, and there is just not as much demand for things that are fun to work on as there is for things that solve the mundane problems of individual customers. Acting in off-Broadway plays just doesn't pay as well as wearing a gorilla suit in someone's booth at a trade show. Writing novels doesn't pay as well as writing ad copy for garbage disposals. And hacking programming languages doesn't pay as well as figuring out how to connect some company's legacy database to their Web server.
I have been wrestling with this fact for a few years now. I tend to phrase it differently however. I would say it this way:
All commercial software is unfulfilling to implement. This is because the only reason to get paid for writing software is if the software you write will make money. You end up working for a company that sells software to other companies in order to help those companies make more money. And frequently the way your software ends up saving money is by putting someone out of a job (automating their position). Don't expect to get any emotional fulfillment from this process, because if you end up contributing anything to society as a whole, then that is exactly how much the company will charge for the software. If your contribution is worth $10, then the software will sell for $10. It's a net wash, in terms of doing any social good, unless you consider keeping yourself employed to be a social service.
Paul Graham's essay also makes me wonder whether I should bother with trying to go to school. Part of why I want to get a formal education is because without a degree, my job choices are limited. I had hoped that if I got a degree I could get a more "interesting" job. But I'm starting to doubt whether any job worth getting paid for will ever be "interesting" to me.
Perhaps the best I can hope for is the equivalent of painting houses during the day while working on my own works of art at night. The only problem is that it's hard to find the energy to work on a piece of art after spending 8-10 hours a day painting houses.
Here's another great quote from the article -- one I can definitely relate to:
Great software, likewise, requires a fanatical devotion to beauty. If you look inside good software, you find that parts no one is ever supposed to see are beautiful too. I'm not claiming I write great software, but I know that when it comes to code I behave in a way that would make me eligible for prescription drugs if I approached everyday life the same way. It drives me crazy to see code that's badly indented, or that uses ugly variable names.
Posted on May 6, 2003 01:38 PM
More programming articles
It's funny... I pulled out the last quote without reading your comment. I also liked the comparison (to some extent) between science and hacking...
Posted by: Wisp at May 7, 2003 03:48 PM