본문 바로가기

소프트웨어개발자의 삶/PS

코딩테스트 관심에 빠져보자.

출처 : https://www.technologyreview.kr/what-is-an-algorithm/

 컴퓨터를 하며 심심할 떄 한버씩 들어가서 마음을 놓고 보는 '웃긴대학'이라는 사이트가 있다. 한번씩 들어가서 글을 읽고 있으면 피식 하면서 웃음이 나는 곳이다. 같은 회사에서 근무하는 최저연령의 직원은 틈이 날 때 어떤 사이트를 이용하는지 물어보았다. 그런데 의외의 답변이 왔다. 프로그래머스라는 곳에 가서 알고리즘 문제를 푼다는 것이다. 최소한 하루에 하나씩 풀려고 노력하며 그 기록을 깃허브에 남긴다는 것이다.

 그러면서 같이 들어가서 보게된 프로그래머스라는 사이트는 개발자들의 기본기를 테스트를 할 수 있는 사이트였다. 예전 몇번들어가서 본적이 있었는데 막상 회사 직원이 꾸준히 그곳에서 무엇을 한다고 하니 나도 같이 그럼 해보자 하며 관심을 꾸준히 같이 한번 관심을 가져보자 하였다. 최근에 코딩테스트 관련이야기를 여기저기서 들어서 관련서적을 보려고 3권이나 주문을 했었다. 그런데 때 마침 그 친구와 그런 이야기를 하게 되니 우연치고 참 신기하다는 생각을 했다.

 오래전에 수업으로 들었던 기본적인 자료구조와 알고리즘도 기억이 안나고, 현재는 그런 알고리즘적인 문제가 아닌 일을 하다보니 레벨1도 통과하기 쉽지 않았다. 굳어있던 머리가 젤리가 되어 말랑말랑해지는 느낌이 들어 기분은 좋았다. 그 친구 처럼 나도 하루에 한문제씩은 풀려고 노력을 해야겠다는 생각을 가지며 틈틈히 풀어보려고 한다.

 자료구조를 기반으로한 이런 문제를 푸는 것은 Problem Solve, 줄여서 PS라고 부른다고 한다. 회사에 심심하면 이걸 하는 친구가 있어서 알고리즘이 아니라 넓은 범위는 PS라고 부른다는 사실을 일전에 들어는 봤었다. 현실에서는 프로그래밍에서 저렇게 문제를 푸는 경우가 얼마나 많을까? 분명 프로그래밍 세상은 저런 문제들의 덩어리이긴 하지만 우리가 처리하는 많은 문제들은 또 저런 문제풀이식이 해결점이 아닌 경우도 많다.

 현업개발을 하며 코딩테스트류의 문제를 풀어보니 약간의 괴리가 느껴졌다. 바둑은 둘지 모르지만  '사활'이라는 바둑문제풀이 같은 느낌이 들었다. 소프트웨어 개발에 필요한 능력치 중 일부의 능력을 평하기 위해에 한 쪽부분을 극대화한 느낌? 소프트웨어 개발에는 저런 답만이 아니라 여럿이 협업하여 개발하기 때문에 더 중요한 문제도 많은데 저것만으로 과연 개발자의 능력치를 재단할 수 있을까? 하는 의문이 같이 공존하였다. 하지만 기업이 코딩테스트를 하려고하는 이유는 기본적인 저런 능력에는 논리적 사고를 필요로 하고 그런 사고에 익숙한 사람이 좋은 능력의 개발자가 될 가능성이 훨씬 높기 때문에 채택 한다고 생각한다.

 코딩테스트 문제는 기본기에 해당하는 것이고 굳어있던 뇌가 움직일 수 있는 기회라고 생각을 한다. 사실 비지니스 로직을 처리하기 바쁜 나의 프로그래밍 저 안쪽에는 치열하게 알고리즘적인 문제해결의 결정체인 라이브러리들이 기반이 되어준다고 생각도 한다. 그래서 나도 시대 흐름을 타고 꾸준히 코딩테스트 문제를 풀어 보려고 한다. 레벨 1, 2 정도의 문제부터 시작하고 있어서 사실 현업문제와 크게 와 닿는 것은 없지만 더 높은 수준의 문제들은 분명 나의 개발문제에 도움되는 것을 만나게 될 것이라고 생각한다. 더불어 문제풀이만을 집중하는 것이 해답은 아니지만 다른 것에 더 큰 관심을 두고 살아왔으니 이제는 또 이쪽에 관심을 두는 것도 매우 좋은 경험이라 생각하여 어찌보면 소프트웨어 개발자의 긱스러움에 나도 꾸준히 동참을 하기로 마음을 다 잡았다. 연령차이가 적게 나는 회사동료가 열심히 할 떄는 관심도 안가지다가 최연소 동료가 한다고 따라 하려고 하는 것 같아 부끄럽기도 하다.

 3살 아이에게도 배울 것이 있다는 속담이 있다. 나랑 나이 차이가 두배 가까이 나는 친구의 삶에서 인생을 또 하나 배운다. 우이공산이라고 꾸준히 하다 보면 나도 높은 레벨의 문제를 풀 수 있는 날이 오겠지? 그 과정에서 굳어있던 뇌가 스트레칭을 팍팍 했으면 좋겠다.