Thursday 21 March 2013

LJC Event - Trisha Gee's Design Talk

Tonight I managed to attend an awesome talk by Trisha Gee entitled: What do you mean, backwards compatibility?

Overall I found the talk to be a fantastic insight into software design and has inspired me to read into a load of other topics :)

Lessons

  • Setting "Design Goals" gives you good guidance without being overly prescriptive.
    • Remember good design is supposed to help you produce good code.
    • An example is immutability, it is good design for achieving the goal of thread safe code. 
  • "Design is a Process, not an Artefact"
    • Design documentation is supposed to enable good change, i.e. UML can highlight concepts that need to be readdressed.
    • However documentation is out of date as soon as it is written, code should be self descriptive and design should stand out.
  • Great API design has "User Empathy"
    • You heard of achieving high performance though "Mechanical Sympathy", well now we have the "User Empathy" too ;) Heard it here first :P

Further Reading

  • Domain Driven Design - aren't we doing this already? I need to read more!
  • Fluent Interfaces - this is more than just method chaining, can this be used outside of building?
  • Strategy Pattern - not something I used much but potentially very useful, too many if statements!
  • Behaviour Driven Development - So this is all the TDD practices I've been learning without knowing it? Awesome! I want to learn this properly!

Feedback

  • Finally some feedback on Trisha's actual talk...
  • The talk could do with a stronger introduction and focus more on design, it isn't really focussed on the MongoDB Java Driver and I don't think that is a bad thing!
  • Really love the Monsters/Safe Houses analogy, gave really good structure to the talk and it is a beautifully simple analogy. 

No comments:

Post a Comment