코딩처럼(Coding)

20150321_183610컴퓨터 프로그래밍의 매력에 빠진 것은 중학교시절이었다. 당시 삼성 SPC 퍼스털컴퓨터 시리즈가 막 나올때 Basic를 배웠다.  지금보면 간단한 것이지만 코딩한대로 화면이 움직이는 것을 볼때 그 흥분은 참 좋았던 것 같다. 사실 같은 감정은 여전히 가지고 있다. 세월이 지나 여러가지 언어를 시도하다가 이젠 Mysql+PHP+Java+HTML5+CSS 정도 선에 머물면서 웹개발자로 UI에 관심을 가지는 정도로 만족하며 살고 있다.

얼마전 시사기획 창에서 “로봇혁명 미래를 바꾸다”라는 다큐를 관심있게 봤다. 로봇의 혁명이 미래를 바꾼다는 긍정적인 기대와는 다르게 향후 10년안에 30-40개의 직업이 사라질 것이라는 약간의 부정적인 결과를 예측하면서 앞으로 보장된 기술이 코딩이라는 내용을 일부 제시한다. 시대에 요구사항을 미리 예측한 유럽의 몇몇 공립학교에서는 Raspberry pi를 이용한 기본적인 코딩을 어렸을때 부터 교육을 시도했고, 반응이 좋아 지금 나라전체로 확산된다는 내용도 담고 있다.

어떻게 보면 재미삼아 코딩을 삶의 일부로 익힌 것이 감사하다. 컴퓨터의 어떤 분야가 아니라, 방송에서 말하는 것처럼 “알고리즘”에 대한 감각을 익힐 수 있어서 감사하다는 이야기다. 알고리즘은 생각과 논리에서 일정한 패턴을 찾아내어 도출된 문제를 해결하기 위한 일정한 규칙(행위)의 모음을  정하는 것이다.

방대한 정보가 있어도 실 생활에서 어떤 문제를 해결해나가는데 있어서는 다양한 접근법이 존재한다. 컴퓨터언어와 같은 알고리즘이 아니더라도 문제를 파악하고 정보를 취합하여 재활용하는 생활코딩은 이런 접근법에 훌륭한 조언을 해준다.  코딩을 하면서 개인적인 삶과 목회에 있어서도 다음과 같은 적용점을 찾아본다.

1. 결과가 아니라 바탕이 되어라. (Platform)

A라는 프로젝트의 결과물을 만들기위해 코딩을 할때 항상 염두해주는 것은  유지보수측면이다.  혹시나  A”라는 변형된 프로젝트가 요구되었을 때 유연성있게 대처하도록 하는 것이다. 시간이 없다고, 비용이 부족하다고 우선 결과물에만 치충해서 코딩을 하다보면 나중에 수정하고 보수하는데 엄청난 제반비용이 소요된다는 것은 프로그래머들은 안다. 더 똑똑하고 경험이 많은 프로그래머들은 A”와 같이 유사한 프로젝트만을 위한 것이 아니라 전혀 다른 B, C라는 프로젝트에서도 대응할 수 있는 객체지향적인(Object-Oriented Programming)을 선호한다.  나아가 욕심을 내면 결과지향적이기 보다는 바탕지향적인 코딩을 원한다. 그래서 한 가지의 문제보다는 보다 더 많은 경우의 문제를 수용할 수 있는 코딩을 원하고, 따라서 더 많은 일들이 효율적으로 자생하도록 하는 것이다.

윈도우, 맥, 리눅스등과같은 OS(Operating System)를 Platform이라고 부른다. 구글의 기본적인 Tool들은 기본적으로 Platform적인 마인드 셋을 가지고 있다. 이는 자체적인 기능으로 생산성을 확정시키지 않고, 자신은 바탕이 되어 그 위에 더 많은 소프트웨어들이 생산적으로 효율성을 가지도록 돕는다.

프로그래머적인 관점에서 보면 하나님은 교회를 객체지향적으로 지으신 것 같다.  몸으로 비유된 교회는  결론적인 결과물로 만들어진 것이 아니라, “믿음으로 고백한 무리”라는 강력한 핵심 코딩을 바탕으로 Platform적인 개념으로 형성되었다고 본다. 그래서 엄격하게 말하면 “교회 안에(in the church)” 가 아니라 “교회 위에(on the church)”  많은 사역들이 유기적으로 연관되면서 자생(Self-production)되고, 재생(reproduction)되는 그런 구조이다.  이렇게 유기적이고 재생산되는 플랫폼에서는 “개방개념”이 항상 선행된다. 통제되고, 구속되고, 제한되는 구조속에서는 새로운 것들이 재생산될 수 없다.  초대교회를 보면 통제하지 않아도, 또 그렇게 구속하지 않아도 모이는 곳에서 자연스럽게 계속 교회가 확장되어가고 새로운 사역들이 자연스럽게 재생산되는 것을 본다.

하지만, 최근의 현대교회는 교회성장과 경제시장개념을 도입하여 이런 원초적인 플랫폼적인 개방형사역보다는 통제되고, 조직화되고, 결과 도출적인 프로그래밍화된 사역으로인해 성령님의 역동적인 재생산과 자생적인 사역의 기회가 방해받는 경우가 많다고 생각한다. 근자의 세상은 오히려 개방형과 협업으로 소통을 중시해나가는 방향인데, 오히려 교회는 더 폐쇄적이고, 통제되고 소통이 가장 어려운 조직이 되어가는 것이 안타깝다.

삶의 측면에서도 결과적으로만 달려가다 보면 유지보수에 대한 유연성이 없어진다. 나의 삶이 목적이 되지 않고, 누군가의 삶을 위한 바탕이 되는 삶이 될 필요가 있음을 코딩을 통해서 드려다 본다.

2 단순함에 승부를 걸자. (Simplification)

고수의 프로그래머들은 복잡성에서도 단순함을 추구한다. 코딩을 하는데, 1000줄이 필요할때 고수는 100줄로 똑같은 문제를 처리할때가 있다.  실력의 차이기도 하지만, 생각의 차이인 경우가 많다. 문제를 보는 시각과 생각이 복잡하면 그 복잡성이 그대로 코딩에 나타난다. 그런데 고수는 전혀 다른 관점에서 문제를 단순화 시킨다. 또 똑같은 코딩이라도 해도 고수가 작성한 코딩을 보면 그 Format이나 흐름이 예술과 같다는 생각이 들때도 많다.  코딩이 복잡하다는 말은 어지러운 책상과 같고, 단순하다는 것은 정리된 것과 같다. 일반적으로 복잡한 부분을 단순화할때 가장 많이 손이 가는 부분이 불필요한 반복을 단순화 시키는 것이다.

교회의 조직의 복잡도 단순화 할 필요가 있다. 일반적으로 교회내에서 불필요한 소통의 채널때문에 생각외로 힘들어하는 성도들이 있다. 뿐만아니라 교회의 사역도 비전에 맞지 않는 불필요한 사역의 배치로 인해 이중적인 낭비를 가져오는 경우도 있다. Thom S. Rainer와 Eric Geiger는 “Simple Church”에서 불필요한 사역의 중첩에 대한 조사를 했다.  단순함이 최고는 아니지만 불필요한 복잡성은 단순함으로 그 효율을 증대 시킬 필요는 있다. 교회사역을 효율성으로 접근하면 “시장경제논리”로 교회를 본다는 반대를 하는 경우가 있지만 주님이 머리이신 교회는 이세상의 어떤 것과 비교할 수 없는 극대화된 효율성을 가진 유기체라고 생각한다.  다만 인간의 비효율적인 습성으로 방해받고 있을 뿐이다.  결코 이익을 위한 효율성을 말하고 있는 것이 아니다.

개인적인 삶에서도 각자의 사회적 역할에 따라 굉장히 바쁘고 복잡한 삶을 산다. 그렇지만 어떤 사람은 바쁜가운데서도 항상 자신만의 시간을 가지고 여유있게 사는 사람이 있다.  카카오톡 소리에 반응하지 않기,  이메일은 일정한 시간만 체크하고, 자신의 시간에는 전화기를 꺼놓고, 묵상할 수 있는 시간을 항상 일정하게 빼놓는 것을 잊지 않는 것이다.

3. 고정관념을 버리자 (No stereotype)

코딩을 하다보면 “일점일획”이 얼마나 중요한지 늘 느낀다. 마침표 하나 없거나 잘못 찍혀 수정하고 고치는데 많은 시간이 걸린다는 것은 한번 쯤은 경험한다. 이렇게 에러를 찾을때 고정관점을 가지게 되면 정말 문제를 찾지 못하는 수가 있다. 잃어버린 동전을 찾기 위해서 방을 다 치우는 여인처럼 처음부터 한줄씩 점검해 나가는 수 밖에 없다. 여기는 절대 틀리지 않았을 것이라고 생각하는 순간에 결국 더 많은 시간을 허비 하고 난다음에 고정관점을 가졌던 “여기”에서 문제를 발견하고는 짜증이 나는 경우가 많다.

에러가 났을때만이 아니라, 어떤 부분을 개발할때에도 마찬가지다. 새로운 기술과 접근방법이 개발되었음에도 불구하고, 늘 해오던 방식이 최고라고 생각하면 더 이상의 발전이 없어진게 된다.  한때 Java에서 Ajax라는 기술이 나왔을때 많은 웹개발자들이 흥분했었다… 적용하는데 적지 않은 코드가 들어갔었는데. 요즘은 jquery등을 이용해서 한줄로 해결하는 경우도 많다. 그 뿐만 아니라 더 많은 기능들이 제공되고있다.

개발자들은 부지런히 고정관념을 버리고, 새로운 기술을 빨리 수용하고 터득하지 않으면 이 생태계에서 살아남을 수가 없다. 윈10이 나오면서 지금까지 사용해오던 Explorer 를 버리고 스파르탄(Spartan)이 나온다고 한다. 반갑지만 또 고민이 된다. 갑자기 잘 되던 웹사이트가 이상하게 보인다 그런 소리가 들릴까봐…..

삶의 기본적인 가치는 변함이 없다. 그러나 살아가는 방식은 언제나 새로운 것을 요구한다. 마음을 열고 또 넉넉하게 수용하지 않으면 어느순간에 알지못하는 불편함이 생기게 된다. 부지런히 소통하고, 새로운것을 수용하는 자세가 필요하다.