Click here to load reader
Upload
ivan-ruchkin
View
40
Download
2
Embed Size (px)
DESCRIPTION
What are the obstacles to architectural thinking? Based on Jackson's denials.
Citation preview
What have you learned?
• Ruby & Ruby on Rails: 182 hours
• Yoga teacher: 200 hours
• Architectures course: 196 hours
= $1421 in a minimum wage position
Architectural Thinking
• Thinking about system structures critically important for system qualities
• NOT about conventional
• NOT about convenient
• NOT about known
• NOT speaking
• NOT writing or diagramming
Jackson’s Denials
• Prior experience
• Hacking
• Abstraction
• Vagueness
... applicable as common traps of architectural thinking?
Denial of Thinking by Prior Knowledge
● “I have used this system before, so I know what it should be like”
● “The only problem we have is performance. We just don't know how to make the system faster”
• Failure to think beyond one's current frame of experience
• Does NOT mean prior experience is bad
Denial of Thinking by Abstraction
• “I have an architectural diagram, therefore I can start implementation”
• An abstraction helps avoid hard design problems
– Never thinking or forgetting what symbols mean
• Failure to come up with an abstraction that supports thinking, not shuts it down
• Does NOT mean abstraction is bad
Denial of Thinking by Hacking
• “Drivers, requirements, and diagrams are worthless – code is what matters”
• “I am a software engineer and care about software, not about museums”
• Skipping hard parts of thinking
– Jumping to the solution instead of considering the problem
– A popular combination of denials by prior knowledge and abstraction
● Does NOT mean experimenting is bad
Denial of Thinking by Vagueness
• “Customers make an order, which is processed by middleware and executed by the shipping department.”
• “This component satisfies the security quality attribute”
• Being not explicit about the subject of your thinking:
– World vs. system – Problem vs. solution– As is vs. as to be
Lesson
• Don’t let
– Your knowledge and experience
– Abstractions (conventional and your own)
– Specific goals
– Laziness
– Lack of time
stop you from architectural thinking
Caution
• Know when to stop thinking:
– Proven patterns and methods
– Design phase
● Acceptable to start with vague
– Limited resources
Support your thinking
• Self-awareness, reflection
• Chase intellectual discomfort
– Confusion, mistakes
• Practices & processes
References
• Michael Jackson, The World and The Machine in Proceedings of the 17th International Conference on Software Engineering, 1995.