DaehunGwak / study-pragmatic-programmer

실용주의 프로그래머 (20주년 판) 스터디
5 stars 1 forks source link

1주차 - 1. 실용주의 철학 (Topic 01~04) #2

Open DaehunGwak opened 2 years ago

DaehunGwak commented 2 years ago

진도

  1. 실용주의 철학 (Topic 01~04)

일시

donghoon-song commented 2 years ago

1장. 실용주의 철학

Topic1 당신의 인생이다

우리에게는 스스로의 행동을 직접 결정할 수 있는 힘이 있다. 이 업계는 우리에게 다양한 기회를 주고, 주도권은 우리에게 있으니 행동하라.

Topic2 고양이가 내 소스 코드를 삼켰어요

개인적으로 최선을 다하는 것이 전부가 아니다. 불가능하거나 위험 요소가 크면 책임을 맡지 않을 권리가 있고 실수를 저지르거나 잘못된 판단을 내렸다면 잘못을 인정하고 대안을 제시해야 한다. 책임을 맡은 업무에서 외부 요인이 문제가 있더라도 그것까지 커버해야 한다.

“잘 모르겠어요. 하지만 알아볼게요” → 모른다는 것을 인정하고 전문가답게 책임을 지는 방법

현재 회사를 다니면서 스스로 결정을 많이 합니다. 그 결정이 합리적이라면 전적으로 믿어주는 팀원들이 있습니다.

Topic3 소프트웨어 엔트로피

나쁜 설계, 잘못된 결정, 형편없는 코드 등은 모두 깨진 창문이며 발견하자마자 고칠 것. 엔트로피가 우리를 지배하도록 내버려두지 말 것

그러기 위해서는 먼저 망가트리지 말아야 한다.

프로젝트에 깨진 창문은 얼마나 많은지? 어떻게 고칠 것인지?

Topic4 돌멩이 수프와 삶은 개구리

변화의 촉매가 될 것. 사람들은 각자 자신의 자원을 지키려고 한다. (시작 피로) 계속되는 성공에는 합류하기 쉽다.

비슷한 경험을 했습니다. 같이 일하는 디자이너분들과 사이드 프로젝트를 하는데, 첫 미팅 후에 다음 미팅 때 간단하게라도 데모 버전을 보여드렸던 적이 있습니다. 굉장히 반응은 뜨거웠고 크게 동기부여가 되서, 아이디어도 많이 나왔고 디자이너 분들의 의욕이 넘쳐나는 것이 보였습니다. 다음 미팅때도 기능을 조금 더 추가한 데모 버전을 보여드렸고 그 결과 업무에 지쳐있던 분들의 컨디션을 끌어올릴 수 있었고 계속해서 동기를 부여할 수 있었습니다.

큰 그림을 기억하라. 당장 하고 있는 일에만 정신을 쏟지 말고, 주변에서 무슨 일이 벌어지는지 살펴봐야 한다.

Edwin222 commented 2 years ago

1장

1-1. 당신의 인생이다

특히나 격무에 시달릴 수록 앞으로의 삶과 주변 환경에 대해서 아무 생각도 안하게 되는 경우가 많다고 생각한다.

문제는 이러한 문제들에 대해서 생각하지 않으면 그 격무에서 영원히 벗어날 수 없다는 거..

보통 가장 먼저 타협할 수 있는 비용으로 이러한 고민에 대한 비용을 선택하는 경우가 많은데 그리 해서는 안 된다고 생각한다.

1-2. 고양이가 내 소스 코드를 삼켰어요

"죄송합니다. 제 잘못이에요."가 생각보다 꺼내기 어려운 말이다. 높으신 분들과 함께 있는 자리에선 더더욱 그렇다. 하지만 이걸 제 때 얘기하지 못하면 정말 수습하기 어려운 사고가 터지게 되더이다..

1-3. 소프트웨어 엔트로피

마침 최근에 깨진 창문을 하나 수습했던 적이 있다. 도전해볼 것에 대한 답 대신 해당 과정을 공유함.

문제를 알게된 과정

  1. 여러 로직 작업에 필요한 기반 코드를 작성하고, 설계 철학을 발표했고, "하면 안되는 것들"에 대해서 코드 및 문서에 틈틈히 기록

  2. 그 이후 다른 문제들을 처리하러 가면서 대략 반년간 해당 기반 코드를 보지 않았음

  3. 그리고 해당 기반 코드와 관련된 설계 논의를 요청받으면서, 요청자가 이상한 말을 하는 걸 듣고 불길한 직감을 느낌

  4. 아니나 다를까 코드는 예전의 모습이 거의 남아있지 않은 엉망진창인 상태였다.

문제가 발생한 원인

  1. 초기에 작성된 기반 코드는 실제로 필요했으나 설계 시점에서 밝혀지진 않았던 몇 가지 요구사항들을 만족시킬 수 없는 상태.

  2. 이 시점에서 해당 작업자가 기반 코드를 고치기 위한 설계 논의를 하는 것 보다 당장 창문을 깨고 구멍을 내서 돌아가기만 하는 코드를 만드는 걸 선택함

  3. 하필 해당 코드는 "상호작용"이었고 인게임 로직의 코드 대부분이 그쪽을 거쳐가게 됨.

  4. 누가 창문을 깬 거 보고 원래 그렇게 하나보다 하는 식으로 잘 모르는 사람들이 같이 창문을 깨기 시작

  5. 현재의 유지보수 불가능한 누더기가 탄생

수습 과정

  1. 일단 해당 로직을 건드렸거나 건드릴 모든 프로그래머를 불러모았음

  2. 같이 모여서, 커버할 수 없었던 요구사항을 커버 가능한 새 설계를 만들었다.

  3. 그리고 그 자리에 있던 사람들에게 "OK 떨어질 때 까지 이거 건들지 마세요" 했음

  4. 작업 시작. 이틀에 걸쳐서 기존에 있던 구현을 다 부수고 새로 작성함

  5. 테스트 도중 의도대로 동작하지 않는 부분이 있어서 보아하니 또 다른 곳의 깊은 부채와 엮여있는 부분이 있었다

  6. 해당 부분만 동작을 롤백하고 앞뒤 및 중간 중간에 주석을 덕지덕지 바르고 메소드 이름에 HACK__ 따위를 붙이는 형태로, "절대 이렇게 하면 안되겠다" 스티커를 덕지 덕지 붙인 상태로 일단 마무리.(현상태)

1-4. 돌멩이 수프와 삶은 개구리

Life Is Frog

DaehunGwak commented 2 years ago

Topic 1. 당신의 인생이다

요즘 무기력한 증상이 많이 찾아오고 있었고, 왜 나의 상황은 이럴까에 대한 고민을 하고 있었다. 부질없다. 그냥 내가 스스로 계속 해야하는 것이다. 불만이 있다면 바꾸고자 노력해보자.

Topic 2. 고양이가 내 소스 코드를 삼켰어요

Topic 3. 소프트웨어 엔트로피

Topic 4. 돌멩이 수프와 삶은 개구리

open-feign 이라는 api 클라이언트를 팀내에서 가볍게 소개해주신 분이 있는데, 내가 여기에 감회를 받아 여러 테스트를 해본적이 있다. 이런식으로 완벽하지 않더라도 알게된 것을 공유하여 감회되는 분이 한 사람이라도 있다면 이에 관해 다양한 관점으로 디테일을 쌓을 수 있지 않을까?

minkukjo commented 2 years ago

끄적끄적

얘기해보면 좋을 만한 주제들

DaehunGwak commented 2 years ago