CNS Story

프로그래밍에서 인생을 배우다.

2013. 5. 10. 15:40

 

2010년 7월, ‘코딩’을 처음 만나던 날이 생각납니다. 하얀 이클립스 창을 열어놓고 멍해지던 그 시간. 한없이 하얗고 넓은 화면을 보면서, 하고 싶은 하나의 메시지를 전하기 위해 수백 번 고쳐 쓰는 작가의 창, 혹은 사랑하는 여인을 그리기 위해 정성스럽게 준비한 캔버스와도 같다는 생각을 하게 되었습니다. 다양한 방식으로 하얀 창을 가득 채우고 나면 또 하나의 새로운 세상이 펼쳐지는 곳, 그래서 프로그래밍도 예술의 일부이며, ‘나는 지금 예술가가 되어 가는 중’이라고 말이죠. 우리가 살아가는 인생을 다양한 언어로 일정한 규칙에 맞게 재치 있게 풀어나가는 것, 그것이 바로 프로그래밍입니다.


 

 

하얀 창에 하나의 변수를 선언합니다. 이름도, 속성도, 크기도 가지고 있는 이 변수엔 무엇이 담기게 될지… 또 담긴 그 변수가 어떻게 변하게 될지는 프로그램이 끝날 때가 되어야만 알 수 있습니다. 이 변수는 하나의 방법(Method)에만 머물러 있지 않습니다. Main 안에서 또 다른 개체에 있는 method를 호출하고, 때론 다른 형식의 프로그램에서도 영향을 받습니다. JAVA를 기반으로 한 프로그램에서 연속된 기나긴 여행을 하며, DB를 기반의 SQL로도 갔다가 다시 JAVA로 돌아와 최종적으로 값을 내어놓습니다.

이 과정은 마치 사람의 인생사와도 같습니다. 한 아이가 태어나 어떤 이름으로 불리고, 엄마, 아빠의 유전적, 환경적 특성을 상속받습니다. 또 한 살 한 살 나이를 먹고 학교, 회사, 결혼과 같은 큰 이벤트를 겪으며, 소소한 일상 속의 지금의 나로 성장합니다. 많은 이벤트를 거쳐 변하고 있는 지금의 제 모습처럼 말이죠. 변수에 어떤 값이 담길지 모르는 것처럼, 인생도 앞으로 어떠한 일들이 펼쳐져 있을지 알 수 없습니다. 인문학도였던 제가 지금 이 순간, 프로그래머를 하는 것처럼요. 변수가 떠나는 대서사시, 이 프로그램 소스를 들여다보고 있으면 인생에서 내가 현재 어디에서 무엇을 하고 있는가도 중요하지만, 결국은 올바른 방향으로 끝을 맺어야 한다는 생각이 들곤 합니다. 비록 지금은 내가 잠시 느리게 가고 있다 하더라도, 혹은 험난한 길로 돌아가더라도 최종적으로 가야 할 곳, 나와야 하는 output은 무엇인지 정확하게 알고 그곳을 향해 가고 있다면 괜찮은 삶 아닐까요? 물론 진짜 프로그램을 짤 때는 간결하고, 명확하게 짜야 하지만, 우리 인생의 코딩은 조금 길더라도, 주석에 그 내용을 잘 적어놓고 이정표로 삼는다면 좋겠다는 생각을 해봅니다.

 

혹자는 프로그래밍을 할 때 이것과 그것. 두 가지만 있으면 못 짤 프로그램이 없다고도 말합니다. 프로그래밍을 처음 배울 때, 외울 것이 너무 많아 복잡하고 어려웠는데요. 새로운 개념들과 수없이 많은 명령어로 풀이 죽어있기도 했습니다. 하지만 교육이 끝나고 직접 프로그래밍을 하게 되면서 모든 프로그래머가 명령어들을 다 기억하는 것은 아니었으며 또한, 기억할 수도 없다는 것을 깨달았습니다. 결국, 나를 무적으로 만드는 두 친구는 바로 ‘If’와 ‘Loop’였는데요. 특히 영어를 배웠다면 누구나 아는 그 개념, If! ‘만약 무엇이라면/한다면’이 많은 도움이 되었답니다. If를 가까이 들여다보면 사실 굉장히 원초적인 인간의 숙명과 연결되어 있습니다. 

우리는 매일 ‘무엇을 먹을까?’를 고민합니다. 오늘은 중국집에 가서 짜장면을 먹을지, 짬뽕을 먹을지… 선택의 갈림길에 서 있지요. 짜장면을 먹는다고 생각하면 짬뽕이 먹고 싶고, 그 반대의 경우도 마찬가지의 고민을 하게 됩니다. 만약 짜장을 시켜서 팀원의 짬뽕을 한 입 뺏어 먹어야겠다는 선택이 베스트일까요? 치열한 고민의 시간을 거치지 않고 난 쿨하게 짬짜면을 주문하고 먹는다면, 왠지 모르게 그 맛이 나질 않고는 하죠. 이처럼 프로그래머들은 변수가 제대로 된 조건에 잘 맞게 수행될 수 있도록 If문을 꼼꼼하게 잘 짜야 합니다. 제대로 된 If문을 걸지 않으면 변수는 이상한 조건에 걸려 의도치 않은 값이 나옵니다. 어떤 변수가 잘 짜인 If문을 거쳐 그 과정을 수행한다면 분명 정답이 나오게 되겠지요. 하지만 인생은 약간 다른 방향으로 빠지기도 합니다. 인생에서 선택은 로버트 프로스트의 가지 않은 길처럼 늘 가지 않은 길에 미련이 남기 마련인데요. 참으로 알다가도 모르는, 그것이 바로 인생의 매력일 것입니다.

프로그래밍엔 Exception부분이 있습니다. 프로그램 수행 중 에러가 났을 때, 에러에 대한 상세 정보를 알려주거나 혹은 예외처리 로직을 추가하는 부분입니다. 세상에 완벽한 프로그램은 없습니다. 그래서 Exception처리는 프로그램을 만들고 테스트할 나를 위해 꼭 필요한 부분입니다. 처음 프로젝트에 투입되었을 때 Exception이라는 개념 자체가 어색했고, 생소했습니다. 그래서 프로그램 컴파일, 실행하고 나면 빨간색만 나를 위협할 뿐, 도대체가 어디에 무슨 에러가 나는지 몰라 한참을 헤매고는 했는데요. 이런 과정을 거치며 에러를 찾는데 이렇게 많은 시간을 투자할 것이라면 시작단계에서부터 Exception처리를 잘해야 한다는 것을 몸소 깨달았고, 이제 'Exception을 빼먹으면 뭔가 부족한데'라는 생각이 먼저 들 정도로 생활화되었습니다. 멀리 도망가는 에러를 멋지게 낚아채 예외처리를 시키는 Exception은 프로그램에 대한 플랜B와도 같습니다.

언제나 플랜A로만 갈 수 없는 인생, 별다른 굴곡 없이 순탄하게 풀린다면 좋겠지만 쉽지 않죠. 플랜 C, D, E, F… 까지 준비하고 사는 사람은 없을 테지만 플랜B는 한 번쯤 생각해 본다는 것만으로도 큰 도움이 됩니다. 업무를 하다 실수를 저질렀을 때, 신입사원 때는 누군가 방패가 되어주었지만 이젠 내가 저지른 일에 관해서는 스스로 책임을 져야 하는데요. 이 위기의 순간을 넘겨야 하는 것은 그 누구도 아닌 바로 나 자신입니다. 인생에 빨간 불은 들어오지 않게 잘 넘길 수 있는 기지를 Exception에서 배웁니다. 



전 오늘도 넓고 하얀 화면을 마주합니다. 커서가 껌뻑껌뻑 거리는 순간에 맞춰 무에서 유를 창조하는 공간을 앞에 둔 제 심장도 함께 두근두근합니다. 변수와 각종 명령어, 기능으로 화면을 가득 채우고 나면 이전에는 없었던 새로운 세상이 펼쳐집니다. 하얀 화면에는 어느새 버튼, 컬럼들이 나타납니다. 겉으로 보이진 않지만 숨겨진 로직들은 사람들에게 한층 더 업그레이드된 가치를 전달하고 공유할 수 있을 것입니다. 지금 프로그램 로직을 고민하는 당신, 당신이 바로 새로운 인생을 만들어가는 Artist입니다.


글 l Oracle운영1팀


Posted by IT로 만드는 새로운 미래를 열어갑니다 LG CNS

댓글을 달아 주세요

  1. BlogIcon 이수환 2013.05.12 17:37  댓글주소  수정/삭제  댓글쓰기

    자주 방문하는 블로그인데 이렇게 또 좋은 글 올려주셔서 감사합니다. 제 블로그에도 포스팅하고 싶어서 담아가겠습니다^^

위로