the not so-big software design
DESCRIPTION
Opening keynote for 2013 wroc_love.rb, Wrocław, Poland.TRANSCRIPT
![Page 1: The not so-big software design](https://reader038.vdocuments.site/reader038/viewer/2022110307/555a665dd8b42a972b8b4815/html5/thumbnails/1.jpg)
Good morning wroc_love.rb!
1
Tuesday, 12 March, 13
![Page 2: The not so-big software design](https://reader038.vdocuments.site/reader038/viewer/2022110307/555a665dd8b42a972b8b4815/html5/thumbnails/2.jpg)
The reputation of a speaker varies with the square of the distance travelled to speak.
2
Tuesday, 12 March, 13
![Page 3: The not so-big software design](https://reader038.vdocuments.site/reader038/viewer/2022110307/555a665dd8b42a972b8b4815/html5/thumbnails/3.jpg)
The reputation of a speaker varies with the square of the distance travelled to speak.
2
Tuesday, 12 March, 13
![Page 4: The not so-big software design](https://reader038.vdocuments.site/reader038/viewer/2022110307/555a665dd8b42a972b8b4815/html5/thumbnails/4.jpg)
3
the preamble...
Tuesday, 12 March, 13
![Page 5: The not so-big software design](https://reader038.vdocuments.site/reader038/viewer/2022110307/555a665dd8b42a972b8b4815/html5/thumbnails/5.jpg)
THE NOT-SO-BIG HOUSE4
Tuesday, 12 March, 13
![Page 6: The not so-big software design](https://reader038.vdocuments.site/reader038/viewer/2022110307/555a665dd8b42a972b8b4815/html5/thumbnails/6.jpg)
Sarah Susanka
• Residential Architect
• Author, "The Not-So-Big-House" and "The Not-So-Big Life" amongst others
5
Tuesday, 12 March, 13
![Page 7: The not so-big software design](https://reader038.vdocuments.site/reader038/viewer/2022110307/555a665dd8b42a972b8b4815/html5/thumbnails/7.jpg)
6
THE NOT-SO-BIG HOUSEPart I: The Problem
Tuesday, 12 March, 13
![Page 8: The not so-big software design](https://reader038.vdocuments.site/reader038/viewer/2022110307/555a665dd8b42a972b8b4815/html5/thumbnails/8.jpg)
What is "Not-So-Big?"
• Single family dwellings
• Emphasis on what is unique to each owner
• Form follows functionality
• Says "no" to popular conception of value: 2,400 sq. ft. for the price of 4,000
7
Tuesday, 12 March, 13
![Page 9: The not so-big software design](https://reader038.vdocuments.site/reader038/viewer/2022110307/555a665dd8b42a972b8b4815/html5/thumbnails/9.jpg)
2,400 sq. ft. for the price of 4,000!?
Why?
8
Tuesday, 12 March, 13
![Page 10: The not so-big software design](https://reader038.vdocuments.site/reader038/viewer/2022110307/555a665dd8b42a972b8b4815/html5/thumbnails/10.jpg)
9
Tuesday, 12 March, 13
![Page 11: The not so-big software design](https://reader038.vdocuments.site/reader038/viewer/2022110307/555a665dd8b42a972b8b4815/html5/thumbnails/11.jpg)
The Big House
• 4,000 sq. ft. or more.
• Vaulted and double-height spaces
• Boxes for people
• Large footprints on small lots
10
Tuesday, 12 March, 13
![Page 12: The not so-big software design](https://reader038.vdocuments.site/reader038/viewer/2022110307/555a665dd8b42a972b8b4815/html5/thumbnails/12.jpg)
The Economics of Big Houses
• Mass produced, limited customization
• Corners cost money
• Do not require domain knowledge by the builder
• Nothing in their work or work products reflects the homeowner except the name on the cheque
11
Tuesday, 12 March, 13
![Page 13: The not so-big software design](https://reader038.vdocuments.site/reader038/viewer/2022110307/555a665dd8b42a972b8b4815/html5/thumbnails/13.jpg)
12
What problem do big houses solve?
Tuesday, 12 March, 13
![Page 14: The not so-big software design](https://reader038.vdocuments.site/reader038/viewer/2022110307/555a665dd8b42a972b8b4815/html5/thumbnails/14.jpg)
13
Tuesday, 12 March, 13
![Page 15: The not so-big software design](https://reader038.vdocuments.site/reader038/viewer/2022110307/555a665dd8b42a972b8b4815/html5/thumbnails/15.jpg)
13
Tuesday, 12 March, 13
![Page 16: The not so-big software design](https://reader038.vdocuments.site/reader038/viewer/2022110307/555a665dd8b42a972b8b4815/html5/thumbnails/16.jpg)
How do you sell a house to someone who doesn't know what they need?
• Most home buyers don't understand their own needs now or as they are likely to evolve
• Most home buyers don't understand how homes function
14
Tuesday, 12 March, 13
![Page 17: The not so-big software design](https://reader038.vdocuments.site/reader038/viewer/2022110307/555a665dd8b42a972b8b4815/html5/thumbnails/17.jpg)
15
most home buyers are uncertain
Tuesday, 12 March, 13
![Page 18: The not so-big software design](https://reader038.vdocuments.site/reader038/viewer/2022110307/555a665dd8b42a972b8b4815/html5/thumbnails/18.jpg)
16
uncertainty creates fear
Tuesday, 12 March, 13
![Page 19: The not so-big software design](https://reader038.vdocuments.site/reader038/viewer/2022110307/555a665dd8b42a972b8b4815/html5/thumbnails/19.jpg)
17
fearful people cling to the simple and obvious
Tuesday, 12 March, 13
![Page 20: The not so-big software design](https://reader038.vdocuments.site/reader038/viewer/2022110307/555a665dd8b42a972b8b4815/html5/thumbnails/20.jpg)
18
Selling homes by volume is about as simple and as obvious as you can get.
Tuesday, 12 March, 13
![Page 21: The not so-big software design](https://reader038.vdocuments.site/reader038/viewer/2022110307/555a665dd8b42a972b8b4815/html5/thumbnails/21.jpg)
The result? Under- or poorly- designed homes
• We are impressed by high ceilings, but feel safer in smaller spaces.
• Big homes have rarely used rooms.
• The default is for big homes to skip functionality we actually use, like built-in storage or pocket doors.*
19
Tuesday, 12 March, 13
![Page 22: The not so-big software design](https://reader038.vdocuments.site/reader038/viewer/2022110307/555a665dd8b42a972b8b4815/html5/thumbnails/22.jpg)
The problem with Big Homes:They don't serve their owners' needs
20
But they persist, because that's what sells to people who have little understanding of their own needs, and little experience with
how homes function.
Tuesday, 12 March, 13
![Page 23: The not so-big software design](https://reader038.vdocuments.site/reader038/viewer/2022110307/555a665dd8b42a972b8b4815/html5/thumbnails/23.jpg)
21
and now to the main event...
Tuesday, 12 March, 13
![Page 24: The not so-big software design](https://reader038.vdocuments.site/reader038/viewer/2022110307/555a665dd8b42a972b8b4815/html5/thumbnails/24.jpg)
THE NOT-SO-BIG SOFTWARE DESIGN
22
Tuesday, 12 March, 13
![Page 25: The not so-big software design](https://reader038.vdocuments.site/reader038/viewer/2022110307/555a665dd8b42a972b8b4815/html5/thumbnails/25.jpg)
23
THE NOT-SO-BIGSOFTWARE DESIGN
Part I: The Problem
Tuesday, 12 March, 13
![Page 26: The not so-big software design](https://reader038.vdocuments.site/reader038/viewer/2022110307/555a665dd8b42a972b8b4815/html5/thumbnails/26.jpg)
What is "Not-So-Big?"
• SMB and departmental applications
• Emphasis on what is unique to each application
• Form follows domain functionality
• Says "no" to popular conception of value: The default arrangement of components
24
Tuesday, 12 March, 13
![Page 27: The not so-big software design](https://reader038.vdocuments.site/reader038/viewer/2022110307/555a665dd8b42a972b8b4815/html5/thumbnails/27.jpg)
No standard arrangement?
Why?
25
Tuesday, 12 March, 13
![Page 28: The not so-big software design](https://reader038.vdocuments.site/reader038/viewer/2022110307/555a665dd8b42a972b8b4815/html5/thumbnails/28.jpg)
The Big Framework
• Designed for mass production and mass consumption
• Boxes for components
26
Tuesday, 12 March, 13
![Page 29: The not so-big software design](https://reader038.vdocuments.site/reader038/viewer/2022110307/555a665dd8b42a972b8b4815/html5/thumbnails/29.jpg)
The Economics of Big Frameworks
• Limited menu of choices
• Easy on-ramp for new developers
• Domain-free design creates the illusion of portable skills
• Very little in their work or work products reflects the customer except the name on the cheque
27
Tuesday, 12 March, 13
![Page 30: The not so-big software design](https://reader038.vdocuments.site/reader038/viewer/2022110307/555a665dd8b42a972b8b4815/html5/thumbnails/30.jpg)
28
What problem do big frameworks solve?
Tuesday, 12 March, 13
![Page 31: The not so-big software design](https://reader038.vdocuments.site/reader038/viewer/2022110307/555a665dd8b42a972b8b4815/html5/thumbnails/31.jpg)
How do you get started quickly with a new project?
• The domain is not fully understood at the beginning of a project, but a domain-agnostic framework doesn't "care.".
• Reusing the same framework over and over again allows reuse of skills and experience... with the framework.
29
Tuesday, 12 March, 13
![Page 32: The not so-big software design](https://reader038.vdocuments.site/reader038/viewer/2022110307/555a665dd8b42a972b8b4815/html5/thumbnails/32.jpg)
Frameworks are chosen early
• Minimum knowledge
• Maximum uncertainty
30
Tuesday, 12 March, 13
![Page 33: The not so-big software design](https://reader038.vdocuments.site/reader038/viewer/2022110307/555a665dd8b42a972b8b4815/html5/thumbnails/33.jpg)
31
developers are uncertain
Tuesday, 12 March, 13
![Page 34: The not so-big software design](https://reader038.vdocuments.site/reader038/viewer/2022110307/555a665dd8b42a972b8b4815/html5/thumbnails/34.jpg)
32
uncertainty creates fear
Tuesday, 12 March, 13
![Page 35: The not so-big software design](https://reader038.vdocuments.site/reader038/viewer/2022110307/555a665dd8b42a972b8b4815/html5/thumbnails/35.jpg)
33
fearful people cling to the simple and obvious
Tuesday, 12 March, 13
![Page 36: The not so-big software design](https://reader038.vdocuments.site/reader038/viewer/2022110307/555a665dd8b42a972b8b4815/html5/thumbnails/36.jpg)
34
Organizing software around"the things you know you'll need"is about as simple and as obvious
as you can get.
Tuesday, 12 March, 13
![Page 37: The not so-big software design](https://reader038.vdocuments.site/reader038/viewer/2022110307/555a665dd8b42a972b8b4815/html5/thumbnails/37.jpg)
Is The Result Poorly Designed Software?
35
Tuesday, 12 March, 13
![Page 38: The not so-big software design](https://reader038.vdocuments.site/reader038/viewer/2022110307/555a665dd8b42a972b8b4815/html5/thumbnails/38.jpg)
Is The Result Poorly Designed Software?
35
...exempla gratia...
Tuesday, 12 March, 13
![Page 39: The not so-big software design](https://reader038.vdocuments.site/reader038/viewer/2022110307/555a665dd8b42a972b8b4815/html5/thumbnails/39.jpg)
A 1962 VW Camper Van
36
Tuesday, 12 March, 13
![Page 40: The not so-big software design](https://reader038.vdocuments.site/reader038/viewer/2022110307/555a665dd8b42a972b8b4815/html5/thumbnails/40.jpg)
A 1962 VW Camper Van
36
Tuesday, 12 March, 13
![Page 41: The not so-big software design](https://reader038.vdocuments.site/reader038/viewer/2022110307/555a665dd8b42a972b8b4815/html5/thumbnails/41.jpg)
A 1962 VW Camper Van
36
Tuesday, 12 March, 13
![Page 42: The not so-big software design](https://reader038.vdocuments.site/reader038/viewer/2022110307/555a665dd8b42a972b8b4815/html5/thumbnails/42.jpg)
Is the result poorly-designed software?
• If I look at the lists of models, controllers, views, assets, configuration files, migrations, and so forth, can I tell what it is supposed to do?
• Great, there are more than a thousand tests. Why are the tests that describe what it it supposed to do completely decoupled from the code that does it?
• We build once but change and fix for years. Are we optimizing for the thing that's easy to sell?
37
Tuesday, 12 March, 13
![Page 43: The not so-big software design](https://reader038.vdocuments.site/reader038/viewer/2022110307/555a665dd8b42a972b8b4815/html5/thumbnails/43.jpg)
The problem with Big Homes:They don't serve their owners' needs
38
But they persist, because that's what sells to people who have little understanding of their own needs, and little experience with
how homes function.
Tuesday, 12 March, 13
![Page 44: The not so-big software design](https://reader038.vdocuments.site/reader038/viewer/2022110307/555a665dd8b42a972b8b4815/html5/thumbnails/44.jpg)
The problem with Big Homes:They don't serve their owners' needs
38
Big Frameworks
But they persist, because that's what sells. Our job is to discard the habits that served
us well when we were learning, and develop new habits that put us first and
the framework second.
Tuesday, 12 March, 13
![Page 45: The not so-big software design](https://reader038.vdocuments.site/reader038/viewer/2022110307/555a665dd8b42a972b8b4815/html5/thumbnails/45.jpg)
A Not-So-Big Home
39
Tuesday, 12 March, 13
![Page 46: The not so-big software design](https://reader038.vdocuments.site/reader038/viewer/2022110307/555a665dd8b42a972b8b4815/html5/thumbnails/46.jpg)
40
THE NOT-SO-BIGSOFTWARE DESIGN
Part II: Good Habits
Tuesday, 12 March, 13
![Page 47: The not so-big software design](https://reader038.vdocuments.site/reader038/viewer/2022110307/555a665dd8b42a972b8b4815/html5/thumbnails/47.jpg)
Problem: By default, code gives all use cases equal weight
• If you only entertain formally twice a year, why would your formal dining room take up more space and more mindshare than the eat-in nook in the kitchen?
41
Tuesday, 12 March, 13
![Page 48: The not so-big software design](https://reader038.vdocuments.site/reader038/viewer/2022110307/555a665dd8b42a972b8b4815/html5/thumbnails/48.jpg)
Accommodating how you actually live, not how you pretend to live.
42
Tuesday, 12 March, 13
![Page 49: The not so-big software design](https://reader038.vdocuments.site/reader038/viewer/2022110307/555a665dd8b42a972b8b4815/html5/thumbnails/49.jpg)
Less frequent use cases are hidden away
43
Tuesday, 12 March, 13
![Page 50: The not so-big software design](https://reader038.vdocuments.site/reader038/viewer/2022110307/555a665dd8b42a972b8b4815/html5/thumbnails/50.jpg)
Hide the necessary but infrequent or unimportant
• Make heavy use of AOP-ish filters, monkey-patching, method decorators, modules, and other tools so that classes and methods are light in the editor even if they're heavy in the runtime.
• Push grunt-work into gems.
• Consider using "The Williams Style" for implementation concerns
44
Tuesday, 12 March, 13
![Page 51: The not so-big software design](https://reader038.vdocuments.site/reader038/viewer/2022110307/555a665dd8b42a972b8b4815/html5/thumbnails/51.jpg)
Problem: All the bathrooms on one floor, all the bedrooms on another
45
Tuesday, 12 March, 13
![Page 52: The not so-big software design](https://reader038.vdocuments.site/reader038/viewer/2022110307/555a665dd8b42a972b8b4815/html5/thumbnails/52.jpg)
Problem: All the bathrooms on one floor, all the bedrooms on another
45
Tuesday, 12 March, 13
![Page 53: The not so-big software design](https://reader038.vdocuments.site/reader038/viewer/2022110307/555a665dd8b42a972b8b4815/html5/thumbnails/53.jpg)
Organize code by use, not by type
• Frameworks like Rails have a default organization, but they can be configured to put things wherever you want.
• Make heavy use of modules to namespace code and also to put like code with like.
• Cultivate a "refined taste."
46
Tuesday, 12 March, 13
![Page 54: The not so-big software design](https://reader038.vdocuments.site/reader038/viewer/2022110307/555a665dd8b42a972b8b4815/html5/thumbnails/54.jpg)
Problem: Documentation
47
"Documentation is like term insurance: It satisfies because almost no one who subscribes
to it depends on its benefits."--Alan J. Perlis
Tuesday, 12 March, 13
![Page 55: The not so-big software design](https://reader038.vdocuments.site/reader038/viewer/2022110307/555a665dd8b42a972b8b4815/html5/thumbnails/55.jpg)
Problem: Documentation
48
This space about documenting implementation code left intentionally blank.
Tuesday, 12 March, 13
![Page 56: The not so-big software design](https://reader038.vdocuments.site/reader038/viewer/2022110307/555a665dd8b42a972b8b4815/html5/thumbnails/56.jpg)
Use maximally literate test code
• Embed specs, test cases, and other vegetative artefacts within marked up documentation using Literate CoffeeScript, Docco, or other similar tools.
• Building your docs should be part of your deploy.
• Your literate test code must be read and re-read to be worthwhile.
49
Tuesday, 12 March, 13
![Page 57: The not so-big software design](https://reader038.vdocuments.site/reader038/viewer/2022110307/555a665dd8b42a972b8b4815/html5/thumbnails/57.jpg)
50
Tuesday, 12 March, 13
![Page 58: The not so-big software design](https://reader038.vdocuments.site/reader038/viewer/2022110307/555a665dd8b42a972b8b4815/html5/thumbnails/58.jpg)
Three Not-So-Big Habits
• Hide or de-emphasize the infrequent or unimportant
• Organize code by use, not type
• Write maximally literate test code
51
Tuesday, 12 March, 13
![Page 59: The not so-big software design](https://reader038.vdocuments.site/reader038/viewer/2022110307/555a665dd8b42a972b8b4815/html5/thumbnails/59.jpg)
The Message
• Our needs at the start of our experience with a framework or project should not dominate our choices
• Good design emphasizes what is frequent and important in houses, UX, and software design
• You are an important user. Design with you in mind.
52
Tuesday, 12 March, 13
![Page 60: The not so-big software design](https://reader038.vdocuments.site/reader038/viewer/2022110307/555a665dd8b42a972b8b4815/html5/thumbnails/60.jpg)
Dziękuję bardzo!
53
"It is easier to write an incorrect program than understand a correct one."--Alan J. Perlis
Tuesday, 12 March, 13
![Page 61: The not so-big software design](https://reader038.vdocuments.site/reader038/viewer/2022110307/555a665dd8b42a972b8b4815/html5/thumbnails/61.jpg)
reg braithwaitehttp://braythwayt.com
54
Tuesday, 12 March, 13