The DailyWTF thrive on the stupid mistakes developers make. It is easy to look at a product and think how stupid the owner must be to neglect some obvious beneficial improvements. Stackoverflow.com was a popular one. A lot of people thought a lot of things they were doing were stupid and that they had obvious solutions that would work. But in reality, the stackoverflow team is pretty competent. If you see them taking a route, you pretty much know that they have done enough research to find it to be the best solution.
When I look at failed projects on kickstarter, I see people are mad and think why the owner didn't take some obvious steps to get it to launch. In reality these obvious steps are not necessarily a solution.
Some times the obvious test is not easy. I experienced it first hand when I started a small project called Shotsrv.com. I couldn't understand why so many website where getting the simple step of getting a website screen shot wrong. The company I used to worked for was using some pretty crappy service that had to be run multiple times before it got it right. Everyone new to the project would read the code and think "Why the hell are they calling the same API with the same parameters 5 times?"
We didn't do it because we were stupid and thought five would be a nice number, as opposed to 6 (Eww!!). We did it because after rigorous trial and error, 5 was the number where we had a guaranteed result. It was our way to cope with the short comings of the 3rd party api.
I went home and created my own service. I tested locally and it worked. I uploaded it on a live server and it worked. I tested it for over a month and it seemed to work just fine. When I posted it on a forum, every one using it experienced different problems. Each was challenging enough to almost make me give up entirely. Turns out the competition was doing things a certain way because the alternative would be hard and costly.
I still tuned my tool for months and polished it as much as I could. I used it on one of my own website to take 10,000 screenshots and the unexpected happened. Instantly I filled up my 30GB of storage.
Every time I fixed one problem a new one emerged. Something that I had not anticipated. Someone might think I'm getting it wrong because I am stupid. I can't say much about that because a brain cannot compute its own stupidity. But according to others I think I am alright.
Recently, a friend and I were discussing the options for getting paid as a freelancer. Most people still operate using checks and money orders. It seems insane in this day and age. People must be pretty stupid for not create a service that makes it easy for freelancers to receive money from their clients.
The obvious solution is Using Stripe. You create a hub, where freelancer log in, they generate their invoice and send the link to the client. The client clicks on the link, sees the invoice and amount to pay. They pay using stripe, we the hub host take our cut, then pay the freelancer. Just like that the problem is solved.
But turns out there is a good reason why there aren't a lot of people doing this. In order to pay the freelancer, we would have to make sure the freelancer has a stripe account, which is too much to ask (compared to just getting a check). The other option is to transfer the money to the freelancer's account. Easy. Only all banks charge a fee for transferring money.
- Stripe cost: 2.9% + 30 cents as I am writing this.
- Bank transfer fees range from $12 to $45 per transfer.
If you add up the cost of using stripe and the cost of transferring, you will be paying the freelancer out of your own pocket to have any advantage over using checks and money order.
What at first seemed like an obvious solution is not so profitable after all.
Sometimes, the reason people don't use the obvious choice is because there are caveat that are not as obvious. When you see a project fail on kickstarter, its not because they were stupid and used PHP as their back end framework. If you see a start up fail its not simply because they didn't use AWS. The problem is never as easy as it seems. Simply changing the encoding might fix one issue, but it might introduce a plethora of other problems that are not as easy to debug.
Things that may look wrong to you are sometimes carefully calculated to arrive to. We are not stupid, we just arrived to the horrible solution.