취업을 준비하시는 학부생이나 프로 백수, 또는 아직 경력이 얼마 안 된 꼬꼬마 개발자들에게 있어 좋은 개발사에 취직 또는 이직하는 건 꿈만 같은 일일 겁니다. 하지만 제가 아는 한, 제정신이 아닌 회사가 코딩 테스트를 실시하는 경우는 있어도 제정신인 개발사가 코딩 테스트를 건너뛰는 경우는 거의 없습니다. 코딩 테스트는 사실 좋은 개발자와 나쁜 개발자를 순서대로 줄 세워줄 수 있는 마법의 도구가 아닙니다. 이전에 코딩 테스트를 본 경험의 여부와, 스트레스를 이길 수 있는 개인의 성향이 극명하게 유불리를 좌우합니다. 하지만 개발사가 여러분들께 좀체 해 주지 않는 이야기를 살짝 해드리자면, 코딩 테스트는 좋은 개발자를 찾아내는 것보다 기본기가 없는 개발자를 제거하는 용도에 가깝습니다. 그렇기에, 여러분이 아무리 SNS에 코딩 테스트의 폐해를 공유해봐야 개발사가 코딩 테스트를 쉽게 포기하진 않을 겁니다. 급여나 근무 환경과 같은 조건만 맞는다면, 좋은 개발자를 한두 명 놓치는 걸로 회사에 문제가 생기진 않으니까요 :-P
어쨌든, 취준생 또는 이직 희망자에게 있어 코딩 테스트는 굉장히 부담스러운 관문일 수 있습니다. 특히 비전공자나 코딩 테스트 경험이 없으신 분들에게는 더욱 그렇습니다. 이런 분들께 코딩 테스트를 잘 하는 법을 딱 한두 마디로 전수한다는 건 거의 불가능에 가깝습니다. 기껏 해드릴 수 있는 조언이라곤 자료구조와 알고리즘을 트레이닝하라, 파일 혹은 터미널 입출력 방식을 강제할 수도 있으니 미리 연습을 해 두어라 같은 한심한 조언뿐이며, 이는 당연하게도 정당한 대가 지불, 즉 시간을 요구합니다.
개발사가 알려주지 않는 또 하나의 사실은, 대다수의 회사가 코딩 테스트 만점을 요구하지 않는다는 점, 그리고 단지 점수만으로 커트라인을 정하지는 않는다는 사실입니다. 만약 여러분이 코딩 테스트를 준비하신다면, 높은 점수를 받는 것도 중요하지만 좋은 코드를 작성하는 요령도 중요합니다. 그중에서도 가장 주의해야 할 부분이 바로 제어문입니다. 제어문이란 조건문과 반복문을 아울러 일컫는 말인데, C 계열 코드를 기준으로 보자면 for, while, if, switch를 말합니다. 제어문이 명쾌하지 않으면 코드가 답답하게 읽히고 새로운 상황 대응이 어려운 코드가 됩니다. 저 역시 코딩을 잘 하는 사람이 아닌지라 선뜻 이야기를 꺼내기가 조심스럽습니다만, 오늘은 그래서 제어문 이야기를 해 볼까 합니다.
우선, for와 while은 완벽하게 상호 호환된고 if와 switch는 완벽하게 상호 호환된다는 사실을 인지해야 합니다. 네? for랑 while은 알겠는데 if와 switch가 완전한 상호호환이라고요? 뭐 설명하자면 길지만 사실이 그렇습니다 ^^ 어쨌든, 그렇다면 굳이 서로 호환되는 제어문이 쌍쌍으로 제공된다는 사실이 좀 의아하지 않나요? 그건 경우에 따라 더 간결한 코드가 되는 영역이 각자 정해져 있기 때문입니다(물론 일부 영역은 뭘 써도 되긴 합니다). 심지어 드물긴 하지만 while보다 do... while이 훨씬 효과적인 경우도 있습니다(!!)
그다음으로 눈여겨볼 부분은 다중 if 혹은 if... else if... else가 나열되는 경우입니다. 특히 nested if(우리말로 뭐라고 하는지 잘 모르겠네요. 아시는 분은 제게 알려주시면 감사하겠습니다)가 가독성에 끼치는 영향은 실로 막대합니다. 정말 불가피한 경우도 없지 않지만, 대개의 경우 코드를 작성한 뒤 다시 한 번 정리해 보면 불필요한 if가 발견되는 경우가 종종 있습니다. 특히 코드 테스트 대개 문제를 풀이하는데 복잡한 조건식을 요구하지 않습니다. 시간 제약에 시달리다 보면 종종 잊는 사실이지만, 여러분의 코드가 지나치게 많은 조건식으로 뒤덮이고 있다면 잠시 매몰에서 벗어나 내가 뭔가 잘못 생각하고 있다는 가능성을 염두에 두셔야 합니다.
마지막으로 제어문에 들어가는 조건식을 간결하게 하는 연습을 해야 합니다. 의외로 많은 개발자들이 (A && B) || (!A && B) 같은 멍청한 조건식을 실제로 씁니다! 여러분은 아니라고요? 잠시만요, 한 번만 크게 웃고 다시 글을 쓰겠습니다. 푸하하하하!!
우선 여러분이 학창 시절에 배웠던 집합과 명제를 복습해 보세요. 그동안 의외로 너저분한 조건식을 많이 썼다는 사실을 아시게 될 겁니다. 개념원리나 정석을 이미 고물상에 팔아버린 뒤라면, '논리식 간소화'라는 키워드로 구글링 하세요. 그리고 이 개념들이 여러분의 코드에 녹아들 때까지 외우고 연습하세요
가독성이 낮은 코드는 면접관에게 나쁜 인상을 줄 뿐 아니라, 시간에 제약이 있는 코딩 테스트를 더욱 어렵게 합니다. 비록 연습이 약간 필요하긴 하지만, 간결한 제어문은 여러분이 원하시는 개발사에 한 걸음 다가서는데 큰 도움이 되리라 생각합니다. 그럼, 오늘 하루도 즐거운 코딩되세요 :)