What can we learn from other design disciplines? How do they learn design? What can we copy from them?
This is a challenge for software developers to start thinking as code designers, as people who use code as a material to prototype solutions to problems.
3. What is good design and
why it matters?
This is a sequel
https://www.youtube.com/watch?v=yGJwPiIOf_8
4.
5. How many of you design code?
How many of you design other things (UI, UX,
visual …)?
How many of you know designers from other
domains?
6.
7. Perspective 1
We solve problems.
Most times we use code,
because it’s the
“prototyping” material we
know best
Perspective 2
We can learn from other
designers and design
practices: UX, industrial
design, service design,
visual design etc.
Perspective 3
Design is an old
discipline.
We can learn from its
tradition and practices
8. We will focus beyond
● Clean code
● SOLID principles
● TDD
● DDD
● 4 Elements of Simple Design
● Naming
32. Design Studies
Take a problem
Implement multiple solutions
Take these solutions further than a kata
33. Two types of design studies
● Compare specific techniques
– Immutable code vs. mutable code
– Single thread vs. concurrent
– Functional vs. OOP
● Compare different design qualities
– Performance vs. changeability vs. scalability vs.
security
41. Idea: XML Parser
● Subset of features
● Design quality constraints:
– Optimize memory
– Optimize speed
– Optimize processing of large files
– Changeability: easily add another element type
● Compare your implementations with existing
ones
42. Idea: Database engine
● Features: multiple types, can read, update,
delete data; no SQL support
● Possible quality constraints:
– Fast reads / fast writes
– Parallel access
– Changeability: easily add another type
● Compare with mysql, postgresql etc.
43. Idea: Tetris game
● Full featured
● Design qualities ideas:
– Changeability: plug in different interfaces: console,
opengl, 2d graphics, web, etc.
– Performance: measure and optimize fps
44. More ideas for design studies:
https://github.com/MozaicWorks/SoftwareDesignStudies