[PS 이전의 기본기] subproblem 관측 능력

Ziggy Stardust·2024년 10월 9일
0

냥소리

목록 보기
1/1

삶은 복잡한 문제 덩어리

PS 이전에 문제해결능력에 관한 짧은 의견입니다.

본격적으로 프로그래밍을 하게되고 굵직한 무언가를 만들게 된다면 그 대상은 항상 현실의 복잡한 문제를 해결하는 것일 겁니다.

경험이 많이 없을 땐 무작정 키보드에 손이 가겠지만 어느 정도 경험이 생긴다면 분석을 먼저 하게 됩니다. 좀 더 구체적으론 무엇을 해결해야하는지를 정의하고(문제 정의) 배경을 조사하고 현재 조직의 상황을 고려하며 적합한 해답을 구할 것입니다.

이러는 과정 내에서도 제가 가장 중요하다 생각하는 요소는 복잡한 문제를 잘 나누는 능력이라 생각합니다.

복잡한 문제를 만나게 되면 지레 겁먹고 막막한 생각이 먼저 들지만 그럴 때 일수록 숨 한 번 들이쉬고 이 복잡한 문제를 좀 더 쉽게 나눌 순 없을까? 고민을 해야 합니다.

그렇게 하다보면 처음에 무척 복잡해 보이던 문제도 조금씩 해결해 나갈 수 있을 것입니다.
(비교적 간단해진 문제는 거인의 어깨에 올라서 내려다보듯 보다 할만한 기분이 들 것입니다.)

사실 대부분의 사람들이 살아가면서 복잡한 문제를 경험해봤을 것이고 무의식적으로라도 이러한 과정을 당연히 걸어왔을 것이라 생각합니다. 하지만 이러한 과정을 의식적으로 훈련해온 사람과 그렇지 않은 사람과의 차이는 상당히 크다고 생각합니다.


어떻게 훈련을 해?!!

가장 중요한건 깊게 생각해보는 것입니다. 매 순간 오버클럭을 경험하는 CPU의 마음을 이해하듯 깊게 생각해보는 것입니다. 처음부터 이러긴 정말 힘들것 입니다. 제가 가장 좋아하는 방식은 복잡한 무언가를 도식화, 문서화하는 것입니다. 펼쳐늘어놓다보면 머릿속에서 저장에 대한 비용이 줄고 깊게 생각하는 것에 좀 더 힘을 쓸수 있는 기분이 들었습니다. 또 기하적인 표현은 새로운 영감을 주어 가끔씩 문제를 해결하는데 도움을 주었습니다.

가장 사소한 실천법은 기존에 마주했던 사소한 문제들도 그냥 넘어가지 않고 좀 더 다른 관점에서 볼 순 없었을까? 복잡한 문제를 이번엔 잘 해결했더라도 이 문제를 좀 더 쉽게 나눠볼 순 없었을까? 고민하는 것입니다.


제목에는 있어보이게 subproblem 관측 능력이라 했는데 이건 PS 공부를 하다가 subproblem 을 보고 떠올린 말입니다. 앞서 말한 상황이랑은 정확하게 일치하지 않을 수도 있겠단 생각이 들지만 제 마음엔 드니 저혼자 혼잣말로 사용해야겠습니다.

profile
spider from mars

0개의 댓글