왜 코딩을 해요?

Ryo
Ryo
Sep 6, 2018 · 7 min read

라는 질문을 종종 듣는다.

지금 다니는 학과와 엮어서 어? 그런데 코딩도 하신다고요? 라는 질문도 들어본 적이 많다.

평소에는 저런 질문에 ‘내 마음입니다’ 라고 대답을 해주는데, 거기에 대한 답변을 좀 정성스레 해보고 싶어서 내가 살아온 이야기를 장문으로 작성하려고 한다.

나는 어릴 때 코딩을 시작했다.

초등학교 3, 4학년 즈음, 지금 생각해보면 분수에 맞지 않는 ‘영재교육원’을 다녔다. 그 곳에서 아는 친구의 부모님이 우리 부모님에게 귀띔으로 알려준 ‘컴퓨터 학원’이 있었고, 난 뭐 아는게 없는데 컴퓨터 만진다고 하니 좋아서 간다고 했다.

이게 게임만 할 줄 알던 (그래도 컴퓨터 자가수리까지 했으니 다른 아이들 보다는 조금 더 깊게 알았다고 스스로 생각한다) 초등학생이 난생 처음 코딩을 배우게 되는 원인이 된다.

학원은 삭막한 편이었다. 왼쪽 책상 5개, 오른쪽 책상 4개 (오른쪽 맨 뒷 책상 1개는 원장님 자리)에 오른쪽 맨 앞 인터넷 케이블만 빼놓은 CRT 모니터 데스크탑 컴퓨터를 제외하고는 모두 노트북이었다. (이제 생각해보면 내가 펜타그래프를 좋아한게 이 때의 경험이 바탕이 되었던 것 같다)

일단 코딩 배울 때 하는 별찍기부터 시작했다. for 문과 print 문은 다 쓰여져 있고, i와 j에 무엇을 넣으면 이런 별 모양이 될까요? 하는 문제들이 주루룩 인쇄되어있는 교재를 받았고, 그 학원 원장님이 그걸 다 풀기 전까지는 컴퓨터는 못 만진다는 이야기를 했다.

이게 무슨 소리냐, 하는 청천벽력과도 같은 소리를 뒤로 한 채로, 원장님은 스파르타 식으로 밀어붙였고, 아무것도 모르는 초등학생은 시키니까 열심히 머리를 굴려서 풀었다.

그 이후엔 Visual Basic으로 코드를 작성하는 방법을 배웠는데, 알고리즘 문제를 풀기 위한 최소한의 코드 작성법만 배웠다. 누구나 아는 input.txt를 읽고, output.txt를 출력하고, if 문, for 문, while 문, … 이정도가 전부였다. 이걸 배운 후에는 정보올림피아드 문제(이하 정올 문제)를 계속 풀었다. 정올 문제를 풀 때는 대체로 이런 순서를 통해 문제풀이를 행했다.

  1. 문제를 주면 하루종일 머리를 싸매고 고민한다. 길 때는 3일까지 생각한 것 같다.
  2. 학생이 막혀있는 듯 하면 원장님이 무언가 힌트를 준다.
  3. 뭔가 생각 날 듯한데 깔짝거리다가 안 된다.
  4. 추가로 힌트를 더 준다.
  5. 아! 알겠으면 완성해서 채점 후 100점이 나오면 통과, 틀린 예제가 있다면 input과 output을 받아와서 또 머리를 싸맨다.

이렇게 계속 공부해서 지금은 구석에 쳐박혀있지만, 지역 정보올림피아드 동상도 받았었다.

이 짓을 1여년을 하니까 매너리즘에 빠지게 되었다. 내가 생각하는 코딩과 저기서 배우는 코딩은 뭔가 달라도 달랐었다. 내가 아는 코딩은 프로그램에 버튼 같은 것을 넣고, 무언가 치면 입력이 되고, 확인 버튼을 누르면 알림 창이 뜨고 이런 종류가 아니었나?

이렇게 생각하는 것을 시작하니 더 이상 코딩(알고리즘)이 신물이 나서 못하겠더라. 내 태생은 뭔갈 적용해서 써보는 것에 흥미를 느끼지 이론적으로 생각하는 것을 오래하기 싫어하는 것 같아서, 흔히 말하는 학원 가서 딴 짓하기를 몇 개월 했다.

원장 선생님이 각 잡고 A4용지에 열심히 내가 한 딴 짓을 쓰면서 낱낱히 까발리더니 부모님한테 ‘애가 이러니까 그냥 학원 끊으세요’ 했다.

엄청 혼나고 학원 관뒀다.

이게 코딩과 나의 첫번째 만남이자 이별이었다.


그다지 좋은 인연은 아니었다고 생각했다. 그 이후에 다른 ‘영재 교육원’ 시험은 떨어졌고, 중학교 때 나는 왕따를 조금 당했고, 중학교 3학년 때 화학올림피아드 ‘은상’을 수상했지만 노리고 있던 ‘과학고등학교’의 입시전형이 완전히 뒤집히는 바람에 내 ‘은상’이 휴지조각이 되면서 과학고등학교를 탈락했다.

과고에 떨어진 그 미련을 버리지 못해서 ‘과학중점 고등학교’를 갔지만, 그다지 좋았던 선택은 아니었던 것 같으니 이 이야기는 일단 뒤로 제껴두겠다.

한마디로 말해서 망한거다. 저 때 이후로 내 인생은 내리막길을 걸었으며, 나는 이후 최소 몇 년동안 코딩은 쳐다보지 않았다. 완전히 손을 놓았다는게 더 맞는 표현이다.

고등학생이 되었으니 ‘수능을 공부해야되지 않겠나?’ 싶어서 일부러 손도 안 댄 경향도 있다. 이래놓고 게임은 줄창 했으니 어불성설이다.

그나마 조금 손 댔던게 Berryz Webshare, 제로보드(현재는 XpressEngine)다. Berryz Webshare를 만지게 되면서 스킨을 손 안볼 수가 없더라. HTML, CSS를 검색해가며 조금씩 수정하고 제대로 보여질 때의 쾌감은 이루 말할 수 없는 것이었다. 제로보드도 그와 비슷한 맥락인데, php는 잘 몰라도 Berryz 스킨 만지듯이 마음에 안드는 것은 조금씩 고치고, 그랬었다.

지금와서 다 경험이 조금씩 쌓이는 건 줄은 전혀 모르고 저걸 단순히 재미있어서 했다고 생각하면 어이가 조금 없어지기도 한다.

고등학교 1학년에서 3학년까지는 별로 이야기 할 건덕지가 없다. 남자 고등학교 기숙사에서 지냈고, 내신은 부실했지만 모의 수능은 어느정도 나왔었다. 정작 수능에서 미끄러져서 지금 대학에 다니고 있지만, 이것도 그러려니 받아들이고 있다.


내가 다시 코딩에 손을 댄 것은 입대한 이후의 일이다.

나는 내가 그 당시 가지고 있던 유일한 기술인 컴퓨터 지식으로 군대 보직을 알아보고 있었다. 2년 가까이 되는 세월동안 내 학과와 최소한 연관이라도 있는 보직으로 가면 그게 또 경력이 되지 않을까? 라는 마음에 이것 저것 찾아보았더니, 공군 정보체계관리병(30010)이 떡하니 나왔다.

심지어 공군은 자기 부대를 성적 순으로 골라서 간다는 말을 듣고, 아, 이게 내가 가야할 길임을 깨닫게 되었다. 그렇게 16년 모 월에 입대를 하게 된다.

4주간의 훈련이 끝나고 ‘동일 특기 내 4위’이라는 성적표를 받아들고, 다시 4주간의 특기 교육이 시작되었다. 그 때에 배웠던 것들은 …

  • HTML — 정말 기본적인 태그만 배웠다.
  • 데이터베이스 — 기억나는 것은 Oracle Database는 종료 명령어를 입력하지 않고 종료하면 데이터베이스가 깨진다는 사실이다.
  • 네트워크 장비 — 내게 처음으로 Cisco라는 장비를 경험하게 해주었다. 물론 Cisco Packet Tracer이지만.
  • 기타 말하기 곤란한 것들

자대를 결정할 때, (기초 훈련 등수 + 특기 성적 등수)가 작은 순서대로 우선권이 주어졌다. 이 때문인지, 주변에서 다들 공부를 많이 했었다. 나는 4위여서 공부 좀 대충 했더니 특기 교육 성적은 아마도 20위 정도였다.

우여곡절 끝에 나는 자대를 선택할 때 조금 유리한 부분이 있었고, 내가 주워듣기로는 가장 프로그래밍을 많이 한다는 부대를 선택하게 되었다.

부대에 도착해서 사무실로 가니 OJT(On the Job Training)를 해야된다고 해서, 동기 한 명과 같이 거기서 자습을 했다. 귀뜸으로 들어서 웹을 좀 공부해두자 싶어서 php 기반으로 게시판도 하나 만들었다. 그 때 웹 지식이 다시금 생각나면서 배움에 대한 욕구에 불이 붙었던 것 같다. 그 후, 정식으로 팀이 배정되었다.

나는 모 팀의 웹 기반 모 체계를 담당하게 되었다.

아무래도 군대 일이라 자세하게는 말하기 힘들다. 그 때 같은 팀에 있던 최선임이 정말 실력이 좋던 분이어서, 그 사람이 하던 수 많은 일들 중 70% 정도를 맡게 되었다.

기본적인 업무는 내가 관리하는 체계를 유지보수하고, 에러가 나면 원인을 파악해서 해결하는 것이다. 체계가 실시간성이 보장되어야 했기에, 밤낮으로 체계가 터지면 사무실로 뛰어가서 다시 살려줘야했다. 이때문에 새벽에도 출근해보고, 새벽에 퇴근도 해봤다.

신규 체계 개발 요청도 있었다. 서버 환경은 Oracle WebLogic 10?에 Java 1.6 환경을 기반으로 구성되어 있었고, 브라우저는 보통 IE 9 이상을 지원해줘야 했다.

이때문에 Spring Framework로 백엔드 단을 구성하고, 프론트엔드는 원하는 프레임워크를 골라서 구성하면 되는 방식이었다.

체계 개발 기간동안 군인 주제에 야근도 하고, 체계가 어느정도 완성되면 체계 시험 평가도 했고, 배포도 신청서를 작성하면 배포해주었다. 다만, 백엔드 단 설정을 할 줄 아는 사람이 없어서 백엔드에서 강제로 .js 파일 끄트머리에 ;charset=EUC-KR을 붙여 보낼 때는 정말 사람이 확 돌아버리겠더라. 이전 담당자가 설정해놓고 튀어버린 것 같았다.

이 팀에서 있던 2년간, 많은 체계들을 만들고, 뜯어고치면서 소중한 경험이 생겼다.


컴퓨터 프로그래밍을 모르던 내가 알고리즘을 알게 되고, 웹에 대해 알게 되고, 어려웠던 시기도 있었지만, 우연한 계기로 다시 프로그래밍을 손에 잡게 되었다. 하지만, 다른 이들처럼 감상에 빠져서 이게 내 인연이다라고는 생각하지 않는다. 이때까지 이 일은 지금 내가 하는 일 중에 제일 실력이 좋다는 생각 하나로 밀어붙여 온 일이기 때문이다.

난 아직까지 웹에 대해서 모르는 것이 많고, 부족한 것도 많다. 어쩌면 5년, 10년 뒤의 나는 일에 찌들어 코딩을 내팽겨쳐버릴지도 모른다. 다른 재밌는 취미가 생겨서 더 이상 코딩을 하지 않을지도 모른다. 그럼에도 불구하고 아직까지 나는 코딩, 특히 웹에 대한 지식들을 더 많이 채우고 싶다.

이게 내가 코딩을 하는 이유다.

긴 글 읽어주셔서 감사합니다.

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade