Howtostopsucking

49

Transcript of Howtostopsucking

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 Winer1995

“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 ICQLISTSERV 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!