Two Solitudes

Embed Size (px)

Citation preview

Two Solitudes

Greg Wilson

Two Solitudes

Greg Wilson

Not as long ago as you might think

You are free to:

Copy, share, adapt, or re-mix;

Photograph, film, or broadcast;

Blog, live-blog, or post video of;

This presentation. Provided that:

You attribute the work to its author and respect the rights and licenses associated with its components.

Once Upon a Time...

Once Upon a Time...

1992:Get a PhD

Once Upon a Time...

1992:Get a PhD

1994:How can I teach software engineering when I've never shipped product?

Once Upon a Time...

1992:Get a PhD

1994:How can I teach software engineering when I've never shipped product?

So get a job at IBM and learn

Once Upon a Time...

1995:Realize that IBM ships softwaredespite its process

Once Upon a Time...

1995:Realize that IBM ships softwaredespite its process

We do things this way becausethat's the way we do things

Once Upon a Time...

1995:Realize that IBM ships softwaredespite its process

We do things this way becausethat's the way we do things

Kind of embarrassing, since I'd been telling scientistshow much they could learn from real programmers...

Once Upon a Time...

1995:So join a startup

Once Upon a Time...

1995:So join a startupA lean team of rockstars

Once Upon a Time...

1995:So join a startupA lean team of rockstars

Individually, we were pretty smart

Once Upon a Time...

1995:So join a startupA lean team of rockstars

Individually, we were pretty smart

Together, our IQs cancelled out

Once Upon a Time...

1995:So join a startupA lean team of rockstars

Individually, we were pretty smart

Together, our IQs cancelled out

Didn't learn anything aboutsoftware engineering

Meanwhile...

Meanwhile...

1986:Start programming for physicists onfirst-generation parallel computers

Meanwhile...

1986:Start programming for physicists onfirst-generation parallel computers

1996:What Should Computer ScientistsTeach to Physical Scientists andEngineers? (IEEE CS&E)

Meanwhile...

1986:Start programming for physicists onfirst-generation parallel computers

1996:What Should Computer ScientistsTeach to Physical Scientists andEngineers? (IEEE CS&E)

1997:OK, show us

Meanwhile...

1986:Start programming for physicists onfirst-generation parallel computers

1996:What Should Computer ScientistsTeach to Physical Scientists andEngineers? (IEEE CS&E)

1997:OK, show us

1998:First Software Carpentry courseat Los Alamos National Laboratory

What I Learned

The problem with teaching scientists isthey know what evidence looks like

What I Learned

The problem with teaching scientists isthey know what evidence looks like

The problem with Computer Science isI didn't know of any

Blind Alleys

Blind Alleys

But Then

But Then

Hey, we actually know stuff about things!

And Also

And Also

Hey, some people actually know how to do this!

So, In 2002...

So, In 2002...

What I knew about building software, I'd learned on the job

So, In 2002...

What I knew about building software, I'd learned on the job

Most of my colleagues didn't know that there had ever been more than half a dozen empirical studies of real software development

So, In 2002...

Hands up if you think this has changedin the last ten years...

What I knew about building software, I'd learned on the job

Most of my colleagues didn't know that there had ever been more than half a dozen empirical studies of real software development

Computer Science Isn't

Computer Science Isn't

How many experiments did you do as an undergraduate?

Computer Science Isn't

How many experiments did you do as an undergraduate?

How much experimental data did you analyze?

Computer Science Isn't

How many experiments did you do as an undergraduate?

How much experimental data did you analyze?

How many experimental papers did you read?

Computer Science Isn't

How many experiments did you do as an undergraduate?

How much experimental data did you analyze?

How many experimental papers did you read?

Hands up if you think this has changedin the last ten years...

OK, Now I'm Mad

2006:About to start teaching softwarearchitecture

OK, Now I'm Mad

2006:About to start teaching softwarearchitecture

Looked at over a dozen books withthose two words in their titles

OK, Now I'm Mad

2006:About to start teaching softwarearchitecture

Looked at over a dozen books withthose two words in their titles

How to describe architectures

OK, Now I'm Mad

2006:About to start teaching softwarearchitecture

Looked at over a dozen books withthose two words in their titles

How to describe architectures

How to develop architectures

OK, Now I'm Mad

2006:About to start teaching softwarearchitecture

Looked at over a dozen books withthose two words in their titles

How to describe architectures

How to develop architectures

But no actual architectures!

OK, Now I'm Mad

The Question Is

The Question Is

Where are all of our examples?

The Question Is

That's how everybody else teaches...

Where are all of our examples?

The Answer Is

Few and far between

The Answer Is

Few and far between

From: Greg WilsonSubject: Beautiful CodeDate: May 17, 2006

I hope you don't mind mail out of the blue, but I'm working on anew book project with O'Reilly called "Beautiful Code" and wouldlike to ask you to contribute an article-length section. Profitsfrom the book will be donated to Amnesty International.

The book will be a collection of master classes in software design.In each chapter, a well-known software developer will present oneof his or her favorite pieces of code, then explain what makes itparticularly appealing. The aim is to "think aloud" while walkingthrough its design and implementation, so that junior developerscan learn to see through more experienced developers eyes.

Thanks,Greg

I expected

From: [name withheld]Subject: re: Beautiful CodeSorry, I'm too busy. Good luck.

I expected

From: [name withheld]Subject: re: Beautiful CodeSorry, I'm too busy. Good luck.

Most people said

From: [name withheld]Subject: re: Beautiful CodeI don't think I've ever written any beautiful code,but I'd really like to read the book when it's done.

I expected

From: [name withheld]Subject: re: Beautiful CodeSorry, I'm too busy. Good luck.

Most people said

From: [name withheld]Subject: re: Beautiful CodeI don't think I've ever written any beautiful code,but I'd really like to read the book when it's done.

But quite a few said

From: [name withheld]Subject: re: Beautiful CodeSure, count me in!

Beauty Comes in All Sizes

Beauty Comes in All Sizes

Beauty Comes in All Sizes

Beauty Comes in All Sizes

A Beautiful Failure

No uptake as a textbook

A Beautiful Failure

No uptake as a textbook

A Beautiful Failure

No uptake as a textbook

Too eclectic to fit anyone's curriculum?

If At First You Don't Succeed...

If At First You Don't Succeed...

2007:Join faculty at the University of Toronto

If At First You Don't Succeed...

To: ResearcherFrom: Practitioner

2007:Join faculty at the University of Toronto

If At First You Don't Succeed...

To: ResearcherFrom: Practitioner

2007:Join faculty at the University of Toronto

To: PractitionerFrom: Researcher

The Result

The Result

The Result

Yup, that's it,right there

The Result

http://neverworkintheory.org

The Result

http://neverworkintheory.org

Ric Holt's grad course

If At First You Don't Succeed...

If At First You Don't Succeed...

try, try again.

If At First You Don't Succeed...

try, try again.

If it still doesn't work,

give up.

If At First You Don't Succeed...

try, try again.

If it still doesn't work,

give up.

There's no point being

a damn fool about it.

Two Solitudes

Two Solitudes

The academic system does not respect practitioners' knowledge (or timescales).

Two Solitudes

The academic system does not respect practitioners' knowledge (or timescales).I know whereof I speak.

Two Solitudes

The academic system does not respect practitioners' knowledge (or timescales).I know whereof I speak.

Practitioners don't understand that computer scientists don't care about building software.

Two Solitudes

The academic system does not respect practitioners' knowledge (or timescales).I know whereof I speak.

Practitioners don't understand that computer scientists don't care about building software.They are about the science of computing.

In Our Particular Case

Most practitioners(and computer scientists)simply don't knowwhat empirical results exist(or how to interpret them).

How Not to Fix This

How Not to Fix This

Let's organize a speed-dating session withsmall companies and startups at ICSE 2013

How Not to Fix This

Let's organize a speed-dating session withsmall companies and startups at ICSE 2013

100 researchers + 100 practitioners5 minutes of one-to-one conversationThen shift left one chair

How Not to Fix This

Let's organize a speed-dating session withsmall companies and startups at ICSE 2013

100 researchers + 100 practitioners5 minutes of one-to-one conversationThen shift left one chair

How Not to Fix This

I suspect that there are very few start-ups with