infoShare 2014: Gino Marckx, Forget about Agile, let's write great code first!
-
date post
21-Oct-2014 -
Category
Internet
-
view
161 -
download
0
description
Transcript of infoShare 2014: Gino Marckx, Forget about Agile, let's write great code first!
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 INTERACTIONSover PROCESSES and TOOLS
WORKING SOFTWAREover COMPREHENSIVE DOCUMENTATION
RESPONDING to CHANGEover FOLLOWING a PLAN
CUSTOMER COLLABORATION over CONTRACT NEGOTIATION
INDIVIDUALS and INTERACTIONSover PROCESSES and TOOLS
WORKING SOFTWAREover COMPREHENSIVE DOCUMENTATION
RESPONDING to CHANGEover FOLLOWING a PLAN
CUSTOMER COLLABORATION over CONTRACT NEGOTIATION
Building it Right
CRAFTSMANSHIPover 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 INTERACTIONSover PROCESSES and TOOLS
WORKING SOFTWAREover COMPREHENSIVE DOCUMENTATION
RESPONSING to CHANGEover FOLLOWING a PLAN
CUSTOMER COLLABORATION over CONTRACT NEGOTIATION
better waysof developing software
CRAFTSMANSHIPover CRAP
Forget About Agile
Excel at Software Engineering
Thank you!
Gino Marckx Director Agile Competency Center