foundersandcoders / a-pattern-language

A pattern language for teaching software
9 stars 1 forks source link

Context for this resource #2

Open bradreeder opened 7 years ago

bradreeder commented 7 years ago

I will leave this issue open to provide some context to this repo until I find the time to research #3 .

bradreeder commented 7 years ago

What?

A Pattern Language is a book written by the architect and design theorist Christopher Alexander. It tries to distil spatial organisation and the process of creating good built environments down to a language of what he calls patterns.

A pattern is an 'archetypal' or 'timeless' solution to a commonly occurring design problem, as the pattern's solution is generally repeatable across contexts. An example of a small pattern would be always designing a room so that it has at least two walls with light-facing windows.

Something often misunderstood is that patterns are not isolated 'units'. His patterns are intended as a language of patterns that interlock and form a hierarchy of interrelated scales. A pattern is a pattern because it overlaps with and supports other patterns.

If you were designing a home you might think of the house and its relation to the surrounding land as the large scale, rooms as apart of the middle scale, their furniture, doors, windows as the small scale. Taking Alexander's approach you'd apply the appropriate large-scale patterns to the large-scale, middle-scale patterns to the middle, low-scale patterns to the low, applying each so that it overlaps with and supports patterns at different scales.

Diagrammatically visualised:

At the core of the thesis of the book is a philosophy that well designed towns and environments cannot be built top-down by architects and designers working remotely in offices with no intimate familiarity of the area they're designing. He believes good environments are built collectively by the communities that inhabit them.

The intention of the book was to give people a shared DIY language of good design patterns, that simplifies the process of making communal design decisions, so that people are empowered to build their own houses, streets, and neighbourhoods together using the same language.

The core problem it tries to solve then is: How do you design something good that is also created democratically by many, many people? I'm exploring the idea that his methodology applies in parallel to the idea of a curriculum that is communally designed, not by a master-planner, but democratically by many students & mentors.

bradreeder commented 7 years ago

Why?

Why as software developers should we take an interest in an architectural theorist who in all likelihood has never written a line of code and probably uses Microsoft vista and internet explorer?

I ❤️ ❤️ ❤️ him -- his books are pearls of masterful design wisdom.

bradreeder commented 7 years ago

Thought Experiment

Say we created a pattern language that is the shared language through which we create the curriculum of F&C and was the core methodology by which everyone agreed to put together and make decisions about curriculum weeks. Patterns are

large-scale: to do with the arrangement of the curriculum as a whole middle-scale: to do with the arrangement of a week as a whole low-scale: to do with the arrangement of a week's activity as a whole

Patterns could be linked to learning outcomes at each scale. An example of a hypothetical middle-scale pattern would be:

"Every time you run a code-along ensure it is followed with an opportunity for students to practice what was learnt in pairs"

As it is a pattern that links together two activities. Code-alongs as an activity could then have their own low-scale patterns like:

"Every time you run a code-along take regular breaks so that everyone can keep up and ask questions."

Every pattern proposed is initially a hypothetical solution to a problem that mentors make during planning. Mentors record their hypothetical patterns then when they run their week the fundamental attitude they have is that they are testing their hypothesis to verify it. If feedback comes back positive (i.e. if their tests pass) a mark is put against their hypothesis and it is trialled again with the next iteration.

Their hypothesis becomes a part of the communities pattern language only when it is sufficiently tested. Patterns and hypothetical patterns can be ordered in terms of how well tested they are.


A pattern should include:

bradreeder commented 7 years ago

Advantages

bradreeder commented 7 years ago

Conclusion

What Alexander attempted to do for urban design and architecture is essentially what we're trying to do with the master-reference: create a blue-print for a replicable, scalable, sustainable & democratic educational model, that takes control away from educational institutions, and in theory could work in any context.

To do that the curriculum must be composed of patterns that applied in any setting produce the same result, and that everyone from every setting agrees is good.

We've been limited until now because we've only ever run F&C in one context. We're in a unique situation now where with two schools we have potentially twice as much data we can be cross-processing. We can run the same curriculum in two places simultaneously! It is imperative we make best use of this. That's twice as rapidly the curriculum could improve if approached with an intelligent methodology. Why? Twice as much feedback on every single part of the curriculum to contrast, twice as many people contributing to our resources!

We need a user-centred, test-driven methodology by which we can effectively run the same curriculum in multiple places and iterate a single source on the basis of feedback coming from multiple sources. I'm proposing the pattern language as a possible route forwards to accomplish this, and need to think in more detail of how this methodology could be tangibly implemented.

bradreeder commented 7 years ago

Many schools. One language

The ideal of having the exact same curriculum run in multiple locations may fall apart eventually as the organisation grows.

I think we want to avoid a centralised model that revolves around London eventually, and to adopt a decentralised model in which each school feels sufficiently autonomous over its own decision-making. At the same time, we want each school to share a common F&Cness that isn't significantly diverged from.

The common factor between schools could become that each one shares and agrees to work by the same pattern language through which curriculums are created so there is an archetypal core. Then each school can contribute to the same language creating their own variations with their own patterns, so that schools can learn from the results of each other's experiments.

bradreeder commented 7 years ago

Lean Principles

I need to research more into Lean, Agile, UX, and how it inter-relates with this methodology. Currently finishing the Lean Startup.

To apply what we do to a Lean model. Say the students are our users, and the curriculum is our service that we iterate in life-cycles of 4 months. It follows, from a Lean perspective, that the most important part of the week is SGC. That's the part in which we get our core user feedback & data, through which to pivot or maintain, and refine our model & workshops to suit their needs.

What we then lack at the moment are empirical methods by which we analyse that data to make decisions. By lacking those methods we do not experience validated learning to the degree we could as an organisation. Funnelling that data into the master-reference is a start at a method, as it facilitates communication, and guarantees it will be actioned in some way, but it doesn't necessarily follow that those actions will lead to progress.

I think the pattern language, if it works, has the power to become that scientific methodology. If we can express the curriculum totally in terms of its component patterns, it follows every aspect of the curriculum is documented & testable. Behind every aspect of the curriculum is a precise statement of the hypothesis, or reason, for its existence. Whether that pattern is sustained, modified, or abandoned is not subjective, but based upon a realistic assessment of whether that pattern achieves that purpose against what the data says.

I genuinely feel that mentors could learn about Lean, user-testing, and many of the principles & processes we teach, through the experience of mentoring if we can nail the method down. It's on the tip of my tongue.

jsms90 commented 7 years ago

Reading through the advantages, agreeing with everything until

Universality -- Patterns in theory should work across contexts. A pattern is a pattern if it works in London, Nazareth, anywhere. Thinking of our curriculum in terms of patterns means thinking in terms of designing a curriculum that is truly a blue-print that could be picked up by anyone, anywhere.

Hmmm..."Surely different patterns could emerge in different context"?

And then I came to this....there is serious beauty in this.