Said no one ever.
Seriously people. If I see one more NodeJS+MongoDB anything, I will find you and shake you until you understand why that is a bad idea.
You have to be a fairly intelligent person to develop software. Keeping multiple things in your mind, remembering algorithms and best practices, and being able to think at a high conceptual level are some of the biggest barriers to entry to our field. Developing software is a very difficult job, which is why it amazes me when a developer commits the cardinal sin of software.
It’s easy to do. Everyone does it. Even Hollywood:
When you hear that your coworker is building the next great NodeJS static site generator, you will hear the voice in the back of you head say something is wrong but you may not know exactly what it is. If Kevin Costner is the posterboy, you know something is wrong.
Does your code solve a real problem?
Think about it for a second. Out of the seven billion people alive today, is there one person other than you who says, “Yes, I need another CMS to choose from.” If you can find that person, let me know because I don’t believe you.
When I decided that I wanted a website, I didn’t go off the deep end and try to write my own CMS. Writing a good CMS is hard work, and I have something more important I want to do with my time: I want to share my thoughts with the world. Time is a limited resource, and I wanted to minimize the amount of time I had to spent to share my first blog. So I did the logical thing by choosing WordPress, one of the most popular pieces of software in the entire world.
Millions of other people have been testing WordPress for years. I didn’t have to do a single thing to make sure that it worked. All I had to do was install, set it up, and start writing. And it was great.
Sure, I could have written my own CMS in Node with a service-oriented API. I didn’t though because that was not my problem.
Software developers jump too quickly into “I can build this piece of software.” They miss “does this piece of software solve a real problem that real people have?” Paul Graham hit the nail on the head perfectly:
Why do so many founders build things no one wants? Because they begin by trying to think of startup ideas. That m.o. is doubly dangerous: it doesn’t merely yield few good ideas; it yields bad ideas that sound plausible enough to fool you into working on them.
For example, a social network for pet owners. It doesn’t sound obviously mistaken. Millions of people have pets. Often they care a lot about their pets and spend a lot of money on them. Surely many of these people would like a site where they could talk to other pet owners.
The danger of an idea like this is that when you run it by your friends with pets, they don’t say “I would never use this.” They say “Yeah, maybe I could see using something like that.” Even when the startup launches, it will sound plausible to a lot of people. They don’t want to use it themselves, at least not right now, but they could imagine other people wanting it. Sum that reaction across the entire population, and you have zero users.
Listen to PG people. Stop building things that no one wants, and start building things that solve actual problems.