Successfully reported this slideshow.

Design is a Process, not an Artefact - Trisha Gee (MongoDB)

666 views

Published on

Presented at JAX London 2013

Agile methodologies have had us moving away from Big Up Front Design to evolutionary, emergent design. But how does that work in the real world? Using experiences gained when creating the new Java driver for MongoDB, Trisha takes us on a design journey, where the answer to every question is "It Depends", the users of the system and their use cases are unknown, and lurking at the back of every decision is the question “but will it be backwards compatible?” We’ve all been there, trying to work out how to implement requirements, but have we really thought about the process of design?

Published in: Technology, News & Politics
  • Be the first to comment

  • Be the first to like this

Design is a Process, not an Artefact - Trisha Gee (MongoDB)

  1. 1. #JAXLondon Design is a Process, not a Document Trisha Gee, Java Driver Developer @trisha_gee Tuesday, 29 October 13
  2. 2. Design: translate the requirements in a specification that describes the global architecture and the functionality of the system. http://homepages.cwi.nl/~paulk/patents/isnot/node4.html Tuesday, 29 October 13
  3. 3. Managing the Development of Large Software Systems - Dr Winston Royce http://www.cs.umd.edu/class/spring2003/cmsc838p/Process/waterfall.pdf Tuesday, 29 October 13
  4. 4. <This Page Left Intentionally Blank> Agile Design Tuesday, 29 October 13
  5. 5. Design is a Process, not a Document Tuesday, 29 October 13
  6. 6. The Problem Tuesday, 29 October 13
  7. 7. Tuesday, 29 October 13
  8. 8. Tuesday, 29 October 13
  9. 9. Tuesday, 29 October 13
  10. 10. Tuesday, 29 October 13
  11. 11. Constraints: Tuesday, 29 October 13
  12. 12. Backwards Compatibility Tuesday, 29 October 13
  13. 13. > What do you want to do? >_ Tuesday, 29 October 13
  14. 14. > What do you want to do? >_ Tuesday, 29 October 13
  15. 15. Design is a Process, not a Document Tuesday, 29 October 13
  16. 16. Bugs and Defects Unknown Architecture On Time and Under Budget New Features Inconsistencies Lack of Experience Tuesday, 29 October 13 Unclear Objectives
  17. 17. Bugs and Defects Unknown Architecture On Time and Under Budget New Features Inconsistencies You Are Here Lack of Experience Tuesday, 29 October 13 Unclear Objectives
  18. 18. Bugs and Defects Unknown Architecture On Time and Under Budget New Features Inconsistencies You Are Here Lack of Experience Tuesday, 29 October 13 Unclear Objectives
  19. 19. Bugs and Defects ...and here New Features Unknown Architecture ...and here On Time and Under Budget ...and here Inconsistencies You Are Here ...and here Unclear Objectives Lack of Experience ...and here Tuesday, 29 October 13
  20. 20. Bugs and Defects ...and here New Features Unknown Architecture ...and here On Time and Under Budget ...and here Inconsistencies You Are Here ...and here Unclear Objectives Lack of Experience ...and here Tuesday, 29 October 13
  21. 21. Bugs and Defects ...and here New Features Unknown Architecture ...and here On Time and Under Budget ...and here Inconsistencies You Are Here ...and here Unclear Objectives Lack of Experience ...and here Tuesday, 29 October 13
  22. 22. Bugs and Defects ...and here New Features Unknown Architecture ...and here On Time and Under Budget ...and here Inconsistencies You Are Here ...and here Unclear Objectives Lack of Experience ...and here Tuesday, 29 October 13
  23. 23. Bugs and Defects ...and here New Features Unknown Architecture ...and here On Time and Under Budget ...and here Inconsistencies You Are Here ...and here Unclear Objectives Lack of Experience ...and here Tuesday, 29 October 13
  24. 24. Bugs and Defects ...and here New Features Unknown Architecture ...and here On Time and Under Budget ...and here Inconsistencies You Are Here ...and here Unclear Objectives Lack of Experience ...and here Tuesday, 29 October 13
  25. 25. Where do I start? Tuesday, 29 October 13
  26. 26. > You are in a cluttered code base. Everywhere you turn you see different people’s styles. > There are bugs to be fixed, and new features that must be implemented. > Some users suggest improvements to your product, others will kill you if you change a thing. > What do you want to do? > _ Tuesday, 29 October 13
  27. 27. Maintainability Spe ed Tes tabi lity onsistency C Tuesday, 29 October 13 si on C cy ten s ability Read Im mu t ab il ity
  28. 28. Design Goals • Consistency • Cleaner design • Intuitive API • Understandable Exceptions • Test friendly • Backwards compatible Tuesday, 29 October 13
  29. 29. In The North Tower... Tuesday, 29 October 13
  30. 30. Lack of consistency Tuesday, 29 October 13
  31. 31. > What do you want to do? >_ Tuesday, 29 October 13
  32. 32. > What do you want to do? >_ Tuesday, 29 October 13
  33. 33. Why bother? Tuesday, 29 October 13
  34. 34. Our Solution • Static analysis • Build tools • Discipline Tuesday, 29 October 13
  35. 35. Win! Tuesday, 29 October 13
  36. 36. Meanwhile, in the East... Tuesday, 29 October 13
  37. 37. Other adventurers! Tuesday, 29 October 13
  38. 38. > What do you want to do? >_ Tuesday, 29 October 13
  39. 39. > What do you want to do? >_ Tuesday, 29 October 13
  40. 40. Our Solution • Get them onboard • Use the Scala driver as the guinea pig • Give Morphia some love • Talk to Spring • Tests are your friends Tuesday, 29 October 13
  41. 41. Lurking All Around... Tuesday, 29 October 13
  42. 42. Backward Compatibility Tuesday, 29 October 13
  43. 43. > What do you want to do? >_ Tuesday, 29 October 13
  44. 44. > What do you want to do? >_ Tuesday, 29 October 13
  45. 45. Our Solution • An architecture • Supports both APIs • ...bonus of supporting other APIs too • Tests tell us if we’ve done it right Tuesday, 29 October 13
  46. 46. On the Southern Front Tuesday, 29 October 13
  47. 47. The Public API Tuesday, 29 October 13
  48. 48. > What do you want to do? >_ Tuesday, 29 October 13
  49. 49. > What do you want to do? >_ Tuesday, 29 October 13
  50. 50. Our Solution Tuesday, 29 October 13
  51. 51. Our Solution • Committees • Documents / Spreadsheets • Meetings • Research Tuesday, 29 October 13
  52. 52. Our Solution • Committees • Documents / Spreadsheets • Meetings • Research • Hack Days • Conferences • Early Access Tuesday, 29 October 13
  53. 53. Retrospective Tuesday, 29 October 13
  54. 54. I wish... • I had asked more questions. • Particularly “why” • I better understood my priorities • We could use the whiteboard more • I had focussed on tests even more Tuesday, 29 October 13
  55. 55. Conclusion Tuesday, 29 October 13
  56. 56. Tuesday, 29 October 13
  57. 57. Tools Tuesday, 29 October 13
  58. 58. Your Inventory • Your Technical Skills • Your Domain Knowledge • Your Life Experience • Your Questions Tuesday, 29 October 13
  59. 59. Environmental Inventory • The Domain • The People • The Hardware • Chosen Technology • Existing Code / Application / Platform Tuesday, 29 October 13
  60. 60. Your Inventory Grows • Skills you learn • Tools you research • Team changes Tuesday, 29 October 13
  61. 61. Some Examples • Tests. Always a Good Thing • Static Analysis • An automated build • Bug/feature tracker • Visibility of WIP Tuesday, 29 October 13
  62. 62. Design is a Process, not a Document Tuesday, 29 October 13
  63. 63. #JAXLondon @trisha_gee Questions http://is.gd/java3mongodb Tuesday, 29 October 13

×