Aristotle and the Art of Software Development (Agile 2009)

Post on 21-Sep-2014

9 Views

Category:

Technology

2 Downloads

Preview:

Click to see full reader

DESCRIPTION

Talk on software development and philosophy, given at Agile 2009 in Chicago. (This is an updated version of a talk I gave at RubyConf 2008 in Orlando.)

Transcript

Aristotle and the art of software development

Jonathan Dahl

http://tumblon.com (work)http://zencoder.tv (product)http://railspikes.com (blog)

Friday, September 18, 2009

Or: what does Athens have to do with Silicon Valley?

Jonathan Dahl

http://tumblon.com (work)http://zencoder.tv (product)http://railspikes.com (blog)

Friday, September 18, 2009

Athens Silicon ValleyFriday, September 18, 2009

Friday, September 18, 2009

Friday, September 18, 2009

Ethics.

Friday, September 18, 2009

Friday, September 18, 2009

G

Friday, September 18, 2009

PG

Friday, September 18, 2009

PG-13

Friday, September 18, 2009

R

Friday, September 18, 2009

Friday, September 18, 2009

Friday, September 18, 2009

Friday, September 18, 2009

Friday, September 18, 2009

Friday, September 18, 2009

Ethics.

Friday, September 18, 2009

What makes a good programmer?

Friday, September 18, 2009

Friday, September 18, 2009

Friday, September 18, 2009

What makes a good programmer?

Friday, September 18, 2009

What makes a good programmer?

Friday, September 18, 2009

Act - Effect

Anatomy of an action

Actor

Friday, September 18, 2009

Deontology (Kant)

Act - Effect

Actor

Friday, September 18, 2009

Utilitarianism (Mill)

Act - Effect

Actor

Friday, September 18, 2009

Virtue (Aristotle)

Act - Effect

Actor

Friday, September 18, 2009

Downsides

Friday, September 18, 2009

Symptoms

Friday, September 18, 2009

What kind of Agile?

Friday, September 18, 2009

What language?

Friday, September 18, 2009

Immanuel Kant

Friday, September 18, 2009

Königsberg

Friday, September 18, 2009

Friday, September 18, 2009

Friday, September 18, 2009

Friday, September 18, 2009

deontologyduty

Friday, September 18, 2009

Principles

Friday, September 18, 2009

Act only according to that maxim by which you can at the same time will that

it should become a universal law

Categorical Imperative

Friday, September 18, 2009

Friday, September 18, 2009

Friday, September 18, 2009

Deontological software development

Friday, September 18, 2009

Don’t Repeat Yourself100% Test CoverageWrite readable code

Friday, September 18, 2009

Friday, September 18, 2009

Act - Effect

Actor

Friday, September 18, 2009

Process - Outcome

Participants

Friday, September 18, 2009

Determine the right process

Friday, September 18, 2009

(Determine the right principles)

Friday, September 18, 2009

Stick to the rules

Friday, September 18, 2009

“You have to follow every aspect of the process for it to work”

Friday, September 18, 2009

Follow the rules, even when you don’t think you’ll like the outcome

Friday, September 18, 2009

“This is just the way things are done”

Friday, September 18, 2009

Ever-growing rules

Friday, September 18, 2009

Friday, September 18, 2009

Friday, September 18, 2009

1.User stories are written.2.Release planning creates the schedule.3.Make frequent small releases.4.The Project Velocity is measured.5.The project is divided into iterations.6.Iteration planning starts each iteration.7.Move people around.8.A stand-up meeting starts each day.9.Fix XP when it breaks.10.Simplicity.11.Choose a system metaphor.12.Use CRC cards for design sessions.13.Create spike solutions to reduce risk.14.No functionality is added early.15.Refactor whenever and wherever possible.

16.The customer is always available.17.Code must be written to agreed standards.18.Code the unit test first.19.All production code is pair programmed.20.Only one pair integrates code at a time.21.Integrate often.22.Use collective code ownership.23.Leave optimization till last.24.No overtime.25.All code must have unit tests.26.All code must pass all unit tests before it can be released.27.When a bug is found tests are created.28.Acceptance tests are run often and the score is published.

XP Rules

Friday, September 18, 2009

Don’t Repeat Yourself

Write clear, understandable code

Friday, September 18, 2009

development: adapter: mysql encoding: utf8 database: app_development username: root password:

test: adapter: mysql encoding: utf8 database: app_test username: root password:

production: adapter: mysql encoding: utf8 database: app_production username: user password: password

Friday, September 18, 2009

standard: adapter: mysql encoding: utf8 local: username: root password: development: <<: *standard <<: *local database: app_development

test: <<: *standard <<: *local database: app_test

production: <<: *standard database: app_production username: user password: password

Friday, September 18, 2009

<% local_password = "" -%><% local_user = "root" -%><% [{:name => "development", :user => local_user, :password => local_password}, {:name => "test", :user => local_user, :password => local_password}, {:name => "production", :user => "user", :password => "password"} ].each do |environment| -%><%= environment[:name] %> adapter: mysql encoding: utf8 database: app_<%= environment[:name] %> username: <%= environment[:user] %> password: <%= environment[:password] %><% end -%>

Friday, September 18, 2009

What kind of agile?

Friday, September 18, 2009

Certification

Friday, September 18, 2009

Friday, September 18, 2009

John Stuart Mill

Friday, September 18, 2009

John Stuart Mill

Opposed slaveryFavored women’s suffrageFree markets(...with proper regulation)Animal rights Environmentalism

Friday, September 18, 2009

...way before these things were cool

Opposed slaveryFavored women’s suffrageFree markets(...with proper regulation)Animal rights Environmentalism

John Stuart Mill

Friday, September 18, 2009

Utilitarianism

Friday, September 18, 2009

Greatest good for the greatest number

Friday, September 18, 2009

The ends justify the means

Friday, September 18, 2009

Friday, September 18, 2009

Friday, September 18, 2009

Friday, September 18, 2009

Friday, September 18, 2009

Friday, September 18, 2009

Friday, September 18, 2009

Friday, September 18, 2009

Friday, September 18, 2009

Friday, September 18, 2009

Utilitariansoftware development

Friday, September 18, 2009

Friday, September 18, 2009

Friday, September 18, 2009

Act - Effect

Actor

Friday, September 18, 2009

Process - Outcome

Participants

Friday, September 18, 2009

Driven by experience

Friday, September 18, 2009

Ad hoc

Friday, September 18, 2009

Results-oriented

Friday, September 18, 2009

Willing to compromise

Friday, September 18, 2009

“Just get it done”

Friday, September 18, 2009

“Doesn’t have to be pretty”

Friday, September 18, 2009

Short term vs. long term

Friday, September 18, 2009

What kind of agile?

Friday, September 18, 2009

No Process

Friday, September 18, 2009

Friday, September 18, 2009

Lisp vs. Perl

Friday, September 18, 2009

Friday, September 18, 2009

Friday, September 18, 2009

Act - Effect

Actor

Friday, September 18, 2009

Friday, September 18, 2009

Friday, September 18, 2009

Philosophy

Friday, September 18, 2009

PhilosophyEthics

Friday, September 18, 2009

PhilosophyEthicsPolitics

Friday, September 18, 2009

PhilosophyEthicsPoliticsRhetoric

Friday, September 18, 2009

PhilosophyEthicsPoliticsRhetoric

Aesthetics

Friday, September 18, 2009

PhilosophyEthicsPoliticsRhetoric

AestheticsPsychology

Friday, September 18, 2009

PhilosophyEthicsPoliticsRhetoric

AestheticsPsychology

Biology

Friday, September 18, 2009

PhilosophyEthicsPoliticsRhetoric

AestheticsPsychology

BiologyPhysics

Friday, September 18, 2009

PhilosophyEthicsPoliticsRhetoric

AestheticsPsychology

BiologyPhysics

Astronomy

Friday, September 18, 2009

PhilosophyEthicsPoliticsRhetoric

AestheticsPsychology

BiologyPhysics

AstronomyEconomics

Friday, September 18, 2009

PhilosophyEthicsPoliticsRhetoric

AestheticsPsychology

BiologyPhysics

AstronomyEconomics

Logic

Friday, September 18, 2009

Friday, September 18, 2009

Friday, September 18, 2009

(practical) wisdom

Friday, September 18, 2009

(practical) wisdom

aiming at virtues

Friday, September 18, 2009

combined with moral strength

(practical) wisdom

aiming at virtues

Friday, September 18, 2009

leading to happiness

combined with moral strength

(practical) wisdom

aiming at virtues

Friday, September 18, 2009

(practical) wisdom

Friday, September 18, 2009

aiming atvirtues

Friday, September 18, 2009

CourageTemperance

PrideGenerosity

Good temperTruthfulness

WitFriendliness

ModestyRighteous Indignation

Friday, September 18, 2009

Excess (too much) Virtue (just right) Defect (too little)Rashness Courage Cowardice

Temperance

Pride

Generosity

Good temper

Truthfulness

Wit

Friendliness

ModestyRighteous Indignation

Friday, September 18, 2009

Excess (too much) Virtue (just right) Defect (too little)Rashness Courage Cowardice

Indulgence Temperance InsensibilityVanity Pride Lack of ambition

Prodigality Generosity IlliberalityIrascability Good temper Lack of spirit

Boastfulness Truthfulness False ModestyBuffoonery Wit Boorishness

Obsequiousness Friendliness CantankerousnessShyness Modesty Shamelessness

EnvyRighteous Indignation

Spitefulness

Friday, September 18, 2009

combined with moral strength

Friday, September 18, 2009

leading to happiness

Friday, September 18, 2009

modeling

Friday, September 18, 2009

Friday, September 18, 2009

practice

Friday, September 18, 2009

bootstrapping

Friday, September 18, 2009

Friday, September 18, 2009

Friday, September 18, 2009

Downsides

Friday, September 18, 2009

Virtue-basedsoftware development

Friday, September 18, 2009

Act - Effect

Actor

Friday, September 18, 2009

Process - Outcome

Participants

Friday, September 18, 2009

Education and training

Friday, September 18, 2009

Pride

Friday, September 18, 2009

Sane work schedules

Friday, September 18, 2009

Empower developers

Friday, September 18, 2009

Mentoring

Friday, September 18, 2009

Right people -> right outcomes

Friday, September 18, 2009

What kind of agile?

Friday, September 18, 2009

Natural

Friday, September 18, 2009

Friday, September 18, 2009

Empower programmers

Friday, September 18, 2009

Self-effacing

Friday, September 18, 2009

Pleasant to write

Friday, September 18, 2009

Happy and virtuous

Friday, September 18, 2009

virtues, not rules

Friday, September 18, 2009

virtues, not rulesmoderation, not excess

Friday, September 18, 2009

virtues, not rulesmoderation, not excessjudgment, not process

Friday, September 18, 2009

virtues, not rulesmoderation, not excessjudgment, not processwhole of life

Friday, September 18, 2009

virtues, not rulesmoderation, not excessjudgment, not processwhole of lifehappiness

Friday, September 18, 2009

Thanks!

Slides at:http://railspikes.com

Aristotle, Nicomachean Ethics

Friday, September 18, 2009

top related