본문 바로가기
프로그래밍 놀이터/Tips

[실용주의 프로그래머] 불가능한 퍼즐 풀기

by 돼지왕 왕돼지 2018. 11. 9.
반응형

[실용주의 프로그래머] 불가능한 퍼즐 풀기


[실용주의 프로그래머] 불가능한 퍼즐 풀기, 자유의 정도, 제약 인식


-

퍼즐을 푸는 비법은 (상상 속이 아닌) 실제의 제약 조건을 알아내고, 그 속에서 해법을 찾는 것이다

어떤 제약 조건은 절대적이지만, 다른 것들은 단순히 지례 짐작한 것들에 불과하다.

절대적 제약 조건에 대해서는, 그것이 아무리 불쾌하거나 멍청해 보이건 간에 경의를 표해야만 한다.

반면에 그럴싸해 보이는 제약 조건들이 사실은 실질적 제약 조건이 전혀 아닐 수도 있다.



-

어떤 퍼즐이든 그것을 해결하는 열쇠는 제약을 인식하는 것과 더불어 여러분에게 주어진 자유의 정도가 얼마나 되는지도 깨닫는 것이다. 퍼즐의 해답은 그 자유의 정도 안에서 발견된다.



-

생각의 틀을 벗어나지 말고, 틀을 찾아라



-

풀리지 않는 문제와 마주쳤다면, 생각해 볼 수 있는 모든 가능한 해결 경로를 눈앞에 나열해보라.

아무리 쓸모없고 바보같아 보이는 경로라도 절대 버리지 말라.

이제 목록을 하나씩 점검하면서 왜 그 경로를 따라갈 수 없는지 설명해보라.

정말 확신하는가? 증명할 수 있는가?



-

제약들을 범주별로 나누고 우선순위를 매겨라.



-

어떤 때는 문제가 생각보다 훨씬 어렵다는 것을 발견하는 때도 있다.

바로 이 ‘불가능’한 문제 때문에 일정이 늦어지고 있거나, 심지어 시스템을 동작하게 만드는 일 자체를 포기하고 있을지도 모른다.


바로 이 때가 한 걸음 뒤로 물러서서 다음 질문을 스스로에게 해 보아야 할 시점이다.


더 쉬운 방법이 존재하는가?

진짜 문제를 풀려고 노력하고 있나. 그렇지 않다면 중요하지 않은 기술적 문제에 정신이 팔려 있는 것인가?

왜 이것이 문제인가?

문제를 이렇게 풀기 어렵게 만드는 것이 무엇인가?

반드시 이 방법으로 해야 하는가?

반드시 해야 하는 일이긴 한가?


이 질문들에 대한 답을 찾으려고 노력하다가 어느 순간 갑작스럽게 깨달음을 얻는 경우가 많다.




반응형

댓글