Earlier this week I read a neat post by Sarah Mei called Why You Should Never Use MongoDB. Usually I would skip a blog post with that title, but for some reason I stuck with it, and I’m glad I did.
I usually don’t like titles like “why you should never use MongoDB” because the author usually means “why you shouldn’t use MongoDB if you are me and you are using it in the specific way I am using it and you are in the specific business that I work for.” The author writes the snappy title because it looks good on the Hacker News front page.
This isn’t that kind of blog post, though, and she makes a compelling argument that almost earns the title.
The title should be “Why You Should Never Use MongoDB”. I’m being pedantic, but I think the emphasis makes the point clearer. The post is making an assumption about you, and that assumption is this: you are not as smart as she is and if you are not as smart as she is, how can you hope to avoid the problem she is describing? I am not as smart as she is, so I’m going to learn from her mistake.
I’m an inexperienced software developer; a n00b. I haven’t watched a large software system go from infancy to smouldering ruins, nor have I watched design decisions explode in my face nine months after making them. And how could I have? I’m an undergraduate student and there aren’t enough months of summer jobs to string together to create those experiences.
Since I don’t have many of these experiences of my own, I’m forced to use the experiences of others. Let’s call these prosthetic experiences. Brave, humble, smart folks like Sarah Mei, who can talk about the projects they’ve seen crash and burn, are a boon; prosthetic experiences can help me think about design tradeoffs in ways I wouldn’t otherwise be able to without dealing with those problems myself. They help me develop paranoia in the right places. Hopefully, it’ll help me avoid boring mistakes and make more interesting messes instead.
It’s not fun to write about your mistakes. But I like it when you do.