프로그래밍 숙제에서 발리지 않는 법

| 2014. 12. 13. 04:31

깊은 회한이 밀려드는 밤, 이런 글이라도 하나 쓰지 않으면 평생 동안 나아질 것이 없을 것이라는 불안감이 들었다. 서비스 단의 코딩에는 잘 적용되지 않는 이야기지만 학교 숙제라면 충분히 납득이 갈 만한 이야기가 될 것이다.

1. 숙제 내용을 잘 모르고 덤비지 말자.

덤비지 마.

지금 내가 잠을 자지 못하고 있는 여러 가지 이유 중 가장 결정적인 녀석이다. 지금 당신이 짜고 있는 코드가 숙제의 어느 맥락을 어떻게 따라가고 있는 것인지 애매한 점이 있다면 당장 키보드에서 손을 떼고 조교 등 여러 채널을 통해 숙제의 내용부터 파악하도록 하자. 그렇지 않고 한참을 열심히 코드를 짜다 보면 그 동안의 적지 않은 노동의 결과가 한 순간에 쓸모 없는 코드 쓰레기로 변하는 것을 관찰할 가능성이 높다. 그렇다면 어떻게 숙제 내용을 잘 알 수 있을 것인가? 수업 때 열심히 들어라. 그러므로 수업에 참석하는 것은 모든 프로그래밍 숙제의 기초라 할 수 있다.

물론 숙제의 내용이 익숙하거나 난이도 자체가 낮은 경우엔 해당 사항이 없다. 그럴 땐 마음껏 코딩을 즐기면서 그 정도 코딩에 조차 쩔쩔 매는 학우들의 불행을 감상할 권리가 있다. 농담이다.

2. 주어진 조건을 꼼꼼히 보자.

하이레벨 언어로 학교 숙제를 해본 적은 거의 없는 편이고 웬만하면 모든 숙제를 C나 그 이하의 로우레벨 언어로 처리를 했던지라 기본적으로 내장 라이브러리에 대한 기대감은 전혀 없었다. 그렇지만 커스텀 라이브러리라든지, 뭔가 써먹으라고 내놓은 코드 찌꺼기들이 있다면 대체 왜 그런 코드들이 존재하는지 생각해보자. 머리에 똥만 찬 녀석이 아닌 이상 주어진 도구를 통해 해결해야 할 일이 어떤 일이며 어떤 방식으로 풀어나가야 하는지 큰 그림을 그릴 수 있는 법이다. 이상하게도 주어진 어떤 함수가 전혀 사용되지 않고 있다면 강하게 자신의 코드에 의심을 품어야 한다.

세상에 공짜는 별로 없다. 프로그래밍 숙제의 세계에서라면 더욱이나 그렇다. 맞다. 사실 머리에 똥만 찬 녀석은 오늘의 나를 가리키는 말이다.

3. 불안감이 엄습했을 때 냉정해져라.

갈수록 말이 산으로 가지만 이게 무슨 말이냐면 그러니까 이런 식으로 짠 코드로는 도저히 이 숙제를 완성할 수 없겠다는 생각이 들 때 냉정하게 현재의 상태를 판단하고 코드를 처음부터 다시 짤 것인지, 아니면 그 쓰레기 더미를 어떻게든 지지고 볶아서 덜 쓰레기 같은 녀석으로 완성할 것인지를 고민해야 한다. 하지만 한 가지 꽤나 확실한 것은, 후자의 방식으로는 결과적으로 얻을 수 있는 것이 많지 않다. 운이 좋다면 조금의 암 세포와 어느 사이에 자라난 수염, 손가락의 배어든 담배 냄새 정도는 겟할 수 있겠으나 그 외의 것을 얻기란 여간 어려운 일이 아니다. 그러므로 스스로가 쓰레기 같은 코드를 짜고 있다는 생각이 강하게 들고 그 쓰레기스러움에 지쳐가고 있다면 과감하게 모든 것을 포기하고 처음부터 다시 시작하자.

추진력을 얻기 위해 무릎을 꿇는 과정이라는 생각이 든다면, 무릎 한 번 깨먹고 정신을 차리면 된다.

의외로 이런 경우에 ㅡ 특히나 여태까지 짠 코드가 어떤 코드인데 이걸 버리고 다시 시작하냐!라는 생각이 강하게 들 땐 더더욱! ㅡ 당신이 해결해놓은 것은 별로 없다. 코딩에서 낭비한 n시간은 사실상 2n시간의 낭비로 돌아오는 법이다.

4. 오바하지 말고 빨리 자라.

4번은 지금의 나에게 하는 일종의 잠언이다. 밤이 늦으면 잠을 자자. 내일도 태양은 떠오르고 어쩌면 밤 사이에 당신의 컴퓨터 회로를 교란시키던 방해 전파가 사라져 다음 날이면 아무 이유도 없이 코드가 돌아갈 수도 있기 때문이다. 물론 그런 일은 일어나지 않는다.