Top Banner
152

Building Social Software for the Anti-Social: Part I

Jan 15, 2015

Download

Technology

codinghorror

Five scary rules for building social software, based on our experience at Stack Overflow and Stack Exchange.
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Building Social Software for the Anti-Social: Part I
Page 2: Building Social Software for the Anti-Social: Part I
Page 3: Building Social Software for the Anti-Social: Part I
Page 4: Building Social Software for the Anti-Social: Part I
Page 5: Building Social Software for the Anti-Social: Part I

Geoff

Jeff NYC HQ

JarrodNick

Kevin

Robert

Kyle

Rebecca

Page 6: Building Social Software for the Anti-Social: Part I

Ben

Marc

Sam

Page 7: Building Social Software for the Anti-Social: Part I
Page 8: Building Social Software for the Anti-Social: Part I
Page 9: Building Social Software for the Anti-Social: Part I

“… designing software for group-as-user is a problem that can't be attacked in the same way as designing a word processor or a graphics tool.”

Page 10: Building Social Software for the Anti-Social: Part I

know your audience

Page 11: Building Social Software for the Anti-Social: Part I
Page 12: Building Social Software for the Anti-Social: Part I
Page 13: Building Social Software for the Anti-Social: Part I
Page 14: Building Social Software for the Anti-Social: Part I

Q:

How do you tell an introverted computer programmer from an extroverted computer programmer?

Page 15: Building Social Software for the Anti-Social: Part I

A:

An extroverted computer programmer looks at your shoes when he talks to you.

Page 16: Building Social Software for the Anti-Social: Part I

“In the early years of programming, a program was regarded as the private property of the programmer. One would no more think of reading a colleague's program unbidden than of picking up a love letter and reading it.”

Page 17: Building Social Software for the Anti-Social: Part I

“This is essentially what a program was, a love letter from the programmer to the hardware, full of the intimate details known only to partners in an affair.”

Page 18: Building Social Software for the Anti-Social: Part I
Page 19: Building Social Software for the Anti-Social: Part I

REM The IBM Personal Computer DonkeyREM Version 1.10 (C)Copyright IBM Corp 1981, 1982REM Licensed Material - Program Property of IBMDEF SEG : POKE 106, 0SAMPLES$ = "NO"DIM CAR%(900)GOTO 1010SAMPLES$ = "YES"1010 KEY OFF: SCREEN 0, 1: COLOR 15, 0, 0: WIDTH 40: CLS : LOCATE

5, 19: PRINT "IBM"LOCATE 7, 12, 0: PRINT "Personal Computer"COLOR 10, 0: LOCATE 10, 9, 0: PRINT CHR$(213) + STRING$(21, 205)

+ CHR$(184)LOCATE 11, 9, 0: PRINT CHR$(179) + " DONKEY " + CHR$(179)LOCATE 12, 9, 0: PRINT CHR$(179) + STRING$(21, 32) + CHR$(179)LOCATE 13, 9, 0: PRINT CHR$(179) + " Version 1.10 " + CHR$(179)LOCATE 14, 9, 0: PRINT CHR$(212) + STRING$(21, 205) + CHR$(190)COLOR 15, 0: LOCATE 17, 4, 0: PRINT "(C) Copyright IBM Corp 1981,

1982"COLOR 14, 0: LOCATE 23, 7, 0: PRINT "Press space bar to continue“1100 IF INKEY$ <> "" THEN GOTO 11001110 CMD$ = INKEY$IF CMD$ = "" THEN GOTO 1110

Page 20: Building Social Software for the Anti-Social: Part I

This series of books is affectionately dedicatedto the Type 650 computer once installed atCase Institute of Technology,in remembrance of many pleasant evenings.

Donald Knuthdedication toThe Art of Computer Programming1968

Page 21: Building Social Software for the Anti-Social: Part I
Page 22: Building Social Software for the Anti-Social: Part I
Page 23: Building Social Software for the Anti-Social: Part I

know your topic

Page 24: Building Social Software for the Anti-Social: Part I

One of the great pioneers of computer and online gaming, Dani Berry died in 1998. Some of her aphorisms are still frequently quoted by game developers, including”No one ever said on their deathbed, ‘Gee, I wish I had spent more time alone with my computer.’”

Page 25: Building Social Software for the Anti-Social: Part I
Page 26: Building Social Software for the Anti-Social: Part I
Page 27: Building Social Software for the Anti-Social: Part I

Programming used to be an intensely private experience.

Programming is now a public, social activity

Like it or not.

Page 28: Building Social Software for the Anti-Social: Part I
Page 29: Building Social Software for the Anti-Social: Part I
Page 30: Building Social Software for the Anti-Social: Part I

SourceForge is about projects. GitHub is about people... A world of programmers forking, hacking and experimenting. There is merging, but only if people agree to do so, by other channels... GitHub gives me my own place to play. It lets me share my code the way I share photos on Flickr, the same way I share bookmarks on del.icio.us. Here’s something I found useful, for what it’s worth...

Page 31: Building Social Software for the Anti-Social: Part I

Moreover, I’m sharing my code, for what it’s worth to me to share my code... I am sharing my code. I am not launching an open source project. I am not beginning a search for like minded developers to avoid duplication of efforts. I am not showing up at someone else’s door hat in hand, asking for commit access. I am not looking to do battle with Brook’s Law at the outset of my brainstorm.

Page 32: Building Social Software for the Anti-Social: Part I

Social software for the anti-social (programmers)

Page 33: Building Social Software for the Anti-Social: Part I
Page 34: Building Social Software for the Anti-Social: Part I
Page 35: Building Social Software for the Anti-Social: Part I
Page 36: Building Social Software for the Anti-Social: Part I
Page 37: Building Social Software for the Anti-Social: Part I
Page 38: Building Social Software for the Anti-Social: Part I
Page 39: Building Social Software for the Anti-Social: Part I
Page 40: Building Social Software for the Anti-Social: Part I

understand people’s

motivations

Page 41: Building Social Software for the Anti-Social: Part I

Modern programming may be a social activity, but programmers are still introverted and anti-social.*

What motivates us to work with confusing, complicated, erratic people instead of simple computers?*and that’s how we like it!

Page 42: Building Social Software for the Anti-Social: Part I

A shared passion:We love programming.

Page 43: Building Social Software for the Anti-Social: Part I

A common enemy:We hate Bad Code.

Page 44: Building Social Software for the Anti-Social: Part I

•I don’t have to agree with you•I don’t have to be “friends” with you•I don’t even have to like you

… but we have a shared passion, a shared enemy, and we can learn from each other.

Page 45: Building Social Software for the Anti-Social: Part I

The currency of Stack Overflow is information.

Programmers map social relationships on top of that.

Do you really need software to tell you who your friends are?

Page 46: Building Social Software for the Anti-Social: Part I
Page 47: Building Social Software for the Anti-Social: Part I

Workvs.

work

Page 48: Building Social Software for the Anti-Social: Part I

Work is when your boss tells you to do something, you do it, and you get paid.

work is motivated by inherent interest and generally unpaid.

Page 49: Building Social Software for the Anti-Social: Part I
Page 50: Building Social Software for the Anti-Social: Part I

Usability testing techniques developed over the past 25 years for Work no longer apply for work.We shouldn't be asking, “Can you complete the task?” but rather “Are you motivated to do it in the first place?”

Page 51: Building Social Software for the Anti-Social: Part I
Page 52: Building Social Software for the Anti-Social: Part I
Page 53: Building Social Software for the Anti-Social: Part I

Little-w work:

Tiny slices of frictionless effort

Amortized across the entire community

Page 54: Building Social Software for the Anti-Social: Part I

“If you take Wikipedia as a kind of unit, all of Wikipedia, the whole project --every page, every edit, every talk page, every line of code, in every language that Wikipedia exists in -- that represents something like the cumulation of 100 million hours of human thought.”

Page 55: Building Social Software for the Anti-Social: Part I

•Fast, fast, fast•No registration required•Simple Markdown formatting•Edit anything, anytime (even anon!)Every question has an input box at the bottom, inviting you to participate and share what you know

Page 56: Building Social Software for the Anti-Social: Part I
Page 57: Building Social Software for the Anti-Social: Part I
Page 58: Building Social Software for the Anti-Social: Part I

“I'm doing a (free) operating system (just a hobby) [...] I'd like to know what features most people would want.”

“Humor me. Go there and add a little article. It will take all of five or ten minutes.”

“In the past, we could do little things for love, but big things required money. Now, we can do big things for love.”

Page 59: Building Social Software for the Anti-Social: Part I

1. Radically lower the bar for participation

2. Trusting (some of) your users

3. Life is the world’s biggest MMORPG

4. Bad stuff happens5. Love trumps money

Page 60: Building Social Software for the Anti-Social: Part I

Scary Idea #1

Radically lower the bar for participation

No registration.None. Nada. Zilch.

Page 61: Building Social Software for the Anti-Social: Part I
Page 62: Building Social Software for the Anti-Social: Part I

The Tragedy of the Commons

Page 63: Building Social Software for the Anti-Social: Part I

everyone’s

attention

Page 64: Building Social Software for the Anti-Social: Part I

Views 5,348,838Comments 48,710

Fred Rescues the Neighborhood Squirrels

Page 65: Building Social Software for the Anti-Social: Part I

Views45,866Comments153

Optical Effects of Special Relativity

Page 66: Building Social Software for the Anti-Social: Part I

Scary Idea #2

Trusting (some of) your users

What if everyone could edit everything?

Page 67: Building Social Software for the Anti-Social: Part I
Page 68: Building Social Software for the Anti-Social: Part I
Page 69: Building Social Software for the Anti-Social: Part I

OilThe value of the information is more important than the individual authors.

WaterInformation from credible authors is more reliable.

Page 70: Building Social Software for the Anti-Social: Part I
Page 71: Building Social Software for the Anti-Social: Part I
Page 72: Building Social Software for the Anti-Social: Part I
Page 73: Building Social Software for the Anti-Social: Part I
Page 74: Building Social Software for the Anti-Social: Part I
Page 75: Building Social Software for the Anti-Social: Part I
Page 76: Building Social Software for the Anti-Social: Part I
Page 77: Building Social Software for the Anti-Social: Part I
Page 78: Building Social Software for the Anti-Social: Part I
Page 79: Building Social Software for the Anti-Social: Part I
Page 80: Building Social Software for the Anti-Social: Part I
Page 81: Building Social Software for the Anti-Social: Part I
Page 82: Building Social Software for the Anti-Social: Part I
Page 83: Building Social Software for the Anti-Social: Part I

Channel Rules 1. No whining 2. No colours or other formatting, especially in

automated scripts.3. Do not paste code (or anything) on the channel. 4. If you feel you have been unfairly treated, abused or

just aren't getting your money's worth ($0), see Rule #1.

Page 84: Building Social Software for the Anti-Social: Part I
Page 85: Building Social Software for the Anti-Social: Part I
Page 86: Building Social Software for the Anti-Social: Part I
Page 87: Building Social Software for the Anti-Social: Part I
Page 88: Building Social Software for the Anti-Social: Part I
Page 89: Building Social Software for the Anti-Social: Part I

Scary Idea #3

Life is the world’s biggest MMORPG

What if you embraced the game-like aspects of your profession?

Page 90: Building Social Software for the Anti-Social: Part I
Page 91: Building Social Software for the Anti-Social: Part I
Page 92: Building Social Software for the Anti-Social: Part I
Page 93: Building Social Software for the Anti-Social: Part I
Page 94: Building Social Software for the Anti-Social: Part I
Page 95: Building Social Software for the Anti-Social: Part I
Page 96: Building Social Software for the Anti-Social: Part I
Page 97: Building Social Software for the Anti-Social: Part I
Page 98: Building Social Software for the Anti-Social: Part I

Slashdot

Page 99: Building Social Software for the Anti-Social: Part I
Page 100: Building Social Software for the Anti-Social: Part I

How Moderation Happens

Page 101: Building Social Software for the Anti-Social: Part I

“A soldier will fight long and hard for a bit of colored ribbon.”

Page 102: Building Social Software for the Anti-Social: Part I

“Even though points on Consumating were redeemable for absolutely nothing, not even a gold star, our members had an unquenchable desire for them.”

Page 103: Building Social Software for the Anti-Social: Part I
Page 104: Building Social Software for the Anti-Social: Part I
Page 105: Building Social Software for the Anti-Social: Part I
Page 106: Building Social Software for the Anti-Social: Part I
Page 107: Building Social Software for the Anti-Social: Part I
Page 108: Building Social Software for the Anti-Social: Part I

Scary Idea #4

Bad stuff happens

It’s OK for bad things to happen as long as the community has ways of dealing with them.

Page 109: Building Social Software for the Anti-Social: Part I
Page 110: Building Social Software for the Anti-Social: Part I

“So, Lone Starr, now you see that evil will always triumph, because good is dumb.”

Page 111: Building Social Software for the Anti-Social: Part I

Don’t be dumb.

Page 112: Building Social Software for the Anti-Social: Part I
Page 113: Building Social Software for the Anti-Social: Part I
Page 114: Building Social Software for the Anti-Social: Part I
Page 115: Building Social Software for the Anti-Social: Part I

3138 Edits 1574 UsersAve: 1.99

Page 116: Building Social Software for the Anti-Social: Part I
Page 117: Building Social Software for the Anti-Social: Part I
Page 118: Building Social Software for the Anti-Social: Part I
Page 119: Building Social Software for the Anti-Social: Part I
Page 120: Building Social Software for the Anti-Social: Part I
Page 121: Building Social Software for the Anti-Social: Part I

Scary Idea #4

Love Trumps Money

Even the most staunch capitalists will do things for love that they would never do for money.

Page 122: Building Social Software for the Anti-Social: Part I
Page 123: Building Social Software for the Anti-Social: Part I
Page 124: Building Social Software for the Anti-Social: Part I
Page 125: Building Social Software for the Anti-Social: Part I
Page 126: Building Social Software for the Anti-Social: Part I
Page 127: Building Social Software for the Anti-Social: Part I
Page 128: Building Social Software for the Anti-Social: Part I

Because the community is engaging, gives you new and different problems to solve, your help is appreciated and no one can force you to do something that you don't want to (as long as you don't want to troll or set things on fire) and you don't have the stress of having to answer correctly or you'll lose your food (being fired). Lack of having to answer to a clueless PHB is just a plus.

In short: You are here for intellectual leisure/engagement/fun, you are at work to get money so you can eat every day and sleep comfortably (consumerism aside).

Page 129: Building Social Software for the Anti-Social: Part I

“I'm doing a (free) operating system (just a hobby) [...] I'd like to know what features most people would want.”

“Humor me. Go there and add a little article. It will take all of five or ten minutes.”

Wikipedia

Linux

Page 130: Building Social Software for the Anti-Social: Part I

1. Radically lower the bar for participation

2. Trusting (some of) your users

3. Life is the world’s biggest MMORPG

4. Bad stuff happens5. Love trumps money

Page 131: Building Social Software for the Anti-Social: Part I

.. it’s a trap!

Page 132: Building Social Software for the Anti-Social: Part I
Page 133: Building Social Software for the Anti-Social: Part I

I live in US – skycbc5405

Can you get a GTX 480? You can get them brand new in the UK now for like £200-£220 – Atomfix

What kind of resolution do you play on? That would help us pick out the right GPU for you? – tryagainplss

Page 134: Building Social Software for the Anti-Social: Part I
Page 135: Building Social Software for the Anti-Social: Part I

The other thing I wanted was that they be really literate in whatever language they write to other humans. I want people who can write, because we spend a lot of time writing to each other. We’re writing email or documentation. We’re writing plans. We’re writing specifications. I want to know the people on my team are capable of doing that, and that turns out to be a very difficult skill. I would actually rather see people start as English majors than as math majors to get into programming.

-- Douglas Crockford

Page 136: Building Social Software for the Anti-Social: Part I

Another is Elements of Style, which isn’t even a programming book. You should read it for two reasons. The first is that a large part of every software engineer’s job is writing prose. If you can’t write precise, coherent, readable specs, nobody is going to be able to use your stuff. So anything that improves your prose style is good. The second reason is that most of the ideas in that book are also applicable to programs.

-- Joshua Bloch

Page 137: Building Social Software for the Anti-Social: Part I
Page 138: Building Social Software for the Anti-Social: Part I

I heard about a computer science department where in the tutor’s office they had a stuffed animal and the rule was that you had to explain your problem to the stuffed animal before you could bother the tutor. “Ok, Mister Bear, here’s the thing I’m working on and here’s my approach – aha! There it is.”

Page 139: Building Social Software for the Anti-Social: Part I
Page 140: Building Social Software for the Anti-Social: Part I

I’ve occasionally been asked to advise universities on syllabus subjects for computer science courses. And I say “Well, turn ‘em out being able to write and argue cogently.” Most graduates who come out, they’ve got degrees in computer science, but writing’s not their strong point.

It’s very difficult to teach [writing] because it’s very individual. Somebody’s got to take your text and a red pen and explain to you what you did wrong. And that’s very time consuming.

-- Joe Armstrong

Page 141: Building Social Software for the Anti-Social: Part I

Everyone should write a lot – whether it’s a blog, a book, SO answers, emails or whatever. Write, and take some care over it. Clarifying your communication helps you to clarify your own internal thought processes, in my experience.It’s amazing how much you find you don’t know when you try to explain something in detail to someone else. It can start a whole new process of discovery.

-- Jon Skeet

Page 142: Building Social Software for the Anti-Social: Part I

where do we go from here?

Page 143: Building Social Software for the Anti-Social: Part I
Page 144: Building Social Software for the Anti-Social: Part I
Page 145: Building Social Software for the Anti-Social: Part I
Page 146: Building Social Software for the Anti-Social: Part I
Page 147: Building Social Software for the Anti-Social: Part I
Page 148: Building Social Software for the Anti-Social: Part I
Page 149: Building Social Software for the Anti-Social: Part I
Page 150: Building Social Software for the Anti-Social: Part I
Page 151: Building Social Software for the Anti-Social: Part I
Page 152: Building Social Software for the Anti-Social: Part I