brunch

You can make anything
by writing

C.S.Lewis

by 청자몽 Dec 26. 2023

(내가 경험한) 프로그래밍과 글쓰기의 공통점

청자몽 연대기(20)

프로그래밍과 글쓰기에는 묘하게 닮은 구석이 있었다. 그래서 국문학 전공이었던 내가 프로그램을 짤 수 있었다. 연대기 스무 번째 이야기 :




커서가 무서웠던 나


또각또각 타이핑할 때, 키 입력하는 느낌이 좋은 기계식 키보드를 사랑한다. 그나마 소리가 덜 난다는 흑축을 선택했다. 한참 열심히 사용하던 시절이 생각났다. ⓒ청자몽


모니터 화면에 깜박이는 커서.
빈 화면에 커서가 깜박깜박거리는 걸 멍하니 바라보기만 하던 때가 있다. 분명 다른 장르인데, 같은 느낌의 영화를 보는 듯했다.

언젠가 학교 과제를 하느라 안 풀리는 글을 쓰고 있었다. 생각이 잘 나지 않았다. 뭐가 이리 안 풀려. 썼다 지웠다를 반복하다가, 결국 빈 화면인 채로 넋을 놓고 있었다. 그때 깜박이는 커서가 눈에 들어왔다. 깜박깜박.. 깜박깜박.. 이봐 이봐 뭐 해? 어서어서 글을 내놓으란 말이야. 빈 화면에 깜박이는 커서가 무서웠다. 빈 화면인 채로 하얗게 밤을 새우고 말았다.

프로그래머가 된 지 얼마 안 돼서 또 그 무서운 커서의 독촉을 경험했다. 입사하고 얼마 안 돼서 작은 기능 하나를 만들어 보라는 요청을 받았다. 비전공인 데다가, 이해도 잘 못하는 수업을 겨우겨우 들어가며 교육센터를 간신히 6개월 다닌 왕초보 프로그래머였다.

뭐가 뭔지도 잘 모르는데 아웃풋(프로그램)을 내야 하다니.. 스스로가 한심했다. 참고가 될만한 두툼한 API책을 옆에 놓고, 어떻게 시작해야 할지 막막했다. 모니터를 들여다보는데, 한숨이 나왔다. 그때 또 빈 화면에 깜박이는 커서가 눈에 들어왔다. 여.. 오랜만. 이번에는 프로그램이야? 뭐 해. 코드를 입력해 줘. 빨리. 뭐 해. 안 하고. 커서가 무서웠다. 역시 하얗게 밤을 새웠다. 코드 한 줄도 입력 못한 채로...

생각해 보면 뭐라도 일단 쓰거나 입력을 해야 했을 텐데.. 그 뭐라도 쓰거나 입력하기 전에 용기부터 필요했다. 두려움을 이겨낼 용기 말이다. 그러고 보면 프로그래밍과 글쓰기가 묘하게 닮았다. 뭔가를 하려면 용기와 실행력이 필요하다. 생각부터 하고, 계획을 세운 다음 그걸 실제로 구현해야 한다.




글 쓰는 과정


글을 쓰려면 우선 무엇에 대해 쓸지, 먼저 생각해야 한다. 주제를 정하고, 어떻게 풀어낼지 고민한다. 이렇게 시작해서, 저 이야기를 쓰고 그다음에 마지막에 마무리를 한다. 는 식으로 대강 골격을 머릿속으로 그린다.

그리고 글을 쓰기 시작한다.
제목을 많이 고민한다. 제목이 나오면, 글을 풀어갈 때 도움이 된다. 그런데 한참 쓰다 보면 이야기가 산으로 가거나, 생각 못했던 아이디어가 떠오른다. 쓰다 보니 제목이 잘못되었거나 수정할 필요를 느낀다.

제목을 고치고, 그때까지 쓴 내용을 다시 읽어본다. 순서를 바꾸거나 뺄 내용은 빼고, 덧붙일 내용을 추가한다. 그리고 계속 글을 이어나간다. 흐름이 나쁘지 않으면, 중간 수정 없이 끝까지 쓴다.

'등록버튼'을 누르기 전에, 처음부터 한번 훑어보고 괜찮으면 글쓰기를 마무리한다. 급하거나 시간이 없을 때는 먼저 등록을 해놓고, 나중에 다시 속으로 읽으면서 고친다. 여러 번 고칠수록 글이 더 좋아진다.




프로그래밍, 프로그램 짜는 과정


요구사항을 생각하며 어떻게 구현할지 생각한다. 궁금한 부분을 찾아보거나 참고가 될만한 코드가 있는지 검색해 본다. 도움이 될만한 모듈이 있는 경우, 다운로드하여서 훑어보고 수정할 부분을 생각한다.

노트에 구현할 사항들을 나열한다.
내가 할 수 있는 부분과 할 수 없는 부분을 나눈다. 금방 할 수 있는 것과 시간이 걸릴만한 부분을 적는다. 아주 촘촘하게 쪼개어 번호 매겨서 구현 순서를 정한다.

프로그램을 짠다.
짜다보면 생각 못했던 변수가 발생하거나 처음 생각했던 것과 다르게 더 좋은 방법이 떠오르기도 한다. 앞에 짜놓은 것을 처음부터 다시 훑어보면서 가상으로 프로그램을 돌려본다. 중간에 출력메시지로 확인하기도 한다.

놓친 부분이나 발견한 문제점이나 필요사항을 노트에 다시 적는다. 처음 작성한 노트에서 빠졌던 부분은 첨가를 한다. 문제없으면 프로그래밍을 있어간다.

구현할 때, 주석을 상세히 다는 편이다. 시작 부분에도 자세히 쓰지만, 중간중간 코드 사이사이에도 아주 자세히 적어놓는 편이다. 그러면 시간이 한참 지나서 다시 봐도 내가 이걸 왜 이렇게 짰는지를 금방 알 수 있다. 나중에 다른 사람이 유지보수하기 편하게 하기 위해서도 그렇게 한다.

완성한 코드를 돌려본다.
문제가 생기면 수정하고, 문제가 없더라도 지저분하게 짠 부분이 있는지 좀 더 쉽게 가는 방법이 있는지를 살펴보고 수정한다. 여러 번 다듬은 코드가 완성도가 높다.




공통점


한 편의 글은 하나의 작품이다. 걸작이든, 졸작이든. 망작이든, 흥행작이든.. 평범한 범작이든. 길이와 상관없이, 모두 소중한 작품이다.

그리고 프로그램도 역시 프로그래밍 언어로 구현된 하나의 작품이다. 어떤 언어로 쓰였는지, 지저분한 코드인지 아닌지. 가독성 높은 명작인지 아니면 쓰레기라 비난받아 마땅한 졸작인지.

생각을 하나의 결과물로 만들어내는 데는 비슷한 과정을 거친다. 생각하고 틀을 잡고, 구현하고 고친다. 잘 짜인 구조의 작품은 좋은 결과물이 된다. 여러 번 고치면서 다듬어진 경우, 훨씬 더 훌륭해진다.

만들고 나서 후회하기도 하고, 뿌듯하기도 하다. 독자나 사용자의 반응에 따라 울고 웃는다. 고개를 들 수 없을 만큼 절망하기도 한다. 잘 풀리지 않아 머리를 쥐어뜯거나 벽에 머리를 박기도 한다. 절묘한 순간에 딱 하고 풀리면, 절대 잊지 못할 희열을 느낀다.

프로그램이나 글이나 모두 내가 낳은 자식 같다. 이제는 잊히거나 역사의 뒤안길로 사라졌을지라도, 그것들 덕분에 살고 죽고 울고 웃었다. 그게 뭐라고. 아니다. 그건 한때는 나의 전부였고 내 세상이었다.

다시 써놓고 봐도, 두 개가 비슷하다.
비슷해서 '국문인이 개발자가 되는 적응기'를 지나, 익숙해질 수 있었다. 과분하고 무척 피곤했지만, 보람 있고 뿌듯했던 개발자 시절에 하던 일을 글로 풀어보았다. 어떻든 내가 '전직 개발자'였음에 감사한다. 영광이다.



덧.

이제는 커서가 무섭지 않다. 쉴 틈 없이 움직이게 해 준다. 가끔 숨이 차보이면, 잠시 휴식을 준다.



원글 링크 :







이전 09화 그놈이 다 그놈이야. 자네 하기 나름이라고.
brunch book
$magazine.title

현재 글은 이 브런치북에
소속되어 있습니다.

작품 선택

키워드 선택 0 / 3 0

댓글여부

afliean
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari