31
Forget about Agile …Let’s write great code first Gino Marckx

infoShare 2014: Gino Marckx, Forget about Agile, let's write great code first!

  • View
    163

  • Download
    0

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: infoShare 2014: Gino Marckx, Forget about Agile, let's write great code first!

Forget about Agile …Let’s write great code first

Gino Marckx

Page 2: infoShare 2014: Gino Marckx, Forget about Agile, let's write great code first!

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

Page 3: infoShare 2014: Gino Marckx, Forget about Agile, let's write great code first!

INDIVIDUALS and INTERACTIONSover PROCESSES and TOOLS

WORKING SOFTWAREover COMPREHENSIVE DOCUMENTATION

RESPONDING to CHANGEover FOLLOWING a PLAN

CUSTOMER COLLABORATION over CONTRACT NEGOTIATION

Page 4: infoShare 2014: Gino Marckx, Forget about Agile, let's write great code first!

Building it Right

Page 5: infoShare 2014: Gino Marckx, Forget about Agile, let's write great code first!

CRAFTSMANSHIPover CRAP

cahbn Chris Hedgate - https://www.flickr.com/photos/chrishedgate/3047997427

Page 6: infoShare 2014: Gino Marckx, Forget about Agile, let's write great code first!

Quality !

Maintainable/Extensible

Page 7: infoShare 2014: Gino Marckx, Forget about Agile, let's write great code first!

Working as a team

Building the right thing

Page 8: infoShare 2014: Gino Marckx, Forget about Agile, let's write great code first!

Collective Code Ownership

Working as a team

Page 9: infoShare 2014: Gino Marckx, Forget about Agile, let's write great code first!

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

Page 10: infoShare 2014: Gino Marckx, Forget about Agile, let's write great code first!

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

Page 11: infoShare 2014: Gino Marckx, Forget about Agile, let's write great code first!

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

Page 12: infoShare 2014: Gino Marckx, Forget about Agile, let's write great code first!

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

Page 13: infoShare 2014: Gino Marckx, Forget about Agile, let's write great code first!

The Wallaroo Prints © 2011

Page 14: infoShare 2014: Gino Marckx, Forget about Agile, let's write great code first!

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

Page 15: infoShare 2014: Gino Marckx, Forget about Agile, let's write great code first!

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

Page 16: infoShare 2014: Gino Marckx, Forget about Agile, let's write great code first!

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

Page 17: infoShare 2014: Gino Marckx, Forget about Agile, let's write great code first!

Building the right thing

Test Automation

Page 18: infoShare 2014: Gino Marckx, Forget about Agile, let's write great code first!

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

Page 19: infoShare 2014: Gino Marckx, Forget about Agile, let's write great code first!

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

Page 20: infoShare 2014: Gino Marckx, Forget about Agile, let's write great code first!

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

Page 21: infoShare 2014: Gino Marckx, Forget about Agile, let's write great code first!

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

Page 22: infoShare 2014: Gino Marckx, Forget about Agile, let's write great code first!

The Wallaroo Prints © 2011

Page 23: infoShare 2014: Gino Marckx, Forget about Agile, let's write great code first!

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

Page 24: infoShare 2014: Gino Marckx, Forget about Agile, let's write great code first!

Working as a team

Building the right thing

Building it right

Page 25: infoShare 2014: Gino Marckx, Forget about Agile, let's write great code first!

about 56,400,000 results

Page 26: infoShare 2014: Gino Marckx, Forget about Agile, let's write great code first!

http://www.zazzle.ca/comments_a_deodorant_to_mask_code_smells_tshirt-235182622652051339

Page 27: infoShare 2014: Gino Marckx, Forget about Agile, let's write great code first!

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

Page 28: infoShare 2014: Gino Marckx, Forget about Agile, let's write great code first!

better waysof developing software

Page 29: infoShare 2014: Gino Marckx, Forget about Agile, let's write great code first!

CRAFTSMANSHIPover CRAP

Page 30: infoShare 2014: Gino Marckx, Forget about Agile, let's write great code first!

Forget About Agile

Excel at Software Engineering

Page 31: infoShare 2014: Gino Marckx, Forget about Agile, let's write great code first!

Thank you!

Gino Marckx Director Agile Competency Center