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