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.

Architectural Thinking

  • 1.
    What have youlearned? • Ruby & Ruby on Rails: 182 hours • Yoga teacher: 200 hours • Architectures course: 196 hours = $1421 in a minimum wage position
  • 2.
    Architectural Thinking • Thinkingabout system structures critically important for system qualities • NOT about conventional • NOT about convenient • NOT about known • NOT speaking • NOT writing or diagramming
  • 3.
    Jackson’s Denials • Priorexperience • Hacking • Abstraction • Vagueness ... applicable as common traps of architectural thinking?
  • 4.
    Denial of Thinkingby 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
  • 5.
    Denial of Thinkingby 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
  • 6.
    Denial of Thinkingby 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
  • 7.
    Denial of Thinkingby 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
  • 8.
    Lesson • Don’t let –Your knowledge and experience – Abstractions (conventional and your own) – Specific goals – Laziness – Lack of time stop you from architectural thinking
  • 9.
    Caution • Know whento stop thinking: – Proven patterns and methods – Design phase ● Acceptable to start with vague – Limited resources
  • 10.
    Support your thinking •Self-awareness, reflection • Chase intellectual discomfort – Confusion, mistakes • Practices & processes
  • 11.
    References • Michael Jackson,The World and The Machine in Proceedings of the 17th International Conference on Software Engineering, 1995.