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 ...
INDIVIDUALS and INTERACTIONS

over PROCESSES and TOOLS
WORKING SOFTWARE

over COMPREHENSIVE DOCUMENTATION
RESPONDING to CH...
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 class Person {	
	 public String m_name;	
	 public String m_street;	
	 public String m_zip;	
	 public String m_city;...
public class Person {	
	 public String m_name;	
	 public String m_street;	
	 public String m_zip;	
	 public String m_city;...
public class Person {	
	 public String m_name;	
	 public String m_street;	
	 public String m_zip;	
	 public String m_city;...
The Wallaroo Prints © 2011
public class Person {	
	 public String name;	
	 public Address address;	
	 	
	 public Person(String name, Address address)...
public class Person {	
	 public String name;	
	 public Address address;	
	 	
	 public Person(String name, Address address)...
public class Person {	
	 public String name;	
	 public Address address;	
	 	
	 public Person(String name, Address address)...
Building the right thing
Test Automation
public class Address {	
	 public Address(String country) { ... }	
	 public Address(String city, String country) { ... }	
	...
public class Address {	
	 public Address(String country) { ... }	
	 public Address(String city, String country) { ... }	
	...
public class Address {	
	 public Address(String country) { ... }	
	 public Address(String city, String country) { ... }	
	...
public class Address {	
	 public Address(String country) { ... }	
	 public Address(String city, String country) { ... }	
	...
The Wallaroo Prints © 2011
public class Address {	
	 ...	
	 public static void setAddressLocator(AddressLocator locator) { ... }	
	 ...	
}	
!
!
publi...
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 ...
better ways

of developing software
CRAFTSMANSHIP

over CRAP
Forget About Agile
Excel at Software
Engineering
Thank you!
Gino Marckx
Director Agile Competency Center
Upcoming SlideShare
Loading in …5
×

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

469 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
469
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
2
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

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

  1. 1. Forget about Agile …Let’s write great code first Gino Marckx
  2. 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. 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
  4. 4. Building it Right
  5. 5. CRAFTSMANSHIP
 over CRAP cahbn Chris Hedgate - https://www.flickr.com/photos/chrishedgate/3047997427
  6. 6. Quality ! Maintainable/ Extensible
  7. 7. Working as a team Building the right thing
  8. 8. Collective Code Ownership Working as a team
  9. 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. 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. 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. 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
  13. 13. The Wallaroo Prints © 2011
  14. 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. 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. 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. 17. Building the right thing Test Automation
  18. 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. 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. 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. 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
  22. 22. The Wallaroo Prints © 2011
  23. 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. 24. Working as a team Building the right thing Building it right
  25. 25. about 56,400,000 results
  26. 26. http://www.zazzle.ca/comments_a_deodorant_to_mask_code_smells_tshirt-235182622652051339
  27. 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
  28. 28. better ways
 of developing software
  29. 29. CRAFTSMANSHIP
 over CRAP
  30. 30. Forget About Agile Excel at Software Engineering
  31. 31. Thank you! Gino Marckx Director Agile Competency Center

×