Earlier this week, the New York Times posted an article titled Silicon Valley's Youth Problem which I have been thinking about a lot this week. As you can imagine the story quickly hit the front pages of reddit and Hacker News. As I browsed through the comments on both sites, I found a similar theme winding through both threads. "Why aren't people out there solving hard problems?" And that's something that is echoed in the article and is seen as the core problem of Silicon Valley and startup culture. People are dropping out of school to build things like Snapchat and WhatsApp, which do nothing to advance human society, like technology should. And things like that are where articles and comment threads start to lose me. They're right, and I know they're right. Human society and culture as a whole is not going to advance because someone built an application that lets you share photos and videos that self destruct. No one ever thought that it would. But is that really always the point? Is the only reason to get up in the morning and build something because it will change the course of human history? Didn't think so. This is something that I heard a lot of in my last semester of college also. Lots of times graduate students would come downstairs and work in the undergrad computer science lab, because we were all friends and whatnot. And occasionally people would get into pretty heated arguments about how startups "aren't solving any of the problems that matter", and that "if they were doing something hard I would take them more seriously." Which is all fine and good, but I find it to be a stupid comment. In my mind, there is one (maybe two) reason why people get involved in software development, and that is because they enjoy it. Programmers like to do what they do, because they enjoy building things. They enjoy seeing what they built improve the lives of others in whatever small way it can. And along with the enjoyment of building things comes the idea that you should build something that you enjoy buildings.
To me this is already a solved problem. If you get a bunch of software developers in a room and tell them to build something that they don't want to build, you'll probably come out with crappy code, and it will probably take a long time. That's just the way it works. Similarly, when you take a bunch of developers, put them in a room and ask them to build a project that they are really passionate about, you'll most likely get better code quality and it will take less time. So the answer to the question "Why aren't young developers solving hard problems?", because they aren't passionate about those problems. To be perfectly honest, as a young developer myself, I don't even know what those problems are. They most likely aren't things that I would come across in my day to day life, and sit back and figure out how to fix it. I could see myself running into the problem of wanting to send a picture message the self destructs after 10 seconds however. (I personally didn't see this problem, but I can see how someone else got there).
The other thing I saw a lot of in the comments was "Young talented developers are following the money." Which I think is only half true. It may be the case now, that people want to work at startups because they're getting $19B buyouts, but that wasn't the case when WhatsApp was founded.
For me at least, it came down to company culture. And that's what really comes to mind when I think "Old guard" and "new guard" of software. I didn't wind up working for a startup, but I did consider it for a while. There's something appealing about the idea of coming in to work every day wearing whatever you want, surrounded by a bunch of 20-somethings, who are all passionate about what they're doing. Contrast that to the classic corporate picture, where no one is having fun, and lots of people don't care about the end product. Maybe they don't care because the end product has been around for 30 years. Maybe they don't care because eventually the company policies and procedures have really beaten them down. Or maybe I'm stuck in the 1984 Apple commercial, who knows.
The point that I'm trying to make is that developers who are just out of college want their workplaces to be fun. They want to feel like they're in control of their own work, and they want to feel like they have a say in the future of the company. I'm not sure that anyone who works at a startup truly believes that their work is going to change the world in a meaningful and lasting manner. There are people out there who think that we should be "solving the hard problems because they're hard", and to them I say go for it! If solving a difficult problem is what it takes for you to feel like your work is worthwhile, then that's what you should be doing. Just don't hate on people who see things a bit differently. I happen to think that you should solve a problem because you want to, because it affects you, or because you care about those who it affects. That's the best way to get good quality software, and that's the best way to move forward.