Design is a process, not a Document

5,107 views

Published on

Presentation given at the Virtual JUG 21st Nov 2013. Video here: http://www.youtube.com/watch?v=GixwXNlZ7dI

Published in: Technology, News & Politics
0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
5,107
On SlideShare
0
From Embeds
0
Number of Embeds
3,636
Actions
Shares
0
Downloads
14
Comments
0
Likes
3
Embeds 0
No embeds

No notes for slide

Design is a process, not a Document

  1. 1. #vJUG Design is a Process, not a Document Trisha Gee, Java Driver Developer @trisha_gee
  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
  3. 3. Managing the Development of Large Software Systems - Dr Winston Royce http://www.cs.umd.edu/class/spring2003/cmsc838p/Process/waterfall.pdf
  4. 4. <This Page Left Intentionally Blank> Agile Design
  5. 5. Design is a Process, not a Document
  6. 6. The Problem
  7. 7. Constraints:
  8. 8. Backwards Compatibility
  9. 9. > What do you want to do? >_
  10. 10. Design is a Process, not a Document
  11. 11. Bugs and Defects Unknown Architecture On Time and Under Budget New Features Inconsistencies Lack of Experience Unclear Objectives
  12. 12. Bugs and Defects Unknown Architecture On Time and Under Budget New Features Inconsistencies You Are Here Lack of Experience Unclear Objectives
  13. 13. Bugs and Defects Unknown Architecture On Time and Under Budget New Features Inconsistencies You Are Here Lack of Experience Unclear Objectives
  14. 14. 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
  15. 15. 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
  16. 16. 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
  17. 17. 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
  18. 18. 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
  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
  20. 20. Where do I start?
  21. 21. > 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? > _
  22. 22. Maintainability Spe ed Tes tabi lity onsistency C si on C cy ten s ability Read Im mu t ab il ity
  23. 23. Design Goals • Consistency • Cleaner design • Intuitive API • Understandable Exceptions • Test friendly • Backwards compatible
  24. 24. In The North Tower...
  25. 25. Lack of consistency
  26. 26. > What do you want to do? >_
  27. 27. Why bother?
  28. 28. Our Solution • Static analysis • Build tools • Discipline
  29. 29. Win!
  30. 30. Meanwhile, in the East...
  31. 31. Other adventurers!
  32. 32. > What do you want to do? >_
  33. 33. Our Solution • Get them onboard • Use the Scala driver as the guinea pig • Give Morphia some love • Talk to Spring • Tests are your friends
  34. 34. Lurking All Around...
  35. 35. Backward Compatibility
  36. 36. > What do you want to do? >_
  37. 37. Our Solution • An architecture • Supports both APIs • ...bonus of supporting other APIs too • Tests tell us if we’ve done it right
  38. 38. On the Southern Front
  39. 39. The Public API
  40. 40. > What do you want to do? >_
  41. 41. Our Solution
  42. 42. Our Solution • Committees • Documents / Spreadsheets • Meetings • Research
  43. 43. Our Solution • Committees • Documents / Spreadsheets • Meetings • Research • Hack Days • Conferences • Early Access
  44. 44. Retrospective
  45. 45. 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
  46. 46. Conclusion
  47. 47. Tools
  48. 48. Your Inventory • Your Technical Skills • Your Domain Knowledge • Your Life Experience • Your Questions
  49. 49. Environmental Inventory • The Domain • The People • The Hardware • Chosen Technology • Existing Code / Application / Platform
  50. 50. Your Inventory Grows • Skills you learn • Tools you research • Team changes
  51. 51. Some Examples • Tests. Always a Good Thing • Static Analysis • An automated build • Bug/feature tracker • Visibility of WIP
  52. 52. Design is a Process, not a Document
  53. 53. #vJUG @trisha_gee Questions http://is.gd/java3mongodb

×