SlideShare uma empresa Scribd logo
1 de 31
Baixar para ler offline
Forget about Agile
…Let’s write great code first
Gino Marckx
We are uncovering better ways of developing software by doing it and helping
others do it. Through this work we have come to value
That is, while there is value in the items on the right, we value items on the left more.
Kent Beck - Mike Beedle - Arie van Bennekum - Alistair Cockburn - Ward Cunningham - Martin Fowler - James Grenning - Jim Highsmith
Andrew Hunt - Ron Jeffries - John Kern - Brian Marick - Robert C. Martin - Steve Mellor - Ken Schwaber - Jeff Sutherland - Dave Thomas
ignore
©2001, the above authors - this declaration may be freely copied in any form, but only in its entirety through this notice.
INDIVIDUALS and INTERACTIONS

over PROCESSES and TOOLS
WORKING SOFTWARE

over COMPREHENSIVE DOCUMENTATION
RESPONDING to CHANGE

over FOLLOWING a PLAN
CUSTOMER COLLABORATION

over CONTRACT NEGOTIATION
INDIVIDUALS and INTERACTIONS

over PROCESSES and TOOLS
WORKING SOFTWARE

over COMPREHENSIVE DOCUMENTATION
RESPONDING to CHANGE

over FOLLOWING a PLAN
CUSTOMER COLLABORATION

over CONTRACT NEGOTIATION
Building it Right
CRAFTSMANSHIP

over CRAP
cahbn Chris Hedgate - https://www.flickr.com/photos/chrishedgate/3047997427
Quality
!
Maintainable/
Extensible
Working as a team
Building the right thing
Collective Code
Ownership
Working as a team
public class Person {	
	 public String m_name;	
	 public String m_street;	
	 public String m_zip;	
	 public String m_city;	
	 public String m_province;	
	 public String m_country;	
	 	
	 public Person(String name, String country) { ... }		
	 public Person(String name, String town, String country) { ... }	
	 public Person(String name, String s, String z, String c, String p,	
	 	 	 	 	 	 String country) { ... }	

	 public void add(Person person) { ... }		
	 public final List getFriends() { ... }		
	 public double between(Person person) { ... }		
	 public Person closestFriend() { ... }	
}
Working as a team
public class Person {	
	 public String m_name;	
	 public String m_street;	
	 public String m_zip;	
	 public String m_city;	
	 public String m_province;	
	 public String m_country;	
	 	
	 public Person(String name, String country) { ... }		
	 public Person(String name, String town, String country) { ... }	
	 public Person(String name, String s, String z, String c, String p,	
	 	 	 	 	 	 String country) { ... }	

	 public void add(Person person) { ... }		
	 public final List getFriends() { ... }		
	 public double between(Person person) { ... }		
	 public Person closestFriend() { ... }	
}
Working as a team
public class Person {	
	 public String m_name;	
	 public String m_street;	
	 public String m_zip;	
	 public String m_city;	
	 public String m_province;	
	 public String m_country;	
	 	
	 public Person(String name, String country) { ... }		
	 public Person(String name, String town, String country) { ... }	
	 public Person(String name, String s, String z, String c, String p,	
	 	 	 	 	 	 String country) { ... }	

	 public void add(Person person) { ... }		
	 public final List getFriends() { ... }		
	 public double between(Person person) { ... }		
	 public Person closestFriend() { ... }	
}
Working as a team
public class Person {	
	 public String m_name;	
	 public String m_street;	
	 public String m_zip;	
	 public String m_city;	
	 public String m_province;	
	 public String m_country;	
	 	
	 public Person(String name, String country) { ... }		
	 public Person(String name, String town, String country) { ... }	
	 public Person(String name, String s, String z, String c, String p,	
	 	 	 	 	 	 String country) { ... }	

	 public void add(Person person) { ... }		
	 public final List getFriends() { ... }		
	 public double between(Person person) { ... }		
	 public Person closestFriend() { ... }	
}
Working as a team
The Wallaroo Prints © 2011
public class Person {	
	 public String name;	
	 public Address address;	
	 	
	 public Person(String name, Address address) { ... } 	
	 	
	 public void addFriend(Person person) { ... } 	
	 public List<Person> getFriends() { ... } 	
	 	
	 /**	
	 * Find the friend who lives closest.	
	 * 	
	 * @return the friend who lives closest	
	 * @throws NoSuchElementException in case this person has no friends	
	 */	
	 public Person getNearestFriend() { ... } 	
}
Working as a team
public class Person {	
	 public String name;	
	 public Address address;	
	 	
	 public Person(String name, Address address) { ... } 	
	 	
	 public void addFriend(Person person) { ... } 	
	 public List<Person> getFriends() { ... } 	
	 	
	 /**	
	 * Find the friend who lives closest.	
	 * 	
	 * @return the friend who lives closest	
	 * @throws NoSuchElementException in case this person has no friends	
	 */	
	 public Person getNearestFriend() { ... } 	
}
Working as a team
public class Person {	
	 public String name;	
	 public Address address;	
	 	
	 public Person(String name, Address address) { ... } 	
	 	
	 public void addFriend(Person person) { ... } 	
	 public List<Person> getFriends() { ... } 	
	 	
	 /**	
	 * Find the friend who lives closest.	
	 * 	
	 * @return the friend who lives closest	
	 * @throws NoSuchElementException in case this person has no friends	
	 */	
	 public Person getNearestFriend() { ... } 	
}
Working as a team
Building the right thing
Test Automation
public class Address {	
	 public Address(String country) { ... }	
	 public Address(String city, String country) { ... }	
	 public Address(String street, String zipCode, String city, String state,	
	 	 	 	 	 	 	 String country) { ... }	
	 	
	 public String getStreet() { ... }	
	 public String getZip() { ... }	
	 public String getCity() { ... }	
	 public String getState() { ... }	
	 public String getCountry() { ... }	
!
	 public Point getGeographicalLocation() { ... }	
!
	 /**	
	 * Calculate the distance in kilometers to another address.	
	 * 	
	 * @param anotherAddress the other address to calculate the distance to	
	 * @return the distance in kilometers between this address and the other	
* 	 address	
	 * @throws IllegalArgumentException when location of either address is	
* 	 unknown 	
	 */	
	 public double distanceTo(Address anotherAddress) { ... }	
}
Building the right thing
public class Address {	
	 public Address(String country) { ... }	
	 public Address(String city, String country) { ... }	
	 public Address(String street, String zipCode, String city, String state,	
	 	 	 	 	 	 	 String country) { ... }	
	 	
	 public String getStreet() { ... }	
	 public String getZip() { ... }	
	 public String getCity() { ... }	
	 public String getState() { ... }	
	 public String getCountry() { ... }	
!
	 public Point getGeographicalLocation() { ... }	
!
	 /**	
	 * Calculate the distance in kilometers to another address.	
	 * 	
	 * @param anotherAddress the other address to calculate the distance to	
	 * @return the distance in kilometers between this address and the other	
* 	 address	
	 * @throws IllegalArgumentException when location of either address is	
* 	 unknown 	
	 */	
	 public double distanceTo(Address anotherAddress) { ... }	
}
Building the right thing
public class Address {	
	 public Address(String country) { ... }	
	 public Address(String city, String country) { ... }	
	 public Address(String street, String zipCode, String city, String state,	
	 	 	 	 	 	 	 String country) { ... }	
	 	
	 public String getStreet() { ... }	
	 public String getZip() { ... }	
	 public String getCity() { ... }	
	 public String getState() { ... }	
	 public String getCountry() { ... }	
!
	 public Point getGeographicalLocation() { ... }	
!
	 /**	
	 * Calculate the distance in kilometers to another address.	
	 * 	
	 * @param anotherAddress the other address to calculate the distance to	
	 * @return the distance in kilometers between this address and the other	
* 	 address	
	 * @throws IllegalArgumentException when location of either address is	
* 	 unknown 	
	 */	
	 public double distanceTo(Address anotherAddress) { ... }	
}
Building the right thing
public class Address {	
	 public Address(String country) { ... }	
	 public Address(String city, String country) { ... }	
	 public Address(String street, String zipCode, String city, String state,	
	 	 	 	 	 	 	 String country) { ... }	
	 	
	 public String getStreet() { ... }	
	 public String getZip() { ... }	
	 public String getCity() { ... }	
	 public String getState() { ... }	
	 public String getCountry() { ... }	
!
	 public Point getGeographicalLocation() { ... }	
!
	 /**	
	 * Calculate the distance in kilometers to another address.	
	 * 	
	 * @param anotherAddress the other address to calculate the distance to	
	 * @return the distance in kilometers between this address and the other	
* 	 address	
	 * @throws IllegalArgumentException when location of either address is	
* 	 unknown 	
	 */	
	 public double distanceTo(Address anotherAddress) { ... }	
}
Building the right thing
The Wallaroo Prints © 2011
public class Address {	
	 ...	
	 public static void setAddressLocator(AddressLocator locator) { ... }	
	 ...	
}	
!
!
public class AddressTest {	
	 public AddressLocator createMockLocatorWithPolandCentreOfTheUniverse() {	
	 	 	 	 	 	 ... }	
!
	 @Test	
	 public void testDistanceTo() {	
	 	 Address.setAddressLocator(	
	 	 	 	 	 	 createMockLocatorWithPolandCentreOfTheUniverse());	
	 	 	
	 	 Address polishAddress = new Address("Poland");	
	 	 	
	 	 assertEquals(1000, polishAddress.distanceTo(new Address("Canada")));	
	 }	
}
Building the right thing
Working as a team
Building the right thing
Building it right
about 56,400,000 results
http://www.zazzle.ca/comments_a_deodorant_to_mask_code_smells_tshirt-235182622652051339
We are uncovering better ways of developing software by doing it and helping
others do it. Through this work we have come to value
That is, while there is value in the items on the right, we value items on the left more.
Kent Beck - Mike Beedle - Arie van Bennekum - Alistair Cockburn - Ward Cunningham - Martin Fowler - James Grenning - Jim Highsmith
Andrew Hunt - Ron Jeffries - John Kern - Brian Marick - Robert C. Martin - Steve Mellor - Ken Schwaber - Jeff Sutherland - Dave Thomas
ignore
©2001, the above authors - this declaration may be freely copied in any form, but only in its entirety through this notice.
INDIVIDUALS and INTERACTIONS

over PROCESSES and TOOLS
WORKING SOFTWARE

over COMPREHENSIVE DOCUMENTATION
RESPONSING to CHANGE

over FOLLOWING a PLAN
CUSTOMER COLLABORATION

over CONTRACT NEGOTIATION
better ways

of developing software
CRAFTSMANSHIP

over CRAP
Forget About Agile
Excel at Software
Engineering
Thank you!
Gino Marckx
Director Agile Competency Center

Mais conteúdo relacionado

Semelhante a Forget Agile, Write Great Code First

Your code smells too! Time to deodorize
Your code smells too! Time to deodorizeYour code smells too! Time to deodorize
Your code smells too! Time to deodorizeGino Marckx
 
Speed up the mobile development process
Speed up the mobile development processSpeed up the mobile development process
Speed up the mobile development processLeonardoSarra
 
Cutting through the fog of microservices: lightsabers optional
Cutting through the fog of microservices: lightsabers optionalCutting through the fog of microservices: lightsabers optional
Cutting through the fog of microservices: lightsabers optionalGraham Charters
 
From java to kotlin beyond alt+shift+cmd+k - Droidcon italy
From java to kotlin beyond alt+shift+cmd+k - Droidcon italyFrom java to kotlin beyond alt+shift+cmd+k - Droidcon italy
From java to kotlin beyond alt+shift+cmd+k - Droidcon italyFabio Collini
 
Getting the following errorsError 1 error C2436 {ctor} mem.pdf
Getting the following errorsError 1 error C2436 {ctor}  mem.pdfGetting the following errorsError 1 error C2436 {ctor}  mem.pdf
Getting the following errorsError 1 error C2436 {ctor} mem.pdfherminaherman
 
I have the following code and I need to know why I am receiving the .pdf
I have the following code and I need to know why I am receiving the .pdfI have the following code and I need to know why I am receiving the .pdf
I have the following code and I need to know why I am receiving the .pdfezzi552
 
Creating a Facebook Clone - Part XX.pdf
Creating a Facebook Clone - Part XX.pdfCreating a Facebook Clone - Part XX.pdf
Creating a Facebook Clone - Part XX.pdfShaiAlmog1
 
Code Smells y Refactoring o haciendo que nuestro codigo huela (y se vea) mejo...
Code Smells y Refactoring o haciendo que nuestro codigo huela (y se vea) mejo...Code Smells y Refactoring o haciendo que nuestro codigo huela (y se vea) mejo...
Code Smells y Refactoring o haciendo que nuestro codigo huela (y se vea) mejo....NET Conf UY
 
2017 02-07 - elastic & spark. building a search geo locator
2017 02-07 - elastic & spark. building a search geo locator2017 02-07 - elastic & spark. building a search geo locator
2017 02-07 - elastic & spark. building a search geo locatorAlberto Paro
 
2017 02-07 - elastic & spark. building a search geo locator
2017 02-07 - elastic & spark. building a search geo locator2017 02-07 - elastic & spark. building a search geo locator
2017 02-07 - elastic & spark. building a search geo locatorAlberto Paro
 
Kotlin Data Model
Kotlin Data ModelKotlin Data Model
Kotlin Data ModelKros Huang
 
AST Transformations at JFokus
AST Transformations at JFokusAST Transformations at JFokus
AST Transformations at JFokusHamletDRC
 
WINSEM2020-21_STS3105_SS_VL2020210500169_Reference_Material_I_15-Mar-2021_L15...
WINSEM2020-21_STS3105_SS_VL2020210500169_Reference_Material_I_15-Mar-2021_L15...WINSEM2020-21_STS3105_SS_VL2020210500169_Reference_Material_I_15-Mar-2021_L15...
WINSEM2020-21_STS3105_SS_VL2020210500169_Reference_Material_I_15-Mar-2021_L15...MaruMengesha
 
using set identitiesSolutionimport java.util.Scanner; c.pdf
using set identitiesSolutionimport java.util.Scanner;  c.pdfusing set identitiesSolutionimport java.util.Scanner;  c.pdf
using set identitiesSolutionimport java.util.Scanner; c.pdfexcellentmobilesabc
 
F# Eye For The C# Guy - Seattle 2013
F# Eye For The C# Guy - Seattle 2013F# Eye For The C# Guy - Seattle 2013
F# Eye For The C# Guy - Seattle 2013Phillip Trelford
 
public class Person { private String name; private int age;.pdf
public class Person { private String name; private int age;.pdfpublic class Person { private String name; private int age;.pdf
public class Person { private String name; private int age;.pdfarjuncp10
 
please help with java questionsJAVA CODEplease check my code and.pdf
please help with java questionsJAVA CODEplease check my code and.pdfplease help with java questionsJAVA CODEplease check my code and.pdf
please help with java questionsJAVA CODEplease check my code and.pdfarishmarketing21
 
proj6Collision.javaproj6Collision.javapackage proj6;import.docx
proj6Collision.javaproj6Collision.javapackage proj6;import.docxproj6Collision.javaproj6Collision.javapackage proj6;import.docx
proj6Collision.javaproj6Collision.javapackage proj6;import.docxwkyra78
 
Domain Driven Design with the F# type System -- F#unctional Londoners 2014
Domain Driven Design with the F# type System -- F#unctional Londoners 2014Domain Driven Design with the F# type System -- F#unctional Londoners 2014
Domain Driven Design with the F# type System -- F#unctional Londoners 2014Scott Wlaschin
 

Semelhante a Forget Agile, Write Great Code First (20)

Your code smells too! Time to deodorize
Your code smells too! Time to deodorizeYour code smells too! Time to deodorize
Your code smells too! Time to deodorize
 
Speed up the mobile development process
Speed up the mobile development processSpeed up the mobile development process
Speed up the mobile development process
 
Cutting through the fog of microservices: lightsabers optional
Cutting through the fog of microservices: lightsabers optionalCutting through the fog of microservices: lightsabers optional
Cutting through the fog of microservices: lightsabers optional
 
From java to kotlin beyond alt+shift+cmd+k - Droidcon italy
From java to kotlin beyond alt+shift+cmd+k - Droidcon italyFrom java to kotlin beyond alt+shift+cmd+k - Droidcon italy
From java to kotlin beyond alt+shift+cmd+k - Droidcon italy
 
Getting the following errorsError 1 error C2436 {ctor} mem.pdf
Getting the following errorsError 1 error C2436 {ctor}  mem.pdfGetting the following errorsError 1 error C2436 {ctor}  mem.pdf
Getting the following errorsError 1 error C2436 {ctor} mem.pdf
 
I have the following code and I need to know why I am receiving the .pdf
I have the following code and I need to know why I am receiving the .pdfI have the following code and I need to know why I am receiving the .pdf
I have the following code and I need to know why I am receiving the .pdf
 
Creating a Facebook Clone - Part XX.pdf
Creating a Facebook Clone - Part XX.pdfCreating a Facebook Clone - Part XX.pdf
Creating a Facebook Clone - Part XX.pdf
 
Kill the DBA
Kill the DBAKill the DBA
Kill the DBA
 
Code Smells y Refactoring o haciendo que nuestro codigo huela (y se vea) mejo...
Code Smells y Refactoring o haciendo que nuestro codigo huela (y se vea) mejo...Code Smells y Refactoring o haciendo que nuestro codigo huela (y se vea) mejo...
Code Smells y Refactoring o haciendo que nuestro codigo huela (y se vea) mejo...
 
2017 02-07 - elastic & spark. building a search geo locator
2017 02-07 - elastic & spark. building a search geo locator2017 02-07 - elastic & spark. building a search geo locator
2017 02-07 - elastic & spark. building a search geo locator
 
2017 02-07 - elastic & spark. building a search geo locator
2017 02-07 - elastic & spark. building a search geo locator2017 02-07 - elastic & spark. building a search geo locator
2017 02-07 - elastic & spark. building a search geo locator
 
Kotlin Data Model
Kotlin Data ModelKotlin Data Model
Kotlin Data Model
 
AST Transformations at JFokus
AST Transformations at JFokusAST Transformations at JFokus
AST Transformations at JFokus
 
WINSEM2020-21_STS3105_SS_VL2020210500169_Reference_Material_I_15-Mar-2021_L15...
WINSEM2020-21_STS3105_SS_VL2020210500169_Reference_Material_I_15-Mar-2021_L15...WINSEM2020-21_STS3105_SS_VL2020210500169_Reference_Material_I_15-Mar-2021_L15...
WINSEM2020-21_STS3105_SS_VL2020210500169_Reference_Material_I_15-Mar-2021_L15...
 
using set identitiesSolutionimport java.util.Scanner; c.pdf
using set identitiesSolutionimport java.util.Scanner;  c.pdfusing set identitiesSolutionimport java.util.Scanner;  c.pdf
using set identitiesSolutionimport java.util.Scanner; c.pdf
 
F# Eye For The C# Guy - Seattle 2013
F# Eye For The C# Guy - Seattle 2013F# Eye For The C# Guy - Seattle 2013
F# Eye For The C# Guy - Seattle 2013
 
public class Person { private String name; private int age;.pdf
public class Person { private String name; private int age;.pdfpublic class Person { private String name; private int age;.pdf
public class Person { private String name; private int age;.pdf
 
please help with java questionsJAVA CODEplease check my code and.pdf
please help with java questionsJAVA CODEplease check my code and.pdfplease help with java questionsJAVA CODEplease check my code and.pdf
please help with java questionsJAVA CODEplease check my code and.pdf
 
proj6Collision.javaproj6Collision.javapackage proj6;import.docx
proj6Collision.javaproj6Collision.javapackage proj6;import.docxproj6Collision.javaproj6Collision.javapackage proj6;import.docx
proj6Collision.javaproj6Collision.javapackage proj6;import.docx
 
Domain Driven Design with the F# type System -- F#unctional Londoners 2014
Domain Driven Design with the F# type System -- F#unctional Londoners 2014Domain Driven Design with the F# type System -- F#unctional Londoners 2014
Domain Driven Design with the F# type System -- F#unctional Londoners 2014
 

Mais de Infoshare

infoShare AI Roadshow 2018 - Barbara Leśniarek (Elitmind) - ”Łapać złodzieja!...
infoShare AI Roadshow 2018 - Barbara Leśniarek (Elitmind) - ”Łapać złodzieja!...infoShare AI Roadshow 2018 - Barbara Leśniarek (Elitmind) - ”Łapać złodzieja!...
infoShare AI Roadshow 2018 - Barbara Leśniarek (Elitmind) - ”Łapać złodzieja!...Infoshare
 
infoShare AI Roadshow 2018 - Wojtek Ptak (Freshmail) - Teraz - najlepszy czas...
infoShare AI Roadshow 2018 - Wojtek Ptak (Freshmail) - Teraz - najlepszy czas...infoShare AI Roadshow 2018 - Wojtek Ptak (Freshmail) - Teraz - najlepszy czas...
infoShare AI Roadshow 2018 - Wojtek Ptak (Freshmail) - Teraz - najlepszy czas...Infoshare
 
infoShare AI Roadshow 2018 - Tomasz Brzeziński (iTaxi) - Niestandardowe metod...
infoShare AI Roadshow 2018 - Tomasz Brzeziński (iTaxi) - Niestandardowe metod...infoShare AI Roadshow 2018 - Tomasz Brzeziński (iTaxi) - Niestandardowe metod...
infoShare AI Roadshow 2018 - Tomasz Brzeziński (iTaxi) - Niestandardowe metod...Infoshare
 
infoShare AI Roadshow 2018 - Rafał Cycoń (ShelfWise.ai) - Wyzwania w tworzeni...
infoShare AI Roadshow 2018 - Rafał Cycoń (ShelfWise.ai) - Wyzwania w tworzeni...infoShare AI Roadshow 2018 - Rafał Cycoń (ShelfWise.ai) - Wyzwania w tworzeni...
infoShare AI Roadshow 2018 - Rafał Cycoń (ShelfWise.ai) - Wyzwania w tworzeni...Infoshare
 
infoShare AI Roadshow 2018 - Paweł Wyborski (QuarticON) - Jak AI pomaga sprze...
infoShare AI Roadshow 2018 - Paweł Wyborski (QuarticON) - Jak AI pomaga sprze...infoShare AI Roadshow 2018 - Paweł Wyborski (QuarticON) - Jak AI pomaga sprze...
infoShare AI Roadshow 2018 - Paweł Wyborski (QuarticON) - Jak AI pomaga sprze...Infoshare
 
infoShare AI Roadshow 2018 - Mateusz Biliński (Niebezpiecznik) - Hackowanie (...
infoShare AI Roadshow 2018 - Mateusz Biliński (Niebezpiecznik) - Hackowanie (...infoShare AI Roadshow 2018 - Mateusz Biliński (Niebezpiecznik) - Hackowanie (...
infoShare AI Roadshow 2018 - Mateusz Biliński (Niebezpiecznik) - Hackowanie (...Infoshare
 
infoShare AI Roadshow 2018 - Krzysztof Kudryński & Błażej Kubiak (TomTom) - D...
infoShare AI Roadshow 2018 - Krzysztof Kudryński & Błażej Kubiak (TomTom) - D...infoShare AI Roadshow 2018 - Krzysztof Kudryński & Błażej Kubiak (TomTom) - D...
infoShare AI Roadshow 2018 - Krzysztof Kudryński & Błażej Kubiak (TomTom) - D...Infoshare
 
infoShare AI Roadshow 2018 - Magdalena Wójcik (Data Love) - Data Science na d...
infoShare AI Roadshow 2018 - Magdalena Wójcik (Data Love) - Data Science na d...infoShare AI Roadshow 2018 - Magdalena Wójcik (Data Love) - Data Science na d...
infoShare AI Roadshow 2018 - Magdalena Wójcik (Data Love) - Data Science na d...Infoshare
 
infoShare AI Roadshow 2018 - Adrian Boguszewski (Linux Polska) - Czy sieć neu...
infoShare AI Roadshow 2018 - Adrian Boguszewski (Linux Polska) - Czy sieć neu...infoShare AI Roadshow 2018 - Adrian Boguszewski (Linux Polska) - Czy sieć neu...
infoShare AI Roadshow 2018 - Adrian Boguszewski (Linux Polska) - Czy sieć neu...Infoshare
 
infoShare AI Roadshow 2018 - Dorian Nikoniuk (Microsoft) - Usługi poznawcze, ...
infoShare AI Roadshow 2018 - Dorian Nikoniuk (Microsoft) - Usługi poznawcze, ...infoShare AI Roadshow 2018 - Dorian Nikoniuk (Microsoft) - Usługi poznawcze, ...
infoShare AI Roadshow 2018 - Dorian Nikoniuk (Microsoft) - Usługi poznawcze, ...Infoshare
 
infoShare AI Roadshow 2018 - Tomasz Kopacz (Microsoft) - jakie możliwości daj...
infoShare AI Roadshow 2018 - Tomasz Kopacz (Microsoft) - jakie możliwości daj...infoShare AI Roadshow 2018 - Tomasz Kopacz (Microsoft) - jakie możliwości daj...
infoShare AI Roadshow 2018 - Tomasz Kopacz (Microsoft) - jakie możliwości daj...Infoshare
 
infoShare AI Roadshow 2018 - Adam Karwan (Groupon) - Jak wykorzystać uczenie ...
infoShare AI Roadshow 2018 - Adam Karwan (Groupon) - Jak wykorzystać uczenie ...infoShare AI Roadshow 2018 - Adam Karwan (Groupon) - Jak wykorzystać uczenie ...
infoShare AI Roadshow 2018 - Adam Karwan (Groupon) - Jak wykorzystać uczenie ...Infoshare
 
infoShare AI Roadshow 2018 - Michał Ćwiok (Clouds on Mars) - Usługi AI w chmurze
infoShare AI Roadshow 2018 - Michał Ćwiok (Clouds on Mars) - Usługi AI w chmurzeinfoShare AI Roadshow 2018 - Michał Ćwiok (Clouds on Mars) - Usługi AI w chmurze
infoShare AI Roadshow 2018 - Michał Ćwiok (Clouds on Mars) - Usługi AI w chmurzeInfoshare
 
infoShare 2014: Peter Taylor,The Art of Productive Laziness
infoShare 2014: Peter Taylor,The Art of Productive LazinessinfoShare 2014: Peter Taylor,The Art of Productive Laziness
infoShare 2014: Peter Taylor,The Art of Productive LazinessInfoshare
 
infoShare 2014: Paweł Brodziński, Efektywny czy zajęty? Jesteś pewien, że dob...
infoShare 2014: Paweł Brodziński, Efektywny czy zajęty? Jesteś pewien, że dob...infoShare 2014: Paweł Brodziński, Efektywny czy zajęty? Jesteś pewien, że dob...
infoShare 2014: Paweł Brodziński, Efektywny czy zajęty? Jesteś pewien, że dob...Infoshare
 
infoShare 2014: Michał Sierzputowski, Testy automatyczne aplikacji webowych o...
infoShare 2014: Michał Sierzputowski, Testy automatyczne aplikacji webowych o...infoShare 2014: Michał Sierzputowski, Testy automatyczne aplikacji webowych o...
infoShare 2014: Michał Sierzputowski, Testy automatyczne aplikacji webowych o...Infoshare
 
infoShare 2014: Michał Polak, Smart Cities na wyciągnięcie smartfona.
infoShare 2014: Michał Polak, Smart Cities na wyciągnięcie smartfona.infoShare 2014: Michał Polak, Smart Cities na wyciągnięcie smartfona.
infoShare 2014: Michał Polak, Smart Cities na wyciągnięcie smartfona.Infoshare
 
infoShare 2014: Mariusz Róg, Big Data w praktyce -- jak efektywnie przetwarza...
infoShare 2014: Mariusz Róg, Big Data w praktyce -- jak efektywnie przetwarza...infoShare 2014: Mariusz Róg, Big Data w praktyce -- jak efektywnie przetwarza...
infoShare 2014: Mariusz Róg, Big Data w praktyce -- jak efektywnie przetwarza...Infoshare
 
infoShare 2014: Marek Landowski, Architektura SWIFT obiektowego przechowywani...
infoShare 2014: Marek Landowski, Architektura SWIFT obiektowego przechowywani...infoShare 2014: Marek Landowski, Architektura SWIFT obiektowego przechowywani...
infoShare 2014: Marek Landowski, Architektura SWIFT obiektowego przechowywani...Infoshare
 
infoShare 2014: Maciej Saganowski, Designing Mobile Services.
infoShare 2014: Maciej Saganowski, Designing Mobile Services.infoShare 2014: Maciej Saganowski, Designing Mobile Services.
infoShare 2014: Maciej Saganowski, Designing Mobile Services.Infoshare
 

Mais de Infoshare (20)

infoShare AI Roadshow 2018 - Barbara Leśniarek (Elitmind) - ”Łapać złodzieja!...
infoShare AI Roadshow 2018 - Barbara Leśniarek (Elitmind) - ”Łapać złodzieja!...infoShare AI Roadshow 2018 - Barbara Leśniarek (Elitmind) - ”Łapać złodzieja!...
infoShare AI Roadshow 2018 - Barbara Leśniarek (Elitmind) - ”Łapać złodzieja!...
 
infoShare AI Roadshow 2018 - Wojtek Ptak (Freshmail) - Teraz - najlepszy czas...
infoShare AI Roadshow 2018 - Wojtek Ptak (Freshmail) - Teraz - najlepszy czas...infoShare AI Roadshow 2018 - Wojtek Ptak (Freshmail) - Teraz - najlepszy czas...
infoShare AI Roadshow 2018 - Wojtek Ptak (Freshmail) - Teraz - najlepszy czas...
 
infoShare AI Roadshow 2018 - Tomasz Brzeziński (iTaxi) - Niestandardowe metod...
infoShare AI Roadshow 2018 - Tomasz Brzeziński (iTaxi) - Niestandardowe metod...infoShare AI Roadshow 2018 - Tomasz Brzeziński (iTaxi) - Niestandardowe metod...
infoShare AI Roadshow 2018 - Tomasz Brzeziński (iTaxi) - Niestandardowe metod...
 
infoShare AI Roadshow 2018 - Rafał Cycoń (ShelfWise.ai) - Wyzwania w tworzeni...
infoShare AI Roadshow 2018 - Rafał Cycoń (ShelfWise.ai) - Wyzwania w tworzeni...infoShare AI Roadshow 2018 - Rafał Cycoń (ShelfWise.ai) - Wyzwania w tworzeni...
infoShare AI Roadshow 2018 - Rafał Cycoń (ShelfWise.ai) - Wyzwania w tworzeni...
 
infoShare AI Roadshow 2018 - Paweł Wyborski (QuarticON) - Jak AI pomaga sprze...
infoShare AI Roadshow 2018 - Paweł Wyborski (QuarticON) - Jak AI pomaga sprze...infoShare AI Roadshow 2018 - Paweł Wyborski (QuarticON) - Jak AI pomaga sprze...
infoShare AI Roadshow 2018 - Paweł Wyborski (QuarticON) - Jak AI pomaga sprze...
 
infoShare AI Roadshow 2018 - Mateusz Biliński (Niebezpiecznik) - Hackowanie (...
infoShare AI Roadshow 2018 - Mateusz Biliński (Niebezpiecznik) - Hackowanie (...infoShare AI Roadshow 2018 - Mateusz Biliński (Niebezpiecznik) - Hackowanie (...
infoShare AI Roadshow 2018 - Mateusz Biliński (Niebezpiecznik) - Hackowanie (...
 
infoShare AI Roadshow 2018 - Krzysztof Kudryński & Błażej Kubiak (TomTom) - D...
infoShare AI Roadshow 2018 - Krzysztof Kudryński & Błażej Kubiak (TomTom) - D...infoShare AI Roadshow 2018 - Krzysztof Kudryński & Błażej Kubiak (TomTom) - D...
infoShare AI Roadshow 2018 - Krzysztof Kudryński & Błażej Kubiak (TomTom) - D...
 
infoShare AI Roadshow 2018 - Magdalena Wójcik (Data Love) - Data Science na d...
infoShare AI Roadshow 2018 - Magdalena Wójcik (Data Love) - Data Science na d...infoShare AI Roadshow 2018 - Magdalena Wójcik (Data Love) - Data Science na d...
infoShare AI Roadshow 2018 - Magdalena Wójcik (Data Love) - Data Science na d...
 
infoShare AI Roadshow 2018 - Adrian Boguszewski (Linux Polska) - Czy sieć neu...
infoShare AI Roadshow 2018 - Adrian Boguszewski (Linux Polska) - Czy sieć neu...infoShare AI Roadshow 2018 - Adrian Boguszewski (Linux Polska) - Czy sieć neu...
infoShare AI Roadshow 2018 - Adrian Boguszewski (Linux Polska) - Czy sieć neu...
 
infoShare AI Roadshow 2018 - Dorian Nikoniuk (Microsoft) - Usługi poznawcze, ...
infoShare AI Roadshow 2018 - Dorian Nikoniuk (Microsoft) - Usługi poznawcze, ...infoShare AI Roadshow 2018 - Dorian Nikoniuk (Microsoft) - Usługi poznawcze, ...
infoShare AI Roadshow 2018 - Dorian Nikoniuk (Microsoft) - Usługi poznawcze, ...
 
infoShare AI Roadshow 2018 - Tomasz Kopacz (Microsoft) - jakie możliwości daj...
infoShare AI Roadshow 2018 - Tomasz Kopacz (Microsoft) - jakie możliwości daj...infoShare AI Roadshow 2018 - Tomasz Kopacz (Microsoft) - jakie możliwości daj...
infoShare AI Roadshow 2018 - Tomasz Kopacz (Microsoft) - jakie możliwości daj...
 
infoShare AI Roadshow 2018 - Adam Karwan (Groupon) - Jak wykorzystać uczenie ...
infoShare AI Roadshow 2018 - Adam Karwan (Groupon) - Jak wykorzystać uczenie ...infoShare AI Roadshow 2018 - Adam Karwan (Groupon) - Jak wykorzystać uczenie ...
infoShare AI Roadshow 2018 - Adam Karwan (Groupon) - Jak wykorzystać uczenie ...
 
infoShare AI Roadshow 2018 - Michał Ćwiok (Clouds on Mars) - Usługi AI w chmurze
infoShare AI Roadshow 2018 - Michał Ćwiok (Clouds on Mars) - Usługi AI w chmurzeinfoShare AI Roadshow 2018 - Michał Ćwiok (Clouds on Mars) - Usługi AI w chmurze
infoShare AI Roadshow 2018 - Michał Ćwiok (Clouds on Mars) - Usługi AI w chmurze
 
infoShare 2014: Peter Taylor,The Art of Productive Laziness
infoShare 2014: Peter Taylor,The Art of Productive LazinessinfoShare 2014: Peter Taylor,The Art of Productive Laziness
infoShare 2014: Peter Taylor,The Art of Productive Laziness
 
infoShare 2014: Paweł Brodziński, Efektywny czy zajęty? Jesteś pewien, że dob...
infoShare 2014: Paweł Brodziński, Efektywny czy zajęty? Jesteś pewien, że dob...infoShare 2014: Paweł Brodziński, Efektywny czy zajęty? Jesteś pewien, że dob...
infoShare 2014: Paweł Brodziński, Efektywny czy zajęty? Jesteś pewien, że dob...
 
infoShare 2014: Michał Sierzputowski, Testy automatyczne aplikacji webowych o...
infoShare 2014: Michał Sierzputowski, Testy automatyczne aplikacji webowych o...infoShare 2014: Michał Sierzputowski, Testy automatyczne aplikacji webowych o...
infoShare 2014: Michał Sierzputowski, Testy automatyczne aplikacji webowych o...
 
infoShare 2014: Michał Polak, Smart Cities na wyciągnięcie smartfona.
infoShare 2014: Michał Polak, Smart Cities na wyciągnięcie smartfona.infoShare 2014: Michał Polak, Smart Cities na wyciągnięcie smartfona.
infoShare 2014: Michał Polak, Smart Cities na wyciągnięcie smartfona.
 
infoShare 2014: Mariusz Róg, Big Data w praktyce -- jak efektywnie przetwarza...
infoShare 2014: Mariusz Róg, Big Data w praktyce -- jak efektywnie przetwarza...infoShare 2014: Mariusz Róg, Big Data w praktyce -- jak efektywnie przetwarza...
infoShare 2014: Mariusz Róg, Big Data w praktyce -- jak efektywnie przetwarza...
 
infoShare 2014: Marek Landowski, Architektura SWIFT obiektowego przechowywani...
infoShare 2014: Marek Landowski, Architektura SWIFT obiektowego przechowywani...infoShare 2014: Marek Landowski, Architektura SWIFT obiektowego przechowywani...
infoShare 2014: Marek Landowski, Architektura SWIFT obiektowego przechowywani...
 
infoShare 2014: Maciej Saganowski, Designing Mobile Services.
infoShare 2014: Maciej Saganowski, Designing Mobile Services.infoShare 2014: Maciej Saganowski, Designing Mobile Services.
infoShare 2014: Maciej Saganowski, Designing Mobile Services.
 

Último

『澳洲文凭』买拉筹伯大学毕业证书成绩单办理澳洲LTU文凭学位证书
『澳洲文凭』买拉筹伯大学毕业证书成绩单办理澳洲LTU文凭学位证书『澳洲文凭』买拉筹伯大学毕业证书成绩单办理澳洲LTU文凭学位证书
『澳洲文凭』买拉筹伯大学毕业证书成绩单办理澳洲LTU文凭学位证书rnrncn29
 
Contact Rya Baby for Call Girls New Delhi
Contact Rya Baby for Call Girls New DelhiContact Rya Baby for Call Girls New Delhi
Contact Rya Baby for Call Girls New Delhimiss dipika
 
Magic exist by Marta Loveguard - presentation.pptx
Magic exist by Marta Loveguard - presentation.pptxMagic exist by Marta Loveguard - presentation.pptx
Magic exist by Marta Loveguard - presentation.pptxMartaLoveguard
 
Font Performance - NYC WebPerf Meetup April '24
Font Performance - NYC WebPerf Meetup April '24Font Performance - NYC WebPerf Meetup April '24
Font Performance - NYC WebPerf Meetup April '24Paul Calvano
 
Git and Github workshop GDSC MLRITM
Git and Github  workshop GDSC MLRITMGit and Github  workshop GDSC MLRITM
Git and Github workshop GDSC MLRITMgdsc13
 
定制(Management毕业证书)新加坡管理大学毕业证成绩单原版一比一
定制(Management毕业证书)新加坡管理大学毕业证成绩单原版一比一定制(Management毕业证书)新加坡管理大学毕业证成绩单原版一比一
定制(Management毕业证书)新加坡管理大学毕业证成绩单原版一比一Fs
 
Top 10 Interactive Website Design Trends in 2024.pptx
Top 10 Interactive Website Design Trends in 2024.pptxTop 10 Interactive Website Design Trends in 2024.pptx
Top 10 Interactive Website Design Trends in 2024.pptxDyna Gilbert
 
Elevate Your Business with Our IT Expertise in New Orleans
Elevate Your Business with Our IT Expertise in New OrleansElevate Your Business with Our IT Expertise in New Orleans
Elevate Your Business with Our IT Expertise in New Orleanscorenetworkseo
 
Blepharitis inflammation of eyelid symptoms cause everything included along w...
Blepharitis inflammation of eyelid symptoms cause everything included along w...Blepharitis inflammation of eyelid symptoms cause everything included along w...
Blepharitis inflammation of eyelid symptoms cause everything included along w...Excelmac1
 
办理(UofR毕业证书)罗切斯特大学毕业证成绩单原版一比一
办理(UofR毕业证书)罗切斯特大学毕业证成绩单原版一比一办理(UofR毕业证书)罗切斯特大学毕业证成绩单原版一比一
办理(UofR毕业证书)罗切斯特大学毕业证成绩单原版一比一z xss
 
『澳洲文凭』买詹姆士库克大学毕业证书成绩单办理澳洲JCU文凭学位证书
『澳洲文凭』买詹姆士库克大学毕业证书成绩单办理澳洲JCU文凭学位证书『澳洲文凭』买詹姆士库克大学毕业证书成绩单办理澳洲JCU文凭学位证书
『澳洲文凭』买詹姆士库克大学毕业证书成绩单办理澳洲JCU文凭学位证书rnrncn29
 
Packaging the Monolith - PHP Tek 2024 (Breaking it down one bite at a time)
Packaging the Monolith - PHP Tek 2024 (Breaking it down one bite at a time)Packaging the Monolith - PHP Tek 2024 (Breaking it down one bite at a time)
Packaging the Monolith - PHP Tek 2024 (Breaking it down one bite at a time)Dana Luther
 
定制(Lincoln毕业证书)新西兰林肯大学毕业证成绩单原版一比一
定制(Lincoln毕业证书)新西兰林肯大学毕业证成绩单原版一比一定制(Lincoln毕业证书)新西兰林肯大学毕业证成绩单原版一比一
定制(Lincoln毕业证书)新西兰林肯大学毕业证成绩单原版一比一Fs
 
定制(AUT毕业证书)新西兰奥克兰理工大学毕业证成绩单原版一比一
定制(AUT毕业证书)新西兰奥克兰理工大学毕业证成绩单原版一比一定制(AUT毕业证书)新西兰奥克兰理工大学毕业证成绩单原版一比一
定制(AUT毕业证书)新西兰奥克兰理工大学毕业证成绩单原版一比一Fs
 
Intellectual property rightsand its types.pptx
Intellectual property rightsand its types.pptxIntellectual property rightsand its types.pptx
Intellectual property rightsand its types.pptxBipin Adhikari
 
Call Girls Near The Suryaa Hotel New Delhi 9873777170
Call Girls Near The Suryaa Hotel New Delhi 9873777170Call Girls Near The Suryaa Hotel New Delhi 9873777170
Call Girls Near The Suryaa Hotel New Delhi 9873777170Sonam Pathan
 
Call Girls South Delhi Delhi reach out to us at ☎ 9711199012
Call Girls South Delhi Delhi reach out to us at ☎ 9711199012Call Girls South Delhi Delhi reach out to us at ☎ 9711199012
Call Girls South Delhi Delhi reach out to us at ☎ 9711199012rehmti665
 
定制(UAL学位证)英国伦敦艺术大学毕业证成绩单原版一比一
定制(UAL学位证)英国伦敦艺术大学毕业证成绩单原版一比一定制(UAL学位证)英国伦敦艺术大学毕业证成绩单原版一比一
定制(UAL学位证)英国伦敦艺术大学毕业证成绩单原版一比一Fs
 

Último (20)

『澳洲文凭』买拉筹伯大学毕业证书成绩单办理澳洲LTU文凭学位证书
『澳洲文凭』买拉筹伯大学毕业证书成绩单办理澳洲LTU文凭学位证书『澳洲文凭』买拉筹伯大学毕业证书成绩单办理澳洲LTU文凭学位证书
『澳洲文凭』买拉筹伯大学毕业证书成绩单办理澳洲LTU文凭学位证书
 
Contact Rya Baby for Call Girls New Delhi
Contact Rya Baby for Call Girls New DelhiContact Rya Baby for Call Girls New Delhi
Contact Rya Baby for Call Girls New Delhi
 
Magic exist by Marta Loveguard - presentation.pptx
Magic exist by Marta Loveguard - presentation.pptxMagic exist by Marta Loveguard - presentation.pptx
Magic exist by Marta Loveguard - presentation.pptx
 
Model Call Girl in Jamuna Vihar Delhi reach out to us at 🔝9953056974🔝
Model Call Girl in  Jamuna Vihar Delhi reach out to us at 🔝9953056974🔝Model Call Girl in  Jamuna Vihar Delhi reach out to us at 🔝9953056974🔝
Model Call Girl in Jamuna Vihar Delhi reach out to us at 🔝9953056974🔝
 
Font Performance - NYC WebPerf Meetup April '24
Font Performance - NYC WebPerf Meetup April '24Font Performance - NYC WebPerf Meetup April '24
Font Performance - NYC WebPerf Meetup April '24
 
young call girls in Uttam Nagar🔝 9953056974 🔝 Delhi escort Service
young call girls in Uttam Nagar🔝 9953056974 🔝 Delhi escort Serviceyoung call girls in Uttam Nagar🔝 9953056974 🔝 Delhi escort Service
young call girls in Uttam Nagar🔝 9953056974 🔝 Delhi escort Service
 
Git and Github workshop GDSC MLRITM
Git and Github  workshop GDSC MLRITMGit and Github  workshop GDSC MLRITM
Git and Github workshop GDSC MLRITM
 
定制(Management毕业证书)新加坡管理大学毕业证成绩单原版一比一
定制(Management毕业证书)新加坡管理大学毕业证成绩单原版一比一定制(Management毕业证书)新加坡管理大学毕业证成绩单原版一比一
定制(Management毕业证书)新加坡管理大学毕业证成绩单原版一比一
 
Top 10 Interactive Website Design Trends in 2024.pptx
Top 10 Interactive Website Design Trends in 2024.pptxTop 10 Interactive Website Design Trends in 2024.pptx
Top 10 Interactive Website Design Trends in 2024.pptx
 
Elevate Your Business with Our IT Expertise in New Orleans
Elevate Your Business with Our IT Expertise in New OrleansElevate Your Business with Our IT Expertise in New Orleans
Elevate Your Business with Our IT Expertise in New Orleans
 
Blepharitis inflammation of eyelid symptoms cause everything included along w...
Blepharitis inflammation of eyelid symptoms cause everything included along w...Blepharitis inflammation of eyelid symptoms cause everything included along w...
Blepharitis inflammation of eyelid symptoms cause everything included along w...
 
办理(UofR毕业证书)罗切斯特大学毕业证成绩单原版一比一
办理(UofR毕业证书)罗切斯特大学毕业证成绩单原版一比一办理(UofR毕业证书)罗切斯特大学毕业证成绩单原版一比一
办理(UofR毕业证书)罗切斯特大学毕业证成绩单原版一比一
 
『澳洲文凭』买詹姆士库克大学毕业证书成绩单办理澳洲JCU文凭学位证书
『澳洲文凭』买詹姆士库克大学毕业证书成绩单办理澳洲JCU文凭学位证书『澳洲文凭』买詹姆士库克大学毕业证书成绩单办理澳洲JCU文凭学位证书
『澳洲文凭』买詹姆士库克大学毕业证书成绩单办理澳洲JCU文凭学位证书
 
Packaging the Monolith - PHP Tek 2024 (Breaking it down one bite at a time)
Packaging the Monolith - PHP Tek 2024 (Breaking it down one bite at a time)Packaging the Monolith - PHP Tek 2024 (Breaking it down one bite at a time)
Packaging the Monolith - PHP Tek 2024 (Breaking it down one bite at a time)
 
定制(Lincoln毕业证书)新西兰林肯大学毕业证成绩单原版一比一
定制(Lincoln毕业证书)新西兰林肯大学毕业证成绩单原版一比一定制(Lincoln毕业证书)新西兰林肯大学毕业证成绩单原版一比一
定制(Lincoln毕业证书)新西兰林肯大学毕业证成绩单原版一比一
 
定制(AUT毕业证书)新西兰奥克兰理工大学毕业证成绩单原版一比一
定制(AUT毕业证书)新西兰奥克兰理工大学毕业证成绩单原版一比一定制(AUT毕业证书)新西兰奥克兰理工大学毕业证成绩单原版一比一
定制(AUT毕业证书)新西兰奥克兰理工大学毕业证成绩单原版一比一
 
Intellectual property rightsand its types.pptx
Intellectual property rightsand its types.pptxIntellectual property rightsand its types.pptx
Intellectual property rightsand its types.pptx
 
Call Girls Near The Suryaa Hotel New Delhi 9873777170
Call Girls Near The Suryaa Hotel New Delhi 9873777170Call Girls Near The Suryaa Hotel New Delhi 9873777170
Call Girls Near The Suryaa Hotel New Delhi 9873777170
 
Call Girls South Delhi Delhi reach out to us at ☎ 9711199012
Call Girls South Delhi Delhi reach out to us at ☎ 9711199012Call Girls South Delhi Delhi reach out to us at ☎ 9711199012
Call Girls South Delhi Delhi reach out to us at ☎ 9711199012
 
定制(UAL学位证)英国伦敦艺术大学毕业证成绩单原版一比一
定制(UAL学位证)英国伦敦艺术大学毕业证成绩单原版一比一定制(UAL学位证)英国伦敦艺术大学毕业证成绩单原版一比一
定制(UAL学位证)英国伦敦艺术大学毕业证成绩单原版一比一
 

Forget Agile, Write Great Code First

  • 1. Forget about Agile …Let’s write great code first Gino Marckx
  • 2. We are uncovering better ways of developing software by doing it and helping others do it. Through this work we have come to value That is, while there is value in the items on the right, we value items on the left more. Kent Beck - Mike Beedle - Arie van Bennekum - Alistair Cockburn - Ward Cunningham - Martin Fowler - James Grenning - Jim Highsmith Andrew Hunt - Ron Jeffries - John Kern - Brian Marick - Robert C. Martin - Steve Mellor - Ken Schwaber - Jeff Sutherland - Dave Thomas ignore ©2001, the above authors - this declaration may be freely copied in any form, but only in its entirety through this notice. INDIVIDUALS and INTERACTIONS
 over PROCESSES and TOOLS WORKING SOFTWARE
 over COMPREHENSIVE DOCUMENTATION RESPONDING to CHANGE
 over FOLLOWING a PLAN CUSTOMER COLLABORATION
 over CONTRACT NEGOTIATION
  • 3. INDIVIDUALS and INTERACTIONS
 over PROCESSES and TOOLS WORKING SOFTWARE
 over COMPREHENSIVE DOCUMENTATION RESPONDING to CHANGE
 over FOLLOWING a PLAN CUSTOMER COLLABORATION
 over CONTRACT NEGOTIATION
  • 5. CRAFTSMANSHIP
 over CRAP cahbn Chris Hedgate - https://www.flickr.com/photos/chrishedgate/3047997427
  • 7. Working as a team Building the right thing
  • 9. public class Person { public String m_name; public String m_street; public String m_zip; public String m_city; public String m_province; public String m_country; public Person(String name, String country) { ... } public Person(String name, String town, String country) { ... } public Person(String name, String s, String z, String c, String p, String country) { ... } 
 public void add(Person person) { ... } public final List getFriends() { ... } public double between(Person person) { ... } public Person closestFriend() { ... } } Working as a team
  • 10. public class Person { public String m_name; public String m_street; public String m_zip; public String m_city; public String m_province; public String m_country; public Person(String name, String country) { ... } public Person(String name, String town, String country) { ... } public Person(String name, String s, String z, String c, String p, String country) { ... } 
 public void add(Person person) { ... } public final List getFriends() { ... } public double between(Person person) { ... } public Person closestFriend() { ... } } Working as a team
  • 11. public class Person { public String m_name; public String m_street; public String m_zip; public String m_city; public String m_province; public String m_country; public Person(String name, String country) { ... } public Person(String name, String town, String country) { ... } public Person(String name, String s, String z, String c, String p, String country) { ... } 
 public void add(Person person) { ... } public final List getFriends() { ... } public double between(Person person) { ... } public Person closestFriend() { ... } } Working as a team
  • 12. public class Person { public String m_name; public String m_street; public String m_zip; public String m_city; public String m_province; public String m_country; public Person(String name, String country) { ... } public Person(String name, String town, String country) { ... } public Person(String name, String s, String z, String c, String p, String country) { ... } 
 public void add(Person person) { ... } public final List getFriends() { ... } public double between(Person person) { ... } public Person closestFriend() { ... } } Working as a team
  • 14. public class Person { public String name; public Address address; public Person(String name, Address address) { ... } public void addFriend(Person person) { ... } public List<Person> getFriends() { ... } /** * Find the friend who lives closest. * * @return the friend who lives closest * @throws NoSuchElementException in case this person has no friends */ public Person getNearestFriend() { ... } } Working as a team
  • 15. public class Person { public String name; public Address address; public Person(String name, Address address) { ... } public void addFriend(Person person) { ... } public List<Person> getFriends() { ... } /** * Find the friend who lives closest. * * @return the friend who lives closest * @throws NoSuchElementException in case this person has no friends */ public Person getNearestFriend() { ... } } Working as a team
  • 16. public class Person { public String name; public Address address; public Person(String name, Address address) { ... } public void addFriend(Person person) { ... } public List<Person> getFriends() { ... } /** * Find the friend who lives closest. * * @return the friend who lives closest * @throws NoSuchElementException in case this person has no friends */ public Person getNearestFriend() { ... } } Working as a team
  • 17. Building the right thing Test Automation
  • 18. public class Address { public Address(String country) { ... } public Address(String city, String country) { ... } public Address(String street, String zipCode, String city, String state, String country) { ... } public String getStreet() { ... } public String getZip() { ... } public String getCity() { ... } public String getState() { ... } public String getCountry() { ... } ! public Point getGeographicalLocation() { ... } ! /** * Calculate the distance in kilometers to another address. * * @param anotherAddress the other address to calculate the distance to * @return the distance in kilometers between this address and the other * address * @throws IllegalArgumentException when location of either address is * unknown */ public double distanceTo(Address anotherAddress) { ... } } Building the right thing
  • 19. public class Address { public Address(String country) { ... } public Address(String city, String country) { ... } public Address(String street, String zipCode, String city, String state, String country) { ... } public String getStreet() { ... } public String getZip() { ... } public String getCity() { ... } public String getState() { ... } public String getCountry() { ... } ! public Point getGeographicalLocation() { ... } ! /** * Calculate the distance in kilometers to another address. * * @param anotherAddress the other address to calculate the distance to * @return the distance in kilometers between this address and the other * address * @throws IllegalArgumentException when location of either address is * unknown */ public double distanceTo(Address anotherAddress) { ... } } Building the right thing
  • 20. public class Address { public Address(String country) { ... } public Address(String city, String country) { ... } public Address(String street, String zipCode, String city, String state, String country) { ... } public String getStreet() { ... } public String getZip() { ... } public String getCity() { ... } public String getState() { ... } public String getCountry() { ... } ! public Point getGeographicalLocation() { ... } ! /** * Calculate the distance in kilometers to another address. * * @param anotherAddress the other address to calculate the distance to * @return the distance in kilometers between this address and the other * address * @throws IllegalArgumentException when location of either address is * unknown */ public double distanceTo(Address anotherAddress) { ... } } Building the right thing
  • 21. public class Address { public Address(String country) { ... } public Address(String city, String country) { ... } public Address(String street, String zipCode, String city, String state, String country) { ... } public String getStreet() { ... } public String getZip() { ... } public String getCity() { ... } public String getState() { ... } public String getCountry() { ... } ! public Point getGeographicalLocation() { ... } ! /** * Calculate the distance in kilometers to another address. * * @param anotherAddress the other address to calculate the distance to * @return the distance in kilometers between this address and the other * address * @throws IllegalArgumentException when location of either address is * unknown */ public double distanceTo(Address anotherAddress) { ... } } Building the right thing
  • 23. public class Address { ... public static void setAddressLocator(AddressLocator locator) { ... } ... } ! ! public class AddressTest { public AddressLocator createMockLocatorWithPolandCentreOfTheUniverse() { ... } ! @Test public void testDistanceTo() { Address.setAddressLocator( createMockLocatorWithPolandCentreOfTheUniverse()); Address polishAddress = new Address("Poland"); assertEquals(1000, polishAddress.distanceTo(new Address("Canada"))); } } Building the right thing
  • 24. Working as a team Building the right thing Building it right
  • 27. We are uncovering better ways of developing software by doing it and helping others do it. Through this work we have come to value That is, while there is value in the items on the right, we value items on the left more. Kent Beck - Mike Beedle - Arie van Bennekum - Alistair Cockburn - Ward Cunningham - Martin Fowler - James Grenning - Jim Highsmith Andrew Hunt - Ron Jeffries - John Kern - Brian Marick - Robert C. Martin - Steve Mellor - Ken Schwaber - Jeff Sutherland - Dave Thomas ignore ©2001, the above authors - this declaration may be freely copied in any form, but only in its entirety through this notice. INDIVIDUALS and INTERACTIONS
 over PROCESSES and TOOLS WORKING SOFTWARE
 over COMPREHENSIVE DOCUMENTATION RESPONSING to CHANGE
 over FOLLOWING a PLAN CUSTOMER COLLABORATION
 over CONTRACT NEGOTIATION
  • 30. Forget About Agile Excel at Software Engineering
  • 31. Thank you! Gino Marckx Director Agile Competency Center