howtostopsuckingandbeawesomeinstead 120601013410-phpapp01

49

Upload: hugo-pinto

Post on 15-Jul-2015

185 views

Category:

Education


0 download

TRANSCRIPT

How to Stop Sucking and Be Awesome Instead

Jeff AtwoodCoding Horror, Stack Exchange, Stack Overflow

Q:

What does it mean when

something “Sucks”?

• This doesn't do what I need

• I can't figure out how to do what I need

• This is unnecessarily frustrating and

complex

• This breaks all the time

• It's so ugly I want to vomit

• It doesn't map to my understanding of the

universe

• I'm thinking about the tool, instead of my

work

And folks, let's be honest. Sturgeon

was an optimist. Way more than

90% of code is crap.

Al Viro

Q:

Why do we suck?

A:

Because we’re software,

too.

“The main reason we tend

to focus on the technical

rather than the human side

of the work is not because

it's more crucial, but

because it's easier to

do.”

The common thread in all

my failed projects is…

The First Rule of Programming:

It’s Always Your Fault.

codinghorror

1. Embrace the Suck

We make shitty software… with

bugs!

Dave Winer

1995

“Software is a process, it's never finished, it's

always evolving. That's its nature. We know

our software sucks. But it's shipping! Next

time we'll do better, but even then it will be

shitty. The only software that's perfect is one

you're dreaming about. Real software

crashes, loses data, is hard to learn and hard

to use. But it's a process. We'll make it less

shitty. Just watch!”

Version 1 Sucks, But Ship It Anyway

codinghorror

3 months in development

vs.

3 months of user feedback

• climbs faster

• turns faster

• better distance

visibility

• better side visibility

• hydraulic flight

controls

Boyd’s Law of Iteration:

speed of iteration always beats quality of

iteration

Where you are today doesn’t matter so

much, compared to where you’re going

tomorrow.

My goal is to suck less every year.

codinghorror

2. Do It In Public

One of my favorite business model

suggestions for [web] entrepreneurs is to find

an old UNIX command that hasn't yet been

implemented on the web, and fix that.

Marc Hedlund

talk, finger ICQ

LISTSERV DejaNews

ls Yahoo! directory

find, grep Google

rn Bloglines

pine Google Mail

mount Amazon S3

bash Yahoo! Pipes

wall Twitter

Blogger = public email messages (1999)

Instead of "Dear Bob, Check out this movie."

it's "Dear People I May or May Not Know

Who Are Interested in Film Noir, check out

this movie. If you like it, maybe we can be

friends."

Flickr = public photo sharing (2004)

"When we started the company, there were

dozens of other photosharing companies

such as Shutterfly, but on those sites there

was no such thing as a public photograph -- it

didn't even exist as a concept."

YouTube = public home videos (2005)

Bob Saget was on

to something.

Viewed 456 million

times… so far.

Twitter = public instant messaging (2006)

I don't think it's any coincidence that one of

the people responsible for Blogger is also

responsible for Twitter.

GitHub = public source control (2008)

“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.”

“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.”

Stack Overflow = public learning (2008)

• Fun-size units of Q&A “work”

• Document how much we suck, so that

others might learn from it!

• Leave breadcrumb trails of our

awesomeness

Maximize the value of your keystrokes

If nobody

knows you did

{x}, did you get

all the benefits

of doing {x}?

The onus of “interestingness”

the freedom to totally suck in private

vs.

attempting to be awesome in public

If you you don't have any marketable skills, learn

some. It's the future. We have Khan Academy and

Wikipedia and Codecademy and almost the entire

world's collective knowledge at your fingertips.

Use it.

Carl Lange

In the information age, the barriers

just aren't there. The barriers are self

imposed.

John Carmack

“If you want to set off and go develop some

grand new thing, you don't need millions of

dollars of capitalization. You need enough

pizza and Diet Coke to stick in your

refrigerator, a cheap PC to work on, and the

dedication to go through with it. We slept

on floors. We waded across rivers.”

3. Pick Stuff That Matters

So what?

everyone

The world just isn’t that into you. Unless what

you're sharing …

• solves their problem

• provides useful information

• entertains them

• makes them feel like they rule

… why would they care?

Every time you share something – ask

yourself “so what?”

If you can't answer convincingly, reformulate

and try again.

If your thing in public isn’t awesome enough

(or sucks) that’s OK.

People won’t go out of their way to mock you.

They’ll just ignore it.

(people do remember successes, though)

This is The

Internet.

Let your freak flag

fly.

Find your

audience.

Nobody should be

more excited

about your

mission than you.

How do I know if this matters?

What cool thing did you do for someone else

today?

(psst… Stack Overflow isn’t really a site

about programming, it’s where we trick peers

into reading, writing, experimenting, and

learning with each other.)

“It's better to be safe than sorry” is

such crap. You know what's better

than being safe? Being AWESOME.

codinghorror

#atlassiansummit

1. Embrace the Suck

2. Do It In Public

3. Pick Stuff That Matters

Thank you!