Download - Discovering patterns
![Page 1: Discovering patterns](https://reader030.vdocument.in/reader030/viewer/2022020123/558ea7421a28abee118b45f2/html5/thumbnails/1.jpg)
Discovering Patterns
Learning Lunch 2012 SeriesZach Dennis
![Page 2: Discovering patterns](https://reader030.vdocument.in/reader030/viewer/2022020123/558ea7421a28abee118b45f2/html5/thumbnails/2.jpg)
The Purpose Of This Lunch
Re-introduce/refresh patternsSeek out, discover, and expose patternsShare internally, better our teamShare externally, better the world
![Page 3: Discovering patterns](https://reader030.vdocument.in/reader030/viewer/2022020123/558ea7421a28abee118b45f2/html5/thumbnails/3.jpg)
Patterns
![Page 4: Discovering patterns](https://reader030.vdocument.in/reader030/viewer/2022020123/558ea7421a28abee118b45f2/html5/thumbnails/4.jpg)
Patterns Are Everywhere
Nature Science Man-Made
Art Software
![Page 5: Discovering patterns](https://reader030.vdocument.in/reader030/viewer/2022020123/558ea7421a28abee118b45f2/html5/thumbnails/5.jpg)
Software Patterns
low level bit pushing
high-level concepts and abstractions
programming languagesframeworks
architectural
UX, IX, IA
ProcessDomain
![Page 6: Discovering patterns](https://reader030.vdocument.in/reader030/viewer/2022020123/558ea7421a28abee118b45f2/html5/thumbnails/6.jpg)
Even we don’t see them, they exist
Even when we don’t consciously apply them, we employ them
Even when we can’t articulate them, they still have a definition
![Page 7: Discovering patterns](https://reader030.vdocument.in/reader030/viewer/2022020123/558ea7421a28abee118b45f2/html5/thumbnails/7.jpg)
Defined
Intuitive
Unknown
3 Categories Of Patterns
![Page 8: Discovering patterns](https://reader030.vdocument.in/reader030/viewer/2022020123/558ea7421a28abee118b45f2/html5/thumbnails/8.jpg)
Defined PatternsIterator
Module
Move Method
MVC
Accordion (UI)
![Page 9: Discovering patterns](https://reader030.vdocument.in/reader030/viewer/2022020123/558ea7421a28abee118b45f2/html5/thumbnails/9.jpg)
We can discuss them, debate them,
criticize them, employ them
![Page 10: Discovering patterns](https://reader030.vdocument.in/reader030/viewer/2022020123/558ea7421a28abee118b45f2/html5/thumbnails/10.jpg)
Intuitive Patterns
Employ them without knowing itWe feel, sense, know them when they’re presentHard to describe, articulateWork well for the individual
![Page 11: Discovering patterns](https://reader030.vdocument.in/reader030/viewer/2022020123/558ea7421a28abee118b45f2/html5/thumbnails/11.jpg)
Unknown PatternsThey are present But we’re not aware of themWaiting to be discoveredCan have intuition associated with them
![Page 12: Discovering patterns](https://reader030.vdocument.in/reader030/viewer/2022020123/558ea7421a28abee118b45f2/html5/thumbnails/12.jpg)
Intuition in the UnknownYou find some code that is awesome to work in.You try to share it with someone. You can only describe it as simple, well-factored, intuitive, easy to use, awesome, etc.You don’t know why this code is great, it just is.
![Page 13: Discovering patterns](https://reader030.vdocument.in/reader030/viewer/2022020123/558ea7421a28abee118b45f2/html5/thumbnails/13.jpg)
A Goal As CraftsmenDiscover unknown patternsExpose intuitive patternsDeepen our common language to share solutions to types of problem setsBetter ourselves, our teamsBetter the world
![Page 14: Discovering patterns](https://reader030.vdocument.in/reader030/viewer/2022020123/558ea7421a28abee118b45f2/html5/thumbnails/14.jpg)
“If your language is empty, your buildings cannot be full.
If your language is poor, you cannot make good buildings until you enrich your language.
If your language is rigid, your buildings must be rigid.
If your language is florid, your buildings will be florid.
Your language generates the buildings which you make, and the buildings live or not, according to the life your language has.”
Christopher Alexander, The Timeless Way Of Building
![Page 15: Discovering patterns](https://reader030.vdocument.in/reader030/viewer/2022020123/558ea7421a28abee118b45f2/html5/thumbnails/15.jpg)
A pattern communicates:
intent, context (Brief what/why)problem statement (More in-depth what/why/examples)solution statement (How, When, Where)associated visualizations (software visualizations usually suck)
![Page 16: Discovering patterns](https://reader030.vdocument.in/reader030/viewer/2022020123/558ea7421a28abee118b45f2/html5/thumbnails/16.jpg)
A Simple Definition
A pattern is something that recurs, can be defined, has a rule which is sufficient for repetition, and provides contextual information about when it may apply.
![Page 17: Discovering patterns](https://reader030.vdocument.in/reader030/viewer/2022020123/558ea7421a28abee118b45f2/html5/thumbnails/17.jpg)
Pro-Tip
Because a pattern exists does not make it valuable.Even though it may be well defined, clearly communicated, and eloquently written.
![Page 18: Discovering patterns](https://reader030.vdocument.in/reader030/viewer/2022020123/558ea7421a28abee118b45f2/html5/thumbnails/18.jpg)
“Pattern languages are a source of beauty and ugliness. The depth or banality comes from the pattern languages in the builder’s mind.”
Christopher Alexander, The Timeless Way Of Building
![Page 19: Discovering patterns](https://reader030.vdocument.in/reader030/viewer/2022020123/558ea7421a28abee118b45f2/html5/thumbnails/19.jpg)
Pro-Tip
We should never approach building anything by thinking ahead that we’re going to use pattern X, Y, and Z.That is disastrous and a mistake of inexperience or misunderstanding
![Page 20: Discovering patterns](https://reader030.vdocument.in/reader030/viewer/2022020123/558ea7421a28abee118b45f2/html5/thumbnails/20.jpg)
Pro-Tip cont...Patterns arise from paying meticulous attention to function. It is function which drives pattern usefulness, utility, and value.There are times we identify patterns ahead of time, but that should only come after understand context and function
![Page 21: Discovering patterns](https://reader030.vdocument.in/reader030/viewer/2022020123/558ea7421a28abee118b45f2/html5/thumbnails/21.jpg)
The Barn Example
This example is from Christopher Alexander, The Timeless Way Of Building
![Page 22: Discovering patterns](https://reader030.vdocument.in/reader030/viewer/2022020123/558ea7421a28abee118b45f2/html5/thumbnails/22.jpg)
“You don’t work out the structural calculations every time you do it; once you are persuaded that this is a good way to build floors, you go on doing it that way, until you have some reason to rethink it.”
Christopher Alexander, The Timeless Way Of Building
![Page 23: Discovering patterns](https://reader030.vdocument.in/reader030/viewer/2022020123/558ea7421a28abee118b45f2/html5/thumbnails/23.jpg)
A Useful Pattern
Is more than just repetition or ability to repeat.It is repetition with utility From paying meticulous attention to function and context
![Page 24: Discovering patterns](https://reader030.vdocument.in/reader030/viewer/2022020123/558ea7421a28abee118b45f2/html5/thumbnails/24.jpg)
Primed and Ready To share patterns To find patternsTo discuss themTo debate themTo criticize themTo better our team And then better the world
![Page 25: Discovering patterns](https://reader030.vdocument.in/reader030/viewer/2022020123/558ea7421a28abee118b45f2/html5/thumbnails/25.jpg)
Some common examplesLow level: Iterator, modules, classes, good variable/method/class names, well named tests, behavior oriented tests, Side Effect Free functions, Value Objects
Mid-level: MVC/MVP/Presenter-First, Responsibility layers, convention of directory structure, Service Patterns, Dumb Client, Data Context & Interaction, etc)
High-level: Continuous Integration, Automated Tests, Git Workflow, Pivotal Tracker Workflow, Iterations
Super high-level: Product development patterns like Feedback loops Stand-up, Iteration, Milestone/Release, Project Mgmt patterns like Weekly Budget, etc.
![Page 26: Discovering patterns](https://reader030.vdocument.in/reader030/viewer/2022020123/558ea7421a28abee118b45f2/html5/thumbnails/26.jpg)
Open Discussion to:share any already defined patternsdescribe situations of intuitive patternsdescribe situations of unknown patternswe can pull up codewe can draw on the whiteboards