Aristotle and the Art of Software Development (Agile 2009)

151
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
  • date post

    21-Sep-2014
  • Category

    Technology

  • view

    9
  • download

    2

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 of Aristotle and the Art of Software Development (Agile 2009)

Page 1: Aristotle and the Art of Software Development (Agile 2009)

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

Page 2: Aristotle and the Art of Software Development (Agile 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

Page 3: Aristotle and the Art of Software Development (Agile 2009)

Athens Silicon ValleyFriday, September 18, 2009

Page 4: Aristotle and the Art of Software Development (Agile 2009)

Friday, September 18, 2009

Page 5: Aristotle and the Art of Software Development (Agile 2009)

Friday, September 18, 2009

Page 6: Aristotle and the Art of Software Development (Agile 2009)

Ethics.

Friday, September 18, 2009

Page 7: Aristotle and the Art of Software Development (Agile 2009)

Friday, September 18, 2009

Page 8: Aristotle and the Art of Software Development (Agile 2009)

G

Friday, September 18, 2009

Page 9: Aristotle and the Art of Software Development (Agile 2009)

PG

Friday, September 18, 2009

Page 10: Aristotle and the Art of Software Development (Agile 2009)

PG-13

Friday, September 18, 2009

Page 11: Aristotle and the Art of Software Development (Agile 2009)

R

Friday, September 18, 2009

Page 12: Aristotle and the Art of Software Development (Agile 2009)

Friday, September 18, 2009

Page 13: Aristotle and the Art of Software Development (Agile 2009)

Friday, September 18, 2009

Page 14: Aristotle and the Art of Software Development (Agile 2009)

Friday, September 18, 2009

Page 15: Aristotle and the Art of Software Development (Agile 2009)

Friday, September 18, 2009

Page 16: Aristotle and the Art of Software Development (Agile 2009)

Friday, September 18, 2009

Page 17: Aristotle and the Art of Software Development (Agile 2009)

Ethics.

Friday, September 18, 2009

Page 18: Aristotle and the Art of Software Development (Agile 2009)

What makes a good programmer?

Friday, September 18, 2009

Page 19: Aristotle and the Art of Software Development (Agile 2009)

Friday, September 18, 2009

Page 20: Aristotle and the Art of Software Development (Agile 2009)

Friday, September 18, 2009

Page 21: Aristotle and the Art of Software Development (Agile 2009)

What makes a good programmer?

Friday, September 18, 2009

Page 22: Aristotle and the Art of Software Development (Agile 2009)

What makes a good programmer?

Friday, September 18, 2009

Page 23: Aristotle and the Art of Software Development (Agile 2009)

Act - Effect

Anatomy of an action

Actor

Friday, September 18, 2009

Page 24: Aristotle and the Art of Software Development (Agile 2009)

Deontology (Kant)

Act - Effect

Actor

Friday, September 18, 2009

Page 25: Aristotle and the Art of Software Development (Agile 2009)

Utilitarianism (Mill)

Act - Effect

Actor

Friday, September 18, 2009

Page 26: Aristotle and the Art of Software Development (Agile 2009)

Virtue (Aristotle)

Act - Effect

Actor

Friday, September 18, 2009

Page 27: Aristotle and the Art of Software Development (Agile 2009)

Downsides

Friday, September 18, 2009

Page 28: Aristotle and the Art of Software Development (Agile 2009)

Symptoms

Friday, September 18, 2009

Page 29: Aristotle and the Art of Software Development (Agile 2009)

What kind of Agile?

Friday, September 18, 2009

Page 30: Aristotle and the Art of Software Development (Agile 2009)

What language?

Friday, September 18, 2009

Page 31: Aristotle and the Art of Software Development (Agile 2009)

Immanuel Kant

Friday, September 18, 2009

Page 32: Aristotle and the Art of Software Development (Agile 2009)

Königsberg

Friday, September 18, 2009

Page 33: Aristotle and the Art of Software Development (Agile 2009)

Friday, September 18, 2009

Page 34: Aristotle and the Art of Software Development (Agile 2009)

Friday, September 18, 2009

Page 35: Aristotle and the Art of Software Development (Agile 2009)

Friday, September 18, 2009

Page 36: Aristotle and the Art of Software Development (Agile 2009)

deontologyduty

Friday, September 18, 2009

Page 37: Aristotle and the Art of Software Development (Agile 2009)

Principles

Friday, September 18, 2009

Page 38: Aristotle and the Art of Software Development (Agile 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

Page 39: Aristotle and the Art of Software Development (Agile 2009)

Friday, September 18, 2009

Page 40: Aristotle and the Art of Software Development (Agile 2009)

Friday, September 18, 2009

Page 41: Aristotle and the Art of Software Development (Agile 2009)

Deontological software development

Friday, September 18, 2009

Page 42: Aristotle and the Art of Software Development (Agile 2009)

Don’t Repeat Yourself100% Test CoverageWrite readable code

Friday, September 18, 2009

Page 43: Aristotle and the Art of Software Development (Agile 2009)

Friday, September 18, 2009

Page 44: Aristotle and the Art of Software Development (Agile 2009)

Act - Effect

Actor

Friday, September 18, 2009

Page 45: Aristotle and the Art of Software Development (Agile 2009)

Process - Outcome

Participants

Friday, September 18, 2009

Page 46: Aristotle and the Art of Software Development (Agile 2009)

Determine the right process

Friday, September 18, 2009

Page 47: Aristotle and the Art of Software Development (Agile 2009)

(Determine the right principles)

Friday, September 18, 2009

Page 48: Aristotle and the Art of Software Development (Agile 2009)

Stick to the rules

Friday, September 18, 2009

Page 49: Aristotle and the Art of Software Development (Agile 2009)

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

Friday, September 18, 2009

Page 50: Aristotle and the Art of Software Development (Agile 2009)

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

Friday, September 18, 2009

Page 51: Aristotle and the Art of Software Development (Agile 2009)

“This is just the way things are done”

Friday, September 18, 2009

Page 52: Aristotle and the Art of Software Development (Agile 2009)

Ever-growing rules

Friday, September 18, 2009

Page 53: Aristotle and the Art of Software Development (Agile 2009)

Friday, September 18, 2009

Page 54: Aristotle and the Art of Software Development (Agile 2009)

Friday, September 18, 2009

Page 55: Aristotle and the Art of Software Development (Agile 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

Page 56: Aristotle and the Art of Software Development (Agile 2009)

Don’t Repeat Yourself

Write clear, understandable code

Friday, September 18, 2009

Page 57: Aristotle and the Art of Software Development (Agile 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

Page 58: Aristotle and the Art of Software Development (Agile 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

Page 59: Aristotle and the Art of Software Development (Agile 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

Page 60: Aristotle and the Art of Software Development (Agile 2009)

What kind of agile?

Friday, September 18, 2009

Page 61: Aristotle and the Art of Software Development (Agile 2009)

Certification

Friday, September 18, 2009

Page 62: Aristotle and the Art of Software Development (Agile 2009)

Friday, September 18, 2009

Page 63: Aristotle and the Art of Software Development (Agile 2009)

John Stuart Mill

Friday, September 18, 2009

Page 64: Aristotle and the Art of Software Development (Agile 2009)

John Stuart Mill

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

Friday, September 18, 2009

Page 65: Aristotle and the Art of Software Development (Agile 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

Page 66: Aristotle and the Art of Software Development (Agile 2009)

Utilitarianism

Friday, September 18, 2009

Page 67: Aristotle and the Art of Software Development (Agile 2009)

Greatest good for the greatest number

Friday, September 18, 2009

Page 68: Aristotle and the Art of Software Development (Agile 2009)

The ends justify the means

Friday, September 18, 2009

Page 69: Aristotle and the Art of Software Development (Agile 2009)

Friday, September 18, 2009

Page 70: Aristotle and the Art of Software Development (Agile 2009)

Friday, September 18, 2009

Page 71: Aristotle and the Art of Software Development (Agile 2009)

Friday, September 18, 2009

Page 72: Aristotle and the Art of Software Development (Agile 2009)

Friday, September 18, 2009

Page 73: Aristotle and the Art of Software Development (Agile 2009)

Friday, September 18, 2009

Page 74: Aristotle and the Art of Software Development (Agile 2009)

Friday, September 18, 2009

Page 75: Aristotle and the Art of Software Development (Agile 2009)

Friday, September 18, 2009

Page 76: Aristotle and the Art of Software Development (Agile 2009)

Friday, September 18, 2009

Page 77: Aristotle and the Art of Software Development (Agile 2009)

Friday, September 18, 2009

Page 78: Aristotle and the Art of Software Development (Agile 2009)

Utilitariansoftware development

Friday, September 18, 2009

Page 79: Aristotle and the Art of Software Development (Agile 2009)

Friday, September 18, 2009

Page 80: Aristotle and the Art of Software Development (Agile 2009)

Friday, September 18, 2009

Page 81: Aristotle and the Art of Software Development (Agile 2009)

Act - Effect

Actor

Friday, September 18, 2009

Page 82: Aristotle and the Art of Software Development (Agile 2009)

Process - Outcome

Participants

Friday, September 18, 2009

Page 83: Aristotle and the Art of Software Development (Agile 2009)

Driven by experience

Friday, September 18, 2009

Page 84: Aristotle and the Art of Software Development (Agile 2009)

Ad hoc

Friday, September 18, 2009

Page 85: Aristotle and the Art of Software Development (Agile 2009)

Results-oriented

Friday, September 18, 2009

Page 86: Aristotle and the Art of Software Development (Agile 2009)

Willing to compromise

Friday, September 18, 2009

Page 87: Aristotle and the Art of Software Development (Agile 2009)

“Just get it done”

Friday, September 18, 2009

Page 88: Aristotle and the Art of Software Development (Agile 2009)

“Doesn’t have to be pretty”

Friday, September 18, 2009

Page 89: Aristotle and the Art of Software Development (Agile 2009)

Short term vs. long term

Friday, September 18, 2009

Page 90: Aristotle and the Art of Software Development (Agile 2009)

What kind of agile?

Friday, September 18, 2009

Page 91: Aristotle and the Art of Software Development (Agile 2009)

No Process

Friday, September 18, 2009

Page 92: Aristotle and the Art of Software Development (Agile 2009)

Friday, September 18, 2009

Page 93: Aristotle and the Art of Software Development (Agile 2009)

Lisp vs. Perl

Friday, September 18, 2009

Page 94: Aristotle and the Art of Software Development (Agile 2009)

Friday, September 18, 2009

Page 95: Aristotle and the Art of Software Development (Agile 2009)

Friday, September 18, 2009

Page 96: Aristotle and the Art of Software Development (Agile 2009)

Act - Effect

Actor

Friday, September 18, 2009

Page 97: Aristotle and the Art of Software Development (Agile 2009)

Friday, September 18, 2009

Page 98: Aristotle and the Art of Software Development (Agile 2009)

Friday, September 18, 2009

Page 99: Aristotle and the Art of Software Development (Agile 2009)

Philosophy

Friday, September 18, 2009

Page 100: Aristotle and the Art of Software Development (Agile 2009)

PhilosophyEthics

Friday, September 18, 2009

Page 101: Aristotle and the Art of Software Development (Agile 2009)

PhilosophyEthicsPolitics

Friday, September 18, 2009

Page 102: Aristotle and the Art of Software Development (Agile 2009)

PhilosophyEthicsPoliticsRhetoric

Friday, September 18, 2009

Page 103: Aristotle and the Art of Software Development (Agile 2009)

PhilosophyEthicsPoliticsRhetoric

Aesthetics

Friday, September 18, 2009

Page 104: Aristotle and the Art of Software Development (Agile 2009)

PhilosophyEthicsPoliticsRhetoric

AestheticsPsychology

Friday, September 18, 2009

Page 105: Aristotle and the Art of Software Development (Agile 2009)

PhilosophyEthicsPoliticsRhetoric

AestheticsPsychology

Biology

Friday, September 18, 2009

Page 106: Aristotle and the Art of Software Development (Agile 2009)

PhilosophyEthicsPoliticsRhetoric

AestheticsPsychology

BiologyPhysics

Friday, September 18, 2009

Page 107: Aristotle and the Art of Software Development (Agile 2009)

PhilosophyEthicsPoliticsRhetoric

AestheticsPsychology

BiologyPhysics

Astronomy

Friday, September 18, 2009

Page 108: Aristotle and the Art of Software Development (Agile 2009)

PhilosophyEthicsPoliticsRhetoric

AestheticsPsychology

BiologyPhysics

AstronomyEconomics

Friday, September 18, 2009

Page 109: Aristotle and the Art of Software Development (Agile 2009)

PhilosophyEthicsPoliticsRhetoric

AestheticsPsychology

BiologyPhysics

AstronomyEconomics

Logic

Friday, September 18, 2009

Page 110: Aristotle and the Art of Software Development (Agile 2009)

Friday, September 18, 2009

Page 111: Aristotle and the Art of Software Development (Agile 2009)

Friday, September 18, 2009

Page 112: Aristotle and the Art of Software Development (Agile 2009)

(practical) wisdom

Friday, September 18, 2009

Page 113: Aristotle and the Art of Software Development (Agile 2009)

(practical) wisdom

aiming at virtues

Friday, September 18, 2009

Page 114: Aristotle and the Art of Software Development (Agile 2009)

combined with moral strength

(practical) wisdom

aiming at virtues

Friday, September 18, 2009

Page 115: Aristotle and the Art of Software Development (Agile 2009)

leading to happiness

combined with moral strength

(practical) wisdom

aiming at virtues

Friday, September 18, 2009

Page 116: Aristotle and the Art of Software Development (Agile 2009)

(practical) wisdom

Friday, September 18, 2009

Page 117: Aristotle and the Art of Software Development (Agile 2009)

aiming atvirtues

Friday, September 18, 2009

Page 118: Aristotle and the Art of Software Development (Agile 2009)

CourageTemperance

PrideGenerosity

Good temperTruthfulness

WitFriendliness

ModestyRighteous Indignation

Friday, September 18, 2009

Page 119: Aristotle and the Art of Software Development (Agile 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

Page 120: Aristotle and the Art of Software Development (Agile 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

Page 121: Aristotle and the Art of Software Development (Agile 2009)

combined with moral strength

Friday, September 18, 2009

Page 122: Aristotle and the Art of Software Development (Agile 2009)

leading to happiness

Friday, September 18, 2009

Page 123: Aristotle and the Art of Software Development (Agile 2009)

modeling

Friday, September 18, 2009

Page 124: Aristotle and the Art of Software Development (Agile 2009)

Friday, September 18, 2009

Page 125: Aristotle and the Art of Software Development (Agile 2009)

practice

Friday, September 18, 2009

Page 126: Aristotle and the Art of Software Development (Agile 2009)

bootstrapping

Friday, September 18, 2009

Page 127: Aristotle and the Art of Software Development (Agile 2009)

Friday, September 18, 2009

Page 128: Aristotle and the Art of Software Development (Agile 2009)

Friday, September 18, 2009

Page 129: Aristotle and the Art of Software Development (Agile 2009)

Downsides

Friday, September 18, 2009

Page 130: Aristotle and the Art of Software Development (Agile 2009)

Virtue-basedsoftware development

Friday, September 18, 2009

Page 131: Aristotle and the Art of Software Development (Agile 2009)

Act - Effect

Actor

Friday, September 18, 2009

Page 132: Aristotle and the Art of Software Development (Agile 2009)

Process - Outcome

Participants

Friday, September 18, 2009

Page 133: Aristotle and the Art of Software Development (Agile 2009)

Education and training

Friday, September 18, 2009

Page 134: Aristotle and the Art of Software Development (Agile 2009)

Pride

Friday, September 18, 2009

Page 135: Aristotle and the Art of Software Development (Agile 2009)

Sane work schedules

Friday, September 18, 2009

Page 136: Aristotle and the Art of Software Development (Agile 2009)

Empower developers

Friday, September 18, 2009

Page 137: Aristotle and the Art of Software Development (Agile 2009)

Mentoring

Friday, September 18, 2009

Page 138: Aristotle and the Art of Software Development (Agile 2009)

Right people -> right outcomes

Friday, September 18, 2009

Page 139: Aristotle and the Art of Software Development (Agile 2009)

What kind of agile?

Friday, September 18, 2009

Page 140: Aristotle and the Art of Software Development (Agile 2009)

Natural

Friday, September 18, 2009

Page 141: Aristotle and the Art of Software Development (Agile 2009)

Friday, September 18, 2009

Page 142: Aristotle and the Art of Software Development (Agile 2009)

Empower programmers

Friday, September 18, 2009

Page 143: Aristotle and the Art of Software Development (Agile 2009)

Self-effacing

Friday, September 18, 2009

Page 144: Aristotle and the Art of Software Development (Agile 2009)

Pleasant to write

Friday, September 18, 2009

Page 145: Aristotle and the Art of Software Development (Agile 2009)

Happy and virtuous

Friday, September 18, 2009

Page 146: Aristotle and the Art of Software Development (Agile 2009)

virtues, not rules

Friday, September 18, 2009

Page 147: Aristotle and the Art of Software Development (Agile 2009)

virtues, not rulesmoderation, not excess

Friday, September 18, 2009

Page 148: Aristotle and the Art of Software Development (Agile 2009)

virtues, not rulesmoderation, not excessjudgment, not process

Friday, September 18, 2009

Page 149: Aristotle and the Art of Software Development (Agile 2009)

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

Friday, September 18, 2009

Page 150: Aristotle and the Art of Software Development (Agile 2009)

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

Friday, September 18, 2009

Page 151: Aristotle and the Art of Software Development (Agile 2009)

Thanks!

Slides at:http://railspikes.com

Aristotle, Nicomachean Ethics

Friday, September 18, 2009