Let's assume, for sake of argument, that you decide it's okay to write it in ASP.NET MVC, and that I've decided to hand you the StackOverflow source code, page by page, so you can retype it verbatim. We'll also assume you type like me, at a cool 100 WPM (five characters per second[1]), and unlike me, make zero mistakes. StackOverflow's .cs, .sql, .css, .js, and .aspx files come to 96.5k. So merely typing back in source code that already exists will take you five hours if you make zero mistakes and deploy on the same platform they're doing.
Except, of course, you're not doing that. So even assuming that it took you a mere ten times longer to design, type out, and debug your own implementation, that already has you taking more than your whole weekend, even if you stayed up coding straight--and I don't know about you, but I am okay admitting I code considerably slower than ten times slower than I copy existing source code.
Well, okay, I hear you say. Not the whole thing. But I can do most of it.
Okay, so what's most? There's simply asking and responding to questions--that part's easy. Well, except you can't let people upvote their own answers, so you need to block that. And you need to make sure that you don't upvote or downvote a person too many times in a certain amount of time, to prevent spambots. Probably are also going to have to implement a spam filter, too, come to think of it, even in the basic design, and you also need to support user icons, and you're going to have to find a sanitizing HTML library you really trust and that interfaces well with Markdown (provided you do want that awesome editor they have, of course). You'll also need to purchase, design, or find widgets for all the controls, plus you need an administration interface so that moderators can moderate, and you'll need to implement that scaling karma thing so that you give users steadily increasing power to do things as they go.
But if you do all that, you will be done. Except, of course, for the full-text search, espcially the search-as-you-ask feature, and user bios, and having comments, and having a main page that shows you important questions but that bubbles down steadily. Plus you'll want bounties, and handling multiple OpenIDs per user, and having email notifications, and supporting JavaScript-smart tags, and having user-configurable badges (you are going to do user-configurable badges without forcing your user to learn PHP and write hooks, right?), the history of your karma, upvotes, and downvotes. And the whole thing has to scale really well, since it could be slashdotted at any moment.
And we haven't even touched things like supporting upgrades, internationalization, karma caps, CSS so it doesn't look like ass, and all the little things under the surface that no one ever sees, but that you need to run the site.
To be really blunt: anyone in this forum who honestly thinks they can do all that in a weekend is so ridiculously full of himself that I want him very far away from any project that I'm involved with.
Well from one of the recent podcasts it sounds like Jeff is set against doing internationalization. And Joel is showing admirable restraint in not strangling him.
We have documented evidence in the form of podcasts that it took a team of 3 talented developers about 6 months to build StackOverflow. If you're looking for an order of magnitude estimate for how long it would take to reproduce it, that's it.
How exactly are you planning to reduce an 18 man-month project down to a single weekend of your time?
More generally, why is this attitude so common among programmers? How, in the face of documented proof to the contrary could an intelligent person like the parent still consider a site of the complexity of StackOverflow to be a "weekend job"?
The boil it down to a cliché, copying what someone else has built is exactly the same problem as rewriting an existing application from scratch, without the benefit of being able to read the source code.
So, yeah, be wary of "hey, that looks easy!", but don't think things are impossible either.
Also, with something like SO - you can pretty much see the models, and how they interact. That's already giving you a lot.
"Shit's easy syndrome" http://steve-yegge.blogspot.com/2009_04_01_archive.html
The restrictions are along the "meta" parts (voting to indicate the quality of an answer), I think it is entirely sensible to restrict these actions to users who have built up a currency of trust within the SO community.
That being said, I think you are onto to something around the user experience. Perhaps an option shouldn't be shown to someone if they cannot perform it.
That would be really annoying, because you wouldn't know that these options exist, until you could use them (i.e. you're possibly confused and you don't know what the reward for collecting reputation is.)
Better grey out the things you aren't allowed to do yet, so you can see them and see that you're not there yet - preferably with an explanation of when you will be.
I forgot what the term for this is, but I think it's very often a good way to do it. Stable interface? Something like that.
PS: Don't forget to open source it.
http://code.google.com/p/hackerexchange/
I'm aware of the chinese solutions done in Django but after looking it over, I think I can do better.
I'll prolly write it in PHP too (gasp) so any n00b can basically rip it off and throw it unto shared hosting! ahh, gotta love opensource =)
Weekends plural? I thought this was only going to take 1?
Here's another, also in Django.
There's a download here: http://code.google.com/p/cnprog/issues/detail?id=28
but I don't think it is production-ready yet....