Yesterday StackOverflow announced that they’d accepted $6 million in venture capital funding. Joel Spolsky held a quick public chat to discuss it, and there were some interesting questions from the audience. I’m going to paraphrase some of the questions and give my own answers.
Q: Now that StackOverflow is going to be big, will they need to dump SQL Server for NoSQL?
If you were going to write a list of things you should never do to SQL Server that needs to perform fast, StackOverflow would check a lot of the boxes:
- Using LINQ and Full Text Search heavily for queries
- Storing data on SATA drives
- Putting both data and logs on the same drive (not to mention the full text catalogs)
- Using one server, no fancy replication for load balancing
And SQL Server handles the load just fine.
Q: What? I thought M$$QL was the suxx0rz?
Two things make all the difference. First, it’s not really all that much load. StackOverflow is the smallest SQL Server database I work with by an order of magnitude. Most of my SQL DBA readers manage much bigger databases on a daily basis and yet consider themselves to be junior DBAs. There’s a disconnect between what programmers see as big data versus what enterprises see as big data. For example, in the last two weekends, I’ve done performance tuning gigs for two separate companies that had data more than 20x the size of StackOverflow’s, yet didn’t have a full time database administrator.
Second, the staff really knows what they’re doing. They know you’re supposed to cache frequently reused data in the app tier, for example – sounds obvious, but it’s trickier than it sounds. If you’re really good – and I don’t mean “I’ve got a blog” good – you can build amazing stuff with just about any tool. You could build something of StackOverflow’s size on any database platform out there.
If you think the reason your code can’t scale is because of the language or database, you’re probably doin’ it wrong.
Q: How much of that $6 million did you get?
None. I’ve never been paid by StackOverflow. If I was Joel and Jeff, I’d give money/stock/cocaine to the community moderators long before I gave it to Brent Ozar. My work is tiny compared to the moderators, and I’m glad (although a little sad) that they recently revamped the StackOverflow About page to reflect that.
That’s right – I get paid in pixels.
Q: Awesome, here’s a picture of bacon. Now I need your help with…
No. I help with DBA work at StackOverflow for the same reason you answer questions there. When you post an answer, add tags, or help clarify questions, your reputation score goes up. You don’t make money on directly – it’s just fun doing it.
But as your score gets higher, you can use that for things in ways that don’t seem immediately obvious to you yet. I touched on this in my recent Rock Stars, Normal People, and You post. Jon Skeet is an extreme example – he can probably walk into any geek gathering, show his ID, and people will start buying him drinks. If he posted a tweet saying he was looking for work, you’d better not hope you have anything pending at the printer, because an army of programmers will be printing up Jon’s resume immediately to run into their boss’s office and say, “WE GOTTA HIRE THIS GUY!”
Your StackOverflow score is your living resume. It’s like whuffie in Down & Out in the Magic Kingdom – it’s a currency that you can use to get things. When you get to a high enough score, you can trade it for things – things like consulting gigs. Companies will look at something like StackOverflow, look up the C# tag, and find the highest rated people. They’ll review your answers, see the high votes from your peers, and then check your availability for short-term consulting – perhaps even just a single hour.
Not every question can be asked in public, and not every answer can be given without spending time in the client’s systems. Most importantly, those questions and answers are where the most money changes hands.
Q: But your StackOverflow score sucks.
Yep, I’m part of the old guard. I’m 36. My generation had/has a different way of measuring reputation, and frankly, it sucks. We gauge reputations based on personal relationships with people we’ve met, usually in person but sometimes through social networks. We’re limited to a smaller group of experts on any given topic. When I need help with something, I have a fairly limited number of trusted people I can call on.
I work (a little) on StackOverflow for free because it’s the old-school equivalent of a reputation score. People have come to me and said, “I hear you’re the database guy for StackOverflow – what would it take to get you to help me with ___?” That’s why I’m quite happy to take my pay in pixels, and why I know that your high StackOverflow or ServerFault reputation score will be worth money down the road.
How much would you pay for one hour of Jon Skeet’s time?
What if you had a tough C# question and you couldn’t show your code in public? What if you wanted to listen to him do training presentations about what he knows? Would you pay real money for that? I know that you would, because people are paying to attend SQLCruise with me and Tim Ford, and people lined up to pay $99 to get into StackOverflow DevDays. What if you had a really high StackOverflow/ServerFault reputation for a given tag, and you organized an event like SQLCruise or DevDays for your own tech interest?
Reputation is everything. This is why I get so excited about StackOverflow’s reputation scores – conventional forums failed not just because they’re painful to navigate, but because they didn’t measure things. When you measure reputation, you enable all kinds of ways to make money.