brunch

You can make anything
by writing

C.S.Lewis

by 안영회 습작 May 09. 2023

Dimensions of Variability 응용

함수형 인간 2023

<동시성, 병렬, 비동기, 논블럭킹과 컨셉들>이라고 굉장히 포괄적으로 정리된 블로그가 있어 즐겨찾기 해 두었다가 오랜만에 읽었습니다. 그런데 다음 표에서 딱 멈추지 않을 수가 없었습니다.


Dimensions of Variability

지난주에 제출할 요즘IT 기고문에서 인용했던 Kent Beck의 표와 구성이 똑같았습니다. 해당 구절에 Kent Beck이 붙인 소제목도 가져옵니다. 자~ 이제 무엇을 비교해 볼까요?

Blocking의 의미가 분명해집니다. '다른 일을 못하고 대기'하는 상황입니다. 호출한 함수가 제어권을 호출된 함수에게 넘기기 때문에 대기가 발생한다 볼 수 있습니다. 처음의 표는 프로그래밍의 호출 관계이지만, 후자는 개발자 사이에서 벌어지는 코드 리뷰입니다. 사람들의 상황에 맞춰서 Blocking 풀이를 해 볼까요? 코드 리뷰를 요청한 사람과 제어권을 넘기지만 완료 여부를 스스로 판단하는 상황을 짝 작업(Pairing)이라고 할 수 있습니다.


협업 대상 둘이 시간을 점유(공유)하며 함께 일을 해내는 과정이군요. 이러한 정의나 짝 작업(Pairing)은 프로그램에 대해서나 사람의 협업에 대해서나 모두 사용할 수 있는 표현입니다.


Callback과 PR

Blocking 상황 즉, '다른 일을 못하고 대기'하는 상황이지만 호출한 프로그램이 아니라 호출된 프로그램이 완료 여부를 통보하는 것을 Callback이라고 합니다. Blocking 상황에서 비동기 프로그래밍을 적용하는 방법이라 할 수 있습니다.


이를 코드 리뷰 상황에 빗대어 보면 PR(Pull Request)이 됩니다. 북경에 있을 때, CTO 님이 개발 절차에 코드 리뷰를 녹여 넣으려고 PR을 필수적인 단계로 만들었던 장면이 떠 오릅니다.


강제가 없는 Reivew

개발자의 성숙도가 높아지면 반드시 PR을 통해 리뷰를 강제할 필요가 없을 수 있습니다. 이론적으로는 그렇지만, 그런 상황에서 일해본 적이 없긴 합니다. 물론, 코드가 엉망인데 간헐적 리뷰를 할 수 있긴 하죠.


아무튼 이렇게 강제가 없는 상황을 프로그래밍에서도 구현할 수 있습니다. 다만 Blocking이 없어 다른 일을 한다면 이후에 요청한 작업이 끝났을 때 적절한 지점으로 돌아와 다음 지시문을 수행하게 프로그램을 짜는 일은 쉬워 보이지 않습니다. 굉장히 짜임새 있게 작성해야 할 듯한데... 일단, 저는 그렇게 짜 본 일이 없군요. 어렴풋하게 상태를 기반으로 하는 객체 지향 프로그래밍이 도리어 불리하고, 함수형 프로그래밍이 강점을 보이는 영역이 될 듯하다는 생각도 듭니다만, 어디까지나 경험이 없는 추정일 뿐입니다.


결론

즉흥적으로 해 본 일이라 어찌 마무리를 해야 할까요? 표의 와꾸(frame)만 재사용하는 일도 어느 때나 써먹을 수 있는 기능으로 보아 함수형 인간 연재로 편입하기로 합니다. HBR을 읽으면서 눈에 들어온 <사분면 혹은 매트릭스 활용하기>와도 일맥상통하네요.


지난 함수형 인간 관련 글

1. 함수형 인간 재개

2. 함수형 인간, 대체 무슨 말인가?

3. 함수형 인간 프레임워크

4. 기회비용을 인식하는 독서 관문

5. 여섯 개의 주제에서 여섯 개의 흐름으로 바꾸기

6. 읽고 있는 책 현황을 데이터로 목표를 보정하기

7. 조심스럽게 ChatGPT 탐색하다가...

8. ChatGPT를 바라보는 나의 관점 만들기

9. 책 습관 문지기를 두레이로 구현하기

10. 함수형 인간은 나에게 어떤 효용을 주는가?

11. 퍼스널 칸반의 새로운 쓰임새 도전

12. 스마트폰과 건강하게 함께 살기

13. ChatGPT 시대의 전문성 개발하기

14. ChatGPT 말고 ChatPDF 일상 도구로 사용하기

15. ChatGPT로 쌓여 있는 읽을거리 처분하기

16. 맥락을 제한하고 ChatGPT에게 질문하기

17. ChatGPT 요약의 한계와 쓰임새

18. 관성을 제약하고, 목적과 몰입을 동시에 추구하기


작가의 이전글 프로덕트 리더십이 중요한 이유
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari