Prompt I.A.: Definição suficiente para implementação de produto - Pattern Language
O prompt abaixo é refinado periodicamente. Não é uma versão estática.
Goal: develop a "Product Requirement Document" in the Pattern Language style, following the principles and ideas below.
<Topic or Document>
...
</Topic or Document>
The PRD should be created considering the topic or document provided.
# Process to follow
- Evaluate the topic through the lens of Pattern Language, given the details of what Pattern Language is.
- Offer a "Business" Pattern Language as the first result. The Pattern Language must contain: a Context and a Sequence, with a correct level of abstraction. The sequence must be an imperative statement informing what the "builder" (Product Designers, Developers) who reads the PRD must do to build the product. The statement should not be from the perspective of who will use the product, but from who will build it. Each item in the sequence should have a brief explanation. Each item in the sequence can have a list of sub-sequences.
- Evaluate the sequence according to context, form, fit and optimized sequence to allow "life".
- Present a second Pattern Language, "Frontend", with an optimized sequence now specifically for the construction of the frontend and site flow. Using the first PRD as input. Each item must have a sub-sequence at an appropriate level of abstraction.
# What is Pattern Language - Christopher Alexander
## Three concepts essential:
Form: With any design problem, there is some part of the world that we have decided to create or change. This is the form.
Context: The way that we get to a "good" form is by looking at the context the form fits into. Not just a physical context, like how a couch needs to fit in the living room. The context refers to the dynamics of the context. The activities that people are trying to do, the things going on. We can go either with the grain, or against the grain of this context.
Fit: Success is judged by the fitness between context and form.
## A pattern: A package of form & context
Some context has been understood. In reaction, some generic arrangement of centers has been designed (a form).
Anytime we encounter this context, we can solve it with this form and get more life out.
Example pattern from the book A Pattern Language: If you build a balcony that is less than 6 feet deep, you will find that people don't use it. There are things that people do on balconies, that are not afforded by a shallow design: Sitting around each other, Stretching out legs, Setting down glasses, plates, newspapers, etc. This doesn't tell anything about how to build your balcony, what style or where. It's a specific pattern in relation to a context. This pattern helps you improve the fit from the form to the context. This enables life.
A collection of patterns can be knit together in a pattern language
A pattern language weaves these patterns together in a sequence. This sequence comes from the natural order to think about things.
In the pattern language we prioritize certain aspects of the form, so that the form can unfold step by step.
A pattern language explains how we will step by step, solve which problem, in which order, to make this one specific project. It is not a way to be more efficient, and reuse things from the past. But to make 1 thing right, in a way that is fitting, effective, beautiful and enables activities to take place.
## Level of abstraction
A pattern language is a high level way to say what you roughly want, in which order.
This allows the ones who are actually doing "the construction", to go into the level of detail (per step) and figure out the actual form, in the context of doing the building.
There are a million possible designs that can be generated out of the pattern language.
Were going to get different properties, and different results and a different experience and a different form-context fit depending on the language that we choose
The fact that there are many ways to implement the design shows that we specified it at the right level of abstraction
This level of abstraction gives freedom for either our future selves, or other people if we delegate some work, to work out the specific relationships between these things in the context of construction
## The two aspects of the design process
The static aspect: How do we take a snapshot of the current form? What is the current spatial structure, and how do we describe the geometry and the physical relationships within it? This helps us identify how to get to a better design -a design that is more living- just by looking at the arrangement of things. Alexander calls this the topic of centers
The dynamic aspect: How do we improve this form? What do we do in terms of design process to unfold a better design? Let's call this: Generative process. Alexander uses the word generative, and this is important.
### Centers (the static aspect)
All form that exists, whether its a car, a building, a book, or this talk, is comprised of elements (atoms, sound waves, pixels, etc) that exist in a certain relationship to each other
To our senses, it's all one big world. By partitioning the world of form -by mentally drawing a dotted line- we can identify a unit that we can talk about or modify
The center explains such a unit of design that in the chain of interdependence drives the others
It's a way of describing elements that are more coherent and more salient (outstanding)
### Generative Process (the dynamic aspect)
The way to get to something that is so well adapted is by step-by-step unfolding. By doing 1 thing at a time with careful attention for what is already there. This is step-by-step adaptation.
Can't talk about step-by-step adaptation, without talking about sequence
Sequence: The order of problem solving is extremely important. The things we do first, will constrain what what we do next, and what we do next, etc.
Either this leads us closer and closer to a better result, or it can (step-by-step) paint us into a corner.
## Summary for system designers
Frame the design problem in terms of form & context. The form is the thing we are making, and the context is the type of activities that take place and the constraints of the situation. This gives us an empirical judgement of fit
A deeper understanding that this fit is about making the world more full of meaning. Not just doing what the client asked for. We make something that enables life.
Centers give us a way to talk about key elements of a design, and the relationship between those elements, without talking too specifically about form. It is a high level way of talking about structure
We get to this coherent structure through a step by step process of unfolding. By specifying the key relationships and the sequence of problem solving at the right level of abstraction using a pattern language. This pattern language is uniquely defined for 1 project, it is not meant to be reused
We create the necessary freedom at the low level to do step-by-step adaptation, by specifying the pattern language at the right level of abstraction
## Erroneous Pattern
This is how people traditionally design a kitchen:
Take the kitchen floorplan
Decide where you want the outer wall
Decide how long to make the counter
Decide where to put the refrigerator
Decide what color to put on the walls
Decide what tiles to put on the floor
Alexander's says this process is not living: "It will enable people to create virtually any arrangement they wish." This will likely result in a less living design than if we were to constrain our process through a pattern language.
# Good Pattern Language - Sequence
- Think about the activities of your kitchen and formulate them as generic centers.
- Decide the size and shape of the kitchen.
- Place windows in the kitchen, to bring beautiful light into the environment.
- Place a large kitchen table as the main focus of the kitchen.
- Place a fireplace to form a secondary center in the environment.
- Place an outdoor kitchen garden, according to the sun, wind and view.
- Place a door that leads to the outside.
- Place the kitchen counter and its workspace in a good relationship with the main centers.
- Place thick walls around the room, to complement the table, the fire and the counter.
Give me the whole pattern language document. Disregard testing, documentation, feedback, etc. stages. focus only on implementation scopes.