I agree. Code is always trivial until you start actually writing it. Then all those little pieces that you magically glossed over in your imagination start rearing their ugly head. All of a sudden your weekend is spent trying to figure out why you can’t connect to your database only to realize that you forgot to open a firewall port somewhere.
I am just as guilty as anyone of saying “Oh man, I could write that in a weekend”. Enough experience has taught me that I am dead wrong most of the time.
Those commenters are exhibiting a very common programmer flaw. Most programmers don’t realize that getting code 90% functional is only 10% of the work.
It’s very easy to bang out a mostly functional body of code. That’s called a prototype (or maybe alpha/beta if it’s really good). And it’s nowhere near production level code.
The real work comes after things are mostly functional: robust error handling, dealing with edge conditions, documentation, and a solid and streamlined user experience. This is the area where so many programmers and projects just completely drop the ball.
I believe this is why most open source projects will always be second class citizens to their closed source counterparts in terms of user base. When there’s no money on the line, the user experience is often forgotten because the programmers are too busy having fun writing code.
Nice post! I wonder if StackOverflow clones could become the next standard demo app for frameworks, like the ubiquitous blog app has been for some years, and the address book app was before that.
Jeff says lots of stuff I don’t buy (or quotes it…no .NET developer should ever ever talk about another framework being “a horrible pain in the ass to use.”) But he’s got the thing that matters most right, despite our “religious” differences: user experience is KING. It is 10x more important than whether you used .NET or PHP or RoR, whether you wrote procedural code or OOP, whether you built unit tests or didn’t, .
User experience will frequently determine the ultimate success of your work, and very few people will much care about anything else.
Agreed in principle, though your list of ‘polish’ is a bit contrived. If I wanted an open-source version of stackoverflow, I wouldn’t care about ads. I wouldn’t care about the podcast. I wouldn’t care about conferences. These things are pointless frippery even for the real site, they certainly wouldn’t need to be replicated in an open-source clone.
If being a programmer was just about writing code then anybody could be a programmer. Writing code is easy. Writing code cleanly, efficiently so it’s easy to maintain, now that takes some skill.
Actually, an open source alternative to Stack Overflow has existed for years. Go check out http://www.perlmonks.org. Only difference is the tight focus on a single programming language.
Great article. Love the note about Twitter. Most of us probably could implement all of twitter in a weekend. However, it wouldn’t scale to millions of users, but that’s probably not important, because I doubt any twitter clone would reach critical mass.
Also, I think that specifically because you are three programmers that have been working on it for a year, proves that a small open source team could definitely create a clone in short time. But really it doesn’t matter that there are clones out there. So long as you can convince people that your product is worth the money you are charging, it doesn’t matter that there are alternatives. Sure the alternatives, whether free or just cheaper will cut into your market share. But that’s true with any business.