달력

3

« 2024/3 »

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
2012. 7. 11. 15:30

칼럼: 펑션형 인간 by 92012. 7. 11. 15:30

펑션(Function)은 함수다. 함수는 어떤 한 지점에서 다른 한 지점으로 연결하는 규칙을 말한다. A에서 B로 이어지는, A가 B로 바뀌는 규칙, 마술 같은 이론이다. 말로는 거창하지만 사실은 별거 없다. 예를 들어 2에서 4로 바뀌는 마법은 “곱하기 2”라는 식이다. 너무 시시한 마법이라는 생각도 들겠지만 함수는 이렇게 쉬운 것에서 출발한다. 함수가 펑션이고, 펑션이 함수다.



함수는 수학 시간에 들어 본, 어렴풋이 생각나는 이름일 수 있다. 수학이라는 과목 때문에 거부감이 들지도 모르지만 펑션은 우리 생활에 생각보다 가까이에 있다. 동전을 넣으면 커피가 나오는 커피 자판기도 펑션이라 할 수 있다. 커피 자판기 펑션. 동전에서 커피로 연결하는 규칙, 동전이 커피로 변하는 마법이다. 뭘 넣으면 뭐가 나온다 하는 해석이면 모두가 펑면일 수 있다. 전기를 넣으면 불이 켜진다. 램프의 펑션은 그렇게 해석 할 수 있다. 주고 받는 거래와도 비슷하다.


펑션은 입력과 출력, 그리고 그 사이의 변화규칙으로 이뤄진다. 변화규칙이 바로 그 펑션의 이름이자 기능이다. 커피자판기 펑션에서 입력은 동전, 출력은 커피다. 그리고 그 사이에 있는 우리가 알지 못하는 기계 내부의 움직임이 변화규칙에 해당한다. 변화규칙에 대해선 자세히 모르지만 분명한 것은 그 과정을 통해 출력물인 커피가 나온다는 것이다.


펑션을 이용하면 생각을 논리적으로 정리하는데 도움이 된다. 문제를 단순화 시켜 큰 그림을 볼 수 있게 도와주기 때문이다. 커피 자판기 경우 처럼 어떻게 커피를 만드는지에 대한 의문은 미뤄두고, 주고 받는 것에만 집중해서 문제를 단순화 시킬 수 있다. 이해 가능하고 실천 가능한 문장으로 풀이 될 때까지 문제를 헤쳐나가다 보면 어느 부분이 꼬였는지 어느 부분이 오해의 소지를 만들고 있는지 찾아낼 수 있다.


샛길로 빠지기 쉬운 중간 단계의 복잡함을 한 문장으로 요약하고 나면 큰 그림이 보인다. 문제를 해결하는 설계도를 그리기가 쉬워지는거다. 코끼리를 냉장고에 넣는 방법 같은 문제 풀이다. 냉장고 문을 연다. 코끼리를 넣는다. 문을 닫는다. 어떻게 넣을까 하는 것은 그 다음 문제다. 전체 흐름은 문을 열고 넣고 닫는다는 큰 그림을 그리는데 펑션이 사용된다.

각각의 펑션을 어떻게 만들지는 그 다음에 생각한다. 이미 만들어진 펑션을 사용할 수도 있고, 펑션에 해당하는 사람에게 부탁할 수도 있다. 펑션을 사용하는 방법은 내가 필요로 하는 출력을 만들어줄 펑션을 고르는 것, 그 펑션이 원하는 입력을 넣어 주는 것 그렇게 2가지면 된다.


햄버거 가게에서 햄버거를 주문하면 햄버거가 나온다. 패티를 어떻게 굽는지, 빵을 뒤집어 굽는지 어떤지, 토마토를 몇 센티 두께로 자르는지 등은 펑션의 처리 부분에 해당된다. 내 맘에 드는 햄버거를 내어 줄 펑션을 고르는게 사용자의 할 일이다.


업무를 아랫사람에게 위임하지 못하는 상사라면 특히나 펑션의 기능을 살펴볼 필요가 있다. 펑션은 하향식 업무 처리 방식이다. 위계질서가 분명한 조직에서 사용하기 좋다. 펑션식 일처리는 문제를 분석하고 세분화 시켜 하위 단계로 문제를 배분하는 것으로 시작한다. 하위 단계는 자신이 담당한 문제만 해결하면 되기 때문에 전체 문제를 대하는 상태보다 부담이 덜하다. 또한 지시 받은 문제를 해결하기 위해 더 세분화 시킬 수도 있다. 상위 단계에서 받은 것 처럼, 자신이 스스로 상위 단계가 되어 하위 단계를 만들 수 있다. 상위 단계에서 받은 문제를 더 쪼개 하위 단계로 문제를 내려 보낸다. 펑션의 장점은 바로 여기에 있다. 복잡한 문제도 결국은 작고 단순한 문제로 세분화 될 수 있기 때문에 해결할 수 있는 문제의 집합으로 처리해 나갈 수 있다.


주의할 점은 결과를 낼 만한 펑션을 사용해야 한다는 것이다. 곱하기 2 펑션을 사용하고서 곱하기 100의 결과를 바랄 수는 없다. 그래서 펑션식 일처리의 단점은 전체 그림을 잘 못 파악했을 때 발생한다. 펑션의 하위 클라스는 단순하고도 실제적인 문제를 해결하고, 상위 클라스는 문제를 배분하고 결과를 보고 받는 구조이기 때문에 하위 클라스는 전체 그림을 볼 수 없다. 그래서 자신의 결과가 전체에 끼치는 영향을 알지 못한다. 전체 구성이 잘 못되면 결과도 잘 못 나오는데 각 단계에서 그것을 알 수 없다.

“저는 시키는 일만 했을 뿐입니다. 그게 그런 결과를 초래할 줄 몰랐습니다.” 라고 하위 단계의 펑션은 말할 수 있다. 정말이지 하위 단계의 펑션은 전체 그림을 볼 수 없었으니까. 그렇다고 상위 단계의 펑션은 할 말이 없는 것도 아니다. “내가 시킨 것은 그게 아니다”라고 억울해 할 수 있다. 주변에서 흔히 볼 수 있는 사태다. 펑션 자체의 문제인 것인지, 펑션 자체 보다는 펑션과 펑션 사이의 배치를 잘 못 해 발생한 에러인지를 구분해 낼 수 있어야 잘못의 책임을 따질 수 있다.


현실은 대체로 펑션 자체에 에러가 있다는 결론이 나곤 한다. 그렇지만 하위 펑션의 에러에 대한 책임이 상위 펑션에 있다는 것을 간과해선 안된다. 하위 펑션에 업무를 배분하는 것은 상위 펑션의 업무다. “아랫 사람이 잘 못 이해해 결과가 이렇게 되었다” 라며 변명 할 것이 아니라 시킨 것에 대한 책임을 져야 마땅하다.


:: function image from http://en.wikipedia.org/wiki/Function_(mathematics)

:: elephant image from http://uncyclopedia.wikia.com/wiki/HowTo:Fit_an_elephant_into_the_refrigerator



:: 월간 개벽신문 11호 [2012년 6월]

:: 오마이뉴스 블로그뉴스


'by 9' 카테고리의 다른 글

칼럼: 태그, 꼬리표의 느슨함  (0) 2012.11.12
칼럼: 비효율의 가치, 앰프의 세계  (0) 2012.10.21
칼럼: 2유로 기계  (0) 2012.05.09
칼럼: 허세로운 생활의 실전 메뉴얼  (0) 2012.05.09
칼럼: 궁극의 감성로봇  (0) 2012.05.09
:
Posted by 9름