Software Engineering at Google
Curated by Titus Winters, Tom Manshreck & Hyrum Wright
7.
μμΉ : PART II Culture / Chapter 3: Knowledge Sharing / Challenges to Learning
Sharing expertise across an organization is not an easy task. Without a strong culture of learning, challenges can emerge. Google has experienced a number of these challenges, especially as the company has scaled:
μ‘°μ§μ μ λ¬Έ μ§μμ 곡μ νλ κ²μ μ¬μ΄ μμ μ΄ μλλλ€. λ°°μμ λν κ°λ ₯ν λ¬Ένκ° μμΌλ©΄ λ¬Έμ κ° λ°μν μ μμ£ . νμ¬κ° νμ₯λ¨μ λ°λΌμ ꡬκΈμ λ€μκ³Ό κ°μ λ§μ λ¬Έμ λ€μ κ²½νν΄μμ΅λλ€.
Lack of psychological safety
An environment in which people are afraid to take risks or make mistakes in front of others because they fear being punished for it. This often manifests as a culture of fear or a tendency to avoid transparency.
μ¬λ¦¬μ μμ κ°μ λΆμ‘±
μ²λ²λ°μ κ² λλ¬Έμ μ¬λλ€μ΄ μνμ κ°μνκ±°λ μ¬λλ€ μμμ μ€μνλ κ²μ λλ €μνλ νκ²½μ λλ€. μ’ μ’ κ³΅ν¬ λ¬Ένλ ν¬λͺ μ±μ νΌνλ κ²½ν₯μΌλ‘ λνλ©λλ€.
Information islands
Knowledge fragmentation that occurs in different parts of an organization that don’t communicate with one another or use shared resources. In such an environment, each group develops its own way of doing things. This often leads to the following:
Information fragmentation
Each island has an incomplete picture of the bigger whole.
Information duplication
Each island has reinvented its own way of doing something.
Information skew
Each island has its own ways of doing the same thing, and these might or might not conflict.
μ 보 μ¬λ€
μλ‘ μν΅νμ§ μκ±°λ 곡μ μμλ€μ μ¬μ©νμ§ μλ μ‘°μ§μ λ€λ₯Έ λΆμλ€κ°μ λ°μνλ μ§μ ννΈνμ λλ€. μ΄λ¬ν νκ²½μμ κ° κ·Έλ£Ήμ μμ μ μννλ κ³ μ ν λ°©λ²μ κ°λ°ν©λλ€. μ 보 ννΈνλ λ€μμ μν©λ€λ‘ μ’ μ’ μ΄μ΄μ§λλ€.
μ 보 ννΈν
κ° μ¬μ λ ν° μ 체μ λν λΆμμ ν κ·Έλ¦Όμ κ°μ§λλ€.
μ 보 μ€λ³΅
κ° μ¬μ μμ μ μννλ κ³ μ ν λ°©λ²λ€μ λ€μ μ°Ύμλ λλ€.
μ 보 λΉλμΉ
κ° μ¬μ κ°μ μμ μ μννλ κ³ μ ν λ°©λ²λ€μ κ°μ§κ³ , μ΄ λ°©λ²λ€μ μλ‘ μΆ©λνκ±°λ μΆ©λνμ§ μμ μ μμ΅λλ€.
Single point of failure (SPOF)
A bottleneck that occurs when critical information is available from only a single person. This is related to bus factor, which is discussed in more detail in Chapter 2.
SPOFs can arise out of good intentions: it can be easy to fall into a habit of “Let me take care of that for you.” But this approach optimizes for short-term efficiency (“It’s faster for me to do it”) at the cost of poor long-term scalability (the team never learns how to do whatever it is that needs to be done). This mindset also tends to lead to all-or-nothing expertise.
λ¨μΌ μ€ν¨ μ§μ
μ€μ§ ν μ¬λλ§μ΄ μ€μν μ 보λ₯Ό μ¬μ©ν μ μμ λ λνλλ λ³λͺ©νμμ λλ€. μ±ν° 2μμ λ μμΈνκ² λ Όμλ λ²μ€ μμΈκ³Ό κ΄λ ¨μ΄ μμ£ .
λ¨μΌ μ€ν¨ μ§μ μ μ’μ μλμμ μκ²Όμ μ μμ΅λλ€. "λ΄κ° λΉμ μ μν΄ μ²λ¦¬ν κ²μ."λΌλ μ΅κ΄μ λΉ μ§κΈ° μ½μ£ . κ·Έλ¬λ μ΄λ¬ν μ κ·Ό λ°©λ²μ λ¨κΈ°μ μΈ ν¨μ¨μ±("그건 λ΄κ° νλ κ² λ λΉ λ₯΄μ§")λ₯Ό μ΅μ ννκ³ μ₯κΈ°μ μΈ νμ₯μ±(νμ ν΄μΌλ μΌμ΄ 무μμ΄λ κ°μ κ·Έ λ°©λ²μ κ²°μ½ λ°°μ°μ§ μμ΅λλ€. )μ ννΈμμ΄μ§λ λκ°λ₯Ό μΉλ¦ λλ€. μ΄λ¬ν μ¬κ³ λ°©μμ λν μ λΆ-λλ-μ 무ν μ λ¬Έ μ§μ μν©μΌλ‘ μ΄μ΄μ§κ³€ ν©λλ€.
All-or-nothing expertise
A group of people that is split between people who know “everything” and novices, with little middle ground. This problem often reinforces itself if experts always do everything themselves and don’t take the time to develop new experts through mentoring or documentation. In this scenario, knowledge and responsibilities continue to accumulate on those who already have expertise, and new team members or novices are left to fend for themselves and ramp up more slowly.
μ λΆ-λλ-μ 무ν μ λ¬Έ μ§μ
"λͺ¨λ κ²"μ μλ μ¬λκ³Ό μ΄λ³΄μλ€λ‘ λλλ, μ€κ° μ§μ μ΄ κ±°μ μλ μ¬λλ€μ κ·Έλ£Ήμ λλ€. μ λ¬Έκ°λ€μ΄ νμ μ€μ€λ‘ λͺ¨λ κ²μ νκ³ , λͺ¨λν°λ§μ΄λ λ¬Έμλ₯Ό ν΅ν΄ μλ‘μ΄ μ λ¬Έκ°λ₯Ό κ°λ°νλλ° μκ°μ μ°μ§ μλλ€λ©΄ μ΄λ¬ν λ¬Έμ λ μ’ μ’ μ체μ μΌλ‘ κ°νλ©λλ€. μ΄λ¬ν μλ리μ€μμ μ§μκ³Ό μ± μκ°μ μ΄λ―Έ μ§μμ κ°μ§ μ¬λλ€μκ² κ³μν΄μ λͺ¨μ΄κ³ , μλ‘μ΄ νμλ€κ³Ό μ΄λ³΄μλ€μ μ€μ€λ‘ κ³ ν¬νλ©° λ μ²μ²ν μ±μ₯νλλ‘ λ¨κ²¨μ§λλ€.
Parroting
Mimicry without understanding. This is typically characterized by mindlessly copying patterns or code without understanding their purpose, often under the assumption that said code is needed for unknown reasons.
μ΅λ¬΄μμ²λΌ λͺ¨λ°©νκΈ°
μ΄ν΄νμ§ λͺ»νκ³ λͺ¨λ°©ν©λλ€. μΌλ°μ μΌλ‘ μ μ μλ μ΄μ λ€λ‘ μΈν΄ νμν μ½λλΌλ κ°μ νμ μ’ μ’ , λͺ©μ μ μ΄ν΄νμ§ λͺ»νμ± ν¨ν΄μ΄λ μ½λλ₯Ό 무μ¬μ½ 볡μ¬νλ νΉμ§μ΄ μμ΅λλ€.
Haunted graveyards
Places, often in code, that people avoid touching or changing because they are afraid that something might go wrong. Unlike the aforementioned parroting, haunted graveyards are characterized by people avoiding action because of fear and superstition.
μ λ Ήμ΄ μΆλͺ°νλ λ¬μ§
μ¬λλ€μ΄ 무μΈκ° μλͺ»λλκ² λλ €μμ λ§μ§κ±°λ λ³κ²½νλ κ²μ νΌνλ, μ’ μ’ μ½λ μμμμ μ§μ μ λλ€. μμ μΈκΈν μ΅λ¬΄μμ²λΌ λͺ¨λ°©νκΈ°μλ λ€λ₯΄κ², μ λ Ήμ΄ μΆλͺ°νλ λ¬μ§λ€μ μ΄λ¬ν λλ €μκ³Ό λ―Έμ μΌλ‘ μΈν΄ μ¬λλ€μ΄ νλνλ κ²μ νΌνλ κ²μ΄ νΉμ§μ λλ€.
8.
μμΉ : PART II Culture / Chapter 3: Knowledge Sharing / Philosophy
Software engineering can be defined as the multiperson development of multiversion programs. People are at the core of software engineering: code is an important output but only a small part of building a product. Crucially, code does not emerge spontaneously out of nothing, and neither does expertise. Every expert was once a novice: an organization’s success depends on growing and investing in its people.
μννΈμ¨μ΄ 곡νμ μ¬λ¬ λ²μ μ νλ‘κ·Έλ¨λ€μ μ¬λ¬ μ¬λλ€μ΄ κ°λ°νλ κ²μΌλ‘ μ μν μ μμ΅λλ€. μ¬λλ€μ μννΈμ¨μ΄ 곡νμ ν΅μ¬μ λλ€. μ½λλ μ€μν κ²°κ³Όλ¬Όμ΄κΈ°λ νλ μμ°λ¬Όμ μ΄λ£¨λ μμ λΆλΆμΌ λΏμ λλ€. κ²°μ μ μΌλ‘, μ½λλ 무μμ μ λ‘ μ μ λ‘ μκΈ°λ κ²μ΄ μλκ³ , μ λ¬Έμ§μλ κ·Έλ¬ν©λλ€. λͺ¨λ μ λ¬Έκ°λ€μ ν λ μ΄λ³΄μμμ΅λλ€. μ‘°μ§μ μ±κ³΅μ μ¬λλ€μ κΈ°λ₯΄κ³ ν¬μνλ κ²μ λ¬λ €μμ΅λλ€.
Tribal and written knowledge complement each other. Even a perfectly expert team with perfect documentation needs to communicate with one another, coordinate with other teams, and adapt their strategies over time. No single knowledge-sharing approach is the correct solution for all types of learning, and the particulars of a good mix will likely vary based on your organization. Institutional knowledge evolves over time, and the knowledge-sharing methods that work best for your organization will likely change as it grows. Train, focus on learning and growth, and build your own stable of experts: there is no such thing as too much engineering expertise.
μ λ¬Έκ° μ§λ¨κ³Ό λ¬Έμνλ μ§μμ μλ‘λ₯Ό 보μν©λλ€. μλ²½ν λ¬Έμλ₯Ό κ°μ§ μλ²½ν μ λ¬Έκ° νμΌμ§λΌλ μλ‘ μν΅νκ³ λ€λ₯Έ νκ³Ό μ‘°μ νλ©° μκ°μ΄ μ§λ¨μ λ°λΌ μ λ΅μ 보μν΄μΌ ν©λλ€. λͺ¨λ νμ΅ μ νμ κ΄ν ν κ°μ§μ μ§μ 곡μ λ°©μ(μ λ¬Έκ°μκ²λ§ μ§μ μ λ¬, λλ λ¬ΈμμμΌλ‘λ§ μ§μ μ λ¬)μ μ³μ ν΄κ²°μ± μ΄ μλκ³ , μ’μ νΌν© λ°©μ(μ λ¬Έκ°μ λ¬Έμλ‘ μ§μ 곡μ )μ μΈλΆμ¬νμ μ‘°μ§μ λ°λΌ λ€μν μ μμ΅λλ€. μ‘°μ§μ μ§μμ μκ°μ΄ μ§λ¨μ λ°λΌ λ°μ νκ³ , μ‘°μ§μ κ°μ₯ μ ν©ν μ§μ 곡μ λ°©λ²μ μ‘°μ§μ΄ μ±μ₯ν¨μ λ°λΌ λ¬λΌμ§ μ μμ΅λλ€. νλ ¨νκ³ , λ°°μκ³Ό μ±μ₯μ μ§μ€νκ³ , λΉμ λ§μ μ λ¬Έκ° κ·Έλ£Ήμ μΈμ°μΈμ. λ무 κ³Όνκ² λ§μ μμ§λμ΄λ§ μ λ¬Έ μ§μ κ°μ 건 μμ΅λλ€.
9.
μμΉ : PART II Culture / Chapter 3: Knowledge Sharing / Setting the Stage: Psychological Safety
Psychological safety is critical to promoting a learning environment.
μ¬λ¦¬μ μΈ μμ κ°μ νμ΅ νκ²½μ μ‘°μ±νλλ° μ€μν©λλ€.
An enormous part of learning is being able to try things and feeling safe to fail. In a healthy environment, people feel comfortable asking questions, being wrong, and learning new things. This is a baseline expectation for all Google teams; indeed, our research has shown that psychological safety is the most important part of an effective team.
λ°°μμ μμ£Ό ν° λΆλΆμ 무μΈκ°λ₯Ό μλν΄λ λκ³ , μ€ν¨ν΄λ μμ νλ€κ³ λλΌλ κ²μ λλ€. 건κ°ν νκ²½μμ μ¬λλ€μ μ§λ¬Ένκ³ , νλ €λ λ³΄κ³ , μλ‘μ΄ κ²λ€μ λ°°μ°λ κ²μ νΈμν¨μ λλλλ€. μ΄κ²μ λͺ¨λ κ΅¬κΈ νλ€μ κΈ°λ³Έμ μΈ κΈ°λμΉμ λλ€. μ€μ λ‘, μ°λ¦¬μ κ²°κ³Όλ μ¬λ¦¬μ μΈ μμ κ°μ΄ ν¨μ¨μ μΈ νμ κ°μ₯ μ€μν λΆλΆμ΄λΌλ κ²μ 보μ¬μ€λλ€.
10
μμΉ : PART II Culture / Chapter 3: Knowledge Sharing / Setting the Stage: Psychological Safety / Mentorship
At Google, we try to set the tone as soon as a “Noogler” (new Googler) engineer joins the company. One important way of building psychological safety is to assign Nooglers a mentor—someone who is not their team member, manager, or tech lead—whose responsibilities explicitly include answering questions and helping the Noogler
ramp up. Having an officially assigned mentor to ask for help makes it easier for the newcomer and means that they don’t need to worry about taking up too much of their coworkers’ time.
ꡬκΈμμ μ°λ¦¬λ λκΈλ¬(Noogler, μλ‘μ΄ κ΅¬κΈ μ§μ) μμ§λμ΄κ° νμ¬μ κ°λ₯ν 빨리 μ°Έμ¬νλλ‘ λΆμκΈ°λ₯Ό μ‘°μ±νλ €κ³ λ Έλ ₯ν©λλ€. μ¬λ¦¬μ μμ κ°μ λ§λλ μ€μν νλμ λ°©λ²μ λκΈλ¬μκ² λ©ν (λκΈλ¬μ ν λ©€λ², 맀λμ , κΈ°μ 리λκ° μλ μ¬λμΌλ‘ λ§μ΄μ£ )λ₯Ό μ§μ νλ κ²μ λλ€. λ©ν λ μ§λ¬Έμ λ΅νκ³ λκΈλ¬λ₯Ό λλ λͺ μμ μΈ νμ€ν μ± μμ κ°μ§κ³ μμ΅λλ€. μ§λ¬ΈνκΈ° μν΄ κ³΅μμ μΌλ‘ μ§μ λ λ©ν κ° μλ κ²μ μ κ· μ μ¬μκ° λ μ½κ² μ§λ¬Ένλλ‘ λκ³ μ κ·μ μ¬μλ€μ΄ λλ£λ€μ μκ°μ λ무 λΉΌμλ κ²μ΄ μλκ° λΌλ κ±±μ μ ν νμμλλ‘ ν©λλ€.
Mentorship formalizes and facilitates learning, but learning itself is an ongoing process. There will always be opportunities for coworkers to learn from one another, whether it’s a new employee joining the organization or an experienced engineer learning a new technology. With a healthy team, teammates will be open not just to answering but also to asking questions: showing that they don’t know something and learning from one another.
λ©ν λ§μ λ°°μμ 곡μννκ³ κ°λ₯νκ² νμ§λ§, λ°°μ μ체λ μ§μμ μΈ κ³Όμ μ λλ€. νμ λλ£λ€μ΄ μλ‘μκ² λ°°μ°λ κΈ°νλ€μ΄ μμ κ²λλ€. μλ‘μ΄ μ§μμ΄ μ μ¬νκ±°λ μλ ¨λ μμ§ν°λκ° μλ‘μ΄ κΈ°μ μ λ°°μ°λ μ§ κ° λ§μ λλ€. 건κ°ν νκ³Ό ν¨κ» νμλ€μ λ΅λ³νλ κ²λΏλ§μ΄ μλλΌ μ§λ¬Ένλ κ²μλ μ΄λ € μμ κ²λλ€. μμ λ€μ΄ λͺ¨λ₯΄λ κ²μ 보μ¬μ£Όκ³ , μλ‘μκ² λ°°μ°λ κ±°μ£ .
11
μμΉ : PART II Culture / Chapter 3: Knowledge Sharing / Setting the Stage: Psychological Safety / Psychological Safety in Large Groups
Table 3-1. Group interaction patterns μ‘°μ§ μνΈμμ© ν¨ν΄λ€
Recommended patterns (cooperative) κΆμ₯ ν¨ν΄λ€(νλ ₯μ ) |
Antipatterns (adversarial) λ°λ ν¨ν΄ (μ λμ ) |
Basic questions or mistakes are guided in the proper direction κΈ°λ³Έμ μΈ μ§λ¬Έμ΄λ μ€μλ μ μ ν λ°©ν₯μΌλ‘ μλ΄λ©λλ€. |
Basic questions or mistakes are picked on, and the person asking the question is chastised κΈ°λ³Έμ μΈ μ§λ¬Έμ΄λ μ€μλ₯Ό κ³ λ₯΄κ³ κ·Έ μ§λ¬Έμ νλ μ¬λμ κΎΈμ€ν©λλ€. |
Explanations are given with the intent of helping the person asking the question learn μ€λͺ μ μ§λ¬Έμ νλ μ¬λμ νμ΅μ λκΈ°μν λͺ©μ μΌλ‘ μ 곡λ©λλ€. |
Explanations are given with the intent of showing off one’s own knowledge μ€λͺ μ΄ μμ μ μ§μμ μλνλ λͺ©μ μΌλ‘ μ 곡λ©λλ€. |
Responses are kind, patient, and helpful μΉμ νκ³ μΈλ΄μ¬μμΌλ©° λμμ΄ λλ λ°μ/λ΅λ³μ ν©λλ€. |
Responses are condescending, snarky, and unconstructive μλ 체νκ³ μ§μ¦λ΄λ©° 건μ€μ μ΄μ§ μμ λ°μ/λ΅λ³μ ν©λλ€. |
Interactions are shared discussions for finding solutions ν΄κ²°μ± μ μ°ΎκΈ° μν΄ μ견μ 곡μ νλ μνΈμμ©μ ν©λλ€. |
Interactions are arguments with “winners” and “losers” "μΉμ"μ "ν¨μ"κ° λ Όμνλ μνΈμμ©μ ν©λλ€. |
These antipatterns can emerge unintentionally: someone might be trying to be helpful but is accidentally condescending and unwelcoming. We find the Recurse Center’s social rules to be helpful here:
No feigned surprise (“What?! I can’t believe you don’t know what the stack is!”)
Feigned surprise is a barrier to psychological safety and makes members of the group afraid of admitting to a lack of knowledge.
No “well-actuallys”
Pedantic corrections that tend to be about grandstanding rather than precision.
No back-seat driving
Interrupting an existing discussion to offer opinions without committing to the conversation
No subtle “-isms” (“It’s so easy my grandmother could do it!”)
Small expressions of bias (racism, ageism, homophobia) that can make individuals feel unwelcome, disrespected, or unsafe.
μ΄λ¬ν λ°λ ν¨ν΄λ€μ μλνμ§ μκ² λνλ μ μμ΅λλ€. λκ΅°κ°κ° λμμ΄μ§ λκ³ μ λ Έλ ₯νμΌλ λ»νμ§μκ² μλ체νκ³ λ¬κ°μνμ§ μμ μ μμ΅λλ€. Recurse μΌν°μ μ¬νμ κ·μΉλ€μ΄ μ¬κΈ°μ λμμ΄ λλ κ²μ μμμ΅λλ€.
λλΌλ μ²νμ§ λ§μΈμ("λ?! μ€νμ΄ λμ§ λͺ¨λ₯΄λ€λ!")
λλΌλ μ²μ μ¬λ¦¬μ μμ κ°μ μ₯λ²½μ΄ λκ³ , κ·Έ μ‘°μ§μ μΌμλ€μ΄ μ§μμ λΆμ‘±μ μΈμ νλ κ²μ λλ €μνκ² ν©λλ€.
"μ, μ€μ λ‘λ λ§μ΄μ§" κΈμ§
νμμ΄ κΉμ΄ 보μ΄κΈ° μν μ μ μ μ νμ±λ³΄λ€λ κ³ΌμνκΈ° μν μλλ‘ μ¬μ©λ©λλ€.
λ·μ리μμ μ΄μ κΈμ§
λνμ μ°Έμ¬νμ§ μμΌλ©΄μ μ견λ§μ μ μνκΈ° μν΄ κΈ°μ‘΄ ν λ‘ μ μ€λ¨μν€λ κ²μ λλ€.
λ―Έλ¬ν "-μ¦" κΈμ§("μ΄κ±΄ μ°λ¦¬ ν λ¨Έλκ° νμ€ μ μμ μ λ μ¬μ΄λ°!")
κ°μΈμ΄ λΆνΈνκ³ μ‘΄μ€λ°μ§ λͺ»νκ±°λ λΆμν¨μ λλΌκ² νλ (μΈμ’ , λμ΄, λμ±μ λ±μ)νΈκ²¬μ΄ λ΄κΈ΄ 짧μ ννλ€μ λλ€.
12
μμΉ : PART II Culture / Chapter 3: Knowledge Sharing / Setting the Stage: Psychological Safety / Growing Your Knowledge / Ask Questions
It doesn’t matter whether you’re new to a team or a senior leader: you should always be in an environment in which there’s something to learn. If not, you stagnate (and should find a new environment).
λΉμ μ΄ νμ μλ‘μ΄ μ¬λμ΄λ , μλμ΄ λ¦¬λμ΄λ μκ΄μμ΄, λΉμ μ νμ 무μΈκ°λ₯Ό λ°°μΈ νκ²½μ μμ΄μΌ ν©λλ€. κ·Έλ μ§ μλ€λ©΄ μ 체λ©λλ€. (κ·Έλ¦¬κ³ μλ‘μ΄ νκ²½μ μ°ΎμμΌ ν©λλ€.)
It’s especially critical for those in leadership roles to model this behavior: it’s important not to mistakenly equate “seniority” with “knowing everything.” In fact, the more you know, the more you know you don’t know. Openly asking questions or expressing gaps in knowledge reinforces that it’s OK for others to do the same.
μ§λμ μν μ νλ μ¬λλ€μ΄ μ΄λ¬ν νλμ λ³Έλ³΄κΈ°λ‘ λ³΄μ¬μ£Όλ κ²μ΄ μ€μν©λλ€. "μκΈμμ"μ΄ "λͺ¨λ κ²μ λ€ μλ€"λΌκ³ μλͺ»λκ² λμΌμ νμ§ μλ κ²μ΄ μ€μν©λλ€. μ¬μ€, λ λ§μ΄ μμλ‘ λͺ¨λ₯΄λ κ² λ λ§μμ§λλ€. 곡κ°μ μΌλ‘ μ§λ¬Έμ νκ±°λ μ§μμ 격차λ₯Ό λλ¬λ΄λ κ²μ λ€λ₯Έ μ¬λλ€λ λκ°μ΄ νλλ‘ ν©λλ€.
On the receiving end, patience and kindness when answering questions fosters an environment in which people feel safe looking for help. Making it easier to overcome the initial hesitation to ask a question sets the tone early: reach out to solicit questions, and make it easy for even “trivial” questions to get an answer. Although engineers could probably figure out tribal knowledge on their own, they’re not here to work in a vacuum. Targeted help allows engineers to be productive faster, which in turn makes their entire team more productive.
μ§λ¬Έμ λ°λ μͺ½μμλ λ§μ΄μ£ , μ§λ¬Έμ λ΅ν λμ μΈλ΄μ¬κ³Ό μΉμ ν¨μ΄ μ¬λλ€μ΄ λμμ μμ²ν λ νΈμν¨μ λλΌλ νκ²½μ λ§λλλ€. μ§λ¬Ένλ λ° μ²μμ μ£Όμ ν¨μ μ½κ² 극볡νκ² νλ©΄ λΆμκΈ°κ° μΌμ° μ‘°μ±λ©λλ€. μ§λ¬Έμ μ»κΈ° μν΄ μμ λ΄λ°κ³ , "μ¬μν" μ§λ¬Έλ€ μ‘°μ°¨ λ΅μ μ½κ² μ»λλ‘ ν©λλ€. μμ§λμ΄λ€μ΄ μλ―Έ μ€μ€λ‘ μ½κ² μμλΌ μ μλ μ¬μν μ§μμΌμ§λΌλ, κ·Έλ€μ μ무 κ²λ μλ μ§κ³΅μνμμ μΌνλ €κ³ μ¬κΈ° μλ κ²μ΄ μλλλ€. λͺ©νλ‘ μΌμ λμμ μμ§λμ΄λ€μ μμ°μ±μ λ λΉ λ₯΄κ² λμ΄κ³ , κ²°κ³Όμ μΌλ‘ ν μ 체μ μμ°μ±μ μ¦μ§μν΅λλ€.
13
μμΉ : PART II Culture / Chapter 3: Knowledge Sharing / Setting the Stage: Psychological Safety / Growing Your Knowledge / Understand Context
Consider the principle of “Chesterson’s fence”: before removing or changing something, first understand why it’s there.
In the matter of reforming things, as distinct from deforming them, there is one plain and simple principle; a principle which will probably be called a paradox. There exists in such a case a certain institution or law; let us say, for the sake of simplicity, a fence or gate erected across a road. The more modern type of reformer goes gaily up to it and says, “I don’t see the use of this; let us clear it away.” To which the more intelligent type of reformer will do well to answer: “If you don’t see the use of it, I certainly won’t let you clear it away. Go away and think. Then, when you can come back and tell me that you do see the use of it, I may allow you to destroy it.”
"체μ€ν€μ μΈν리" μμΉμ κ³ λ €ν©μλ€. 무μΈκ°λ₯Ό μ κ±°νκ±°λ λ°κΎΈκΈ° μ μ, μ μ΄κ²μ΄ κ±°κΈ° μλμ§ λ¨Όμ μ΄ν΄νλ κ²μ λλ€.
무μΈκ° κ°ννλ λ¬Έμ μ μμ΄μ, λ³νμν€λ κ²κ³Όλ λ€λ₯΄κ², ν κ°μ§ λΆλͺ νκ³ λ¨μν μλ¦¬κ° μμ΅λλ€. μλ§ μμ€μ΄λΌκ³ λΆλ¦΄ μμΉμ λλ€. νΉμ κΈ°κ΄μ΄λ λ²μ κ·Έλ¬ν κ²½μ°κ° μ‘΄μ¬νλλ°μ, κ°λ¨νκ² κΈΈμ κ°λ‘μ§λ¬μ μΈν리λ λ¬Έμ΄ μΈμμ Έμλ€κ³ ν΄λ΄ μλ€. λ νλμ μΈ κ°νκ°λ μ μΎνκ² λ€κ°κ°μ "μ΄κ²μ μ©λλ₯Ό λͺ¨λ₯΄κ² λ€μ. μΉμλ²λ¦¬μ£ ."λΌκ³ λ§ν©λλ€. λ μ§μ μΈ κ°νκ°λ λ€μκ³Ό κ°μ΄ λ΅ν κ²λλ€ "μ©λλ₯Ό λͺ¨λ₯΄κ² λ€λ©΄, μ΄κ²μ μΉμλ²λ¦¬λΌκ³ λ§ν μκ° μμ΅λλ€. κ°μ μκ°νμΈμ. κ·Έλ¦¬κ³ , λ€μ λμμμ λ΄κ² μ΄κ²μ μ©λλ₯Ό λ§ν΄μ€ μ μμ λμ μ΄κ²μ νκ΄΄λ₯Ό νμ©ν©λλ€."
Seek out and understand context, especially for decisions that seem unusual. After you’ve understood the context and purpose of the code, consider whether your change still makes sense. If it does, go ahead and make it; if it doesn’t, document your reasoning for future readers.
νΉν λΉμ μμ μΈ κ²°μ λ€μ λν΄μ λ§₯λ½μ μ°Ύμμ μ΄ν΄νμΈμ. κ·Έ λ§₯λ½κ³Ό μ½λμ λͺ©μ μ μ΄ν΄ν νμ, λΉμ μ μμ μ¬νμ΄ μ¬μ ν μλ―Έκ° μλμ§ μκ°νμΈμ. μλ―Έκ° μλ€λ©΄ κ³μ μ§ννμκ³ μμ νμΈμ. κ·Έλ μ§ μλ€λ©΄, λ―Έλμ λ μλ€μ μν΄ λΉμ μ μΆλ‘ μ λ¬ΈμννμΈμ.
'λΉ κ΅¬λ© μ±μ°κΈ°' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[Android] 리μ¬μ΄ν΄λ¬λ·° notifyDataSetChanged() μ λλ©μ΄μ λμ μ ν λ (0) | 2021.09.02 |
---|---|
[Android] ExoPlayer λμμ νλ μ΄ (0) | 2021.09.01 |
[Android]ViewPager2 infinite auto scrolling (0) | 2021.08.11 |
[Android]Glide fitXY (0) | 2021.08.11 |
[Android]AlertDialog.Builder- dismiss() μ¬μ© λ¨λ° (0) | 2021.08.09 |