우연한 기회에 잘아는 회사의 소프트웨어 개발자 면접에 참여하게 되었다. 거기 사장님이 참좋으신 분이라 더 가까워질 수 있는 기회가 될 것도 같고, 소프트웨어 개발이 주업종이 아닌 회사에서 개발자를 구하는 것이라서, 내가 면접에 참여하면 약간이라도 도움을 줄 수 있을 것같았다.


SW개발자면접에 참여하다

회사는 강남역근처에 있고, 아담한 건물의 한층을 쓰고 있는데, 사무실 곳곳에 책과 서류가 쌓여있고, 곳곳에 있는 화이트보드에는 활발한 토론이 있었던 듯 아직 지워지지 않은 회의주제들이 적혀있었다. 면접장소인 회의실 역시 책과 서류, 두개의 커다란 화이트보드가 차지하고 있어서 좀 좁게 앉아서 면접을 진행하였다.


이미 회의실에 자리를 잡고 앉아있는 면접자는 30대중반의 침착해보이는 인상의 개발자였다. 자기소개를 부탁하니 몇몇 회사를 거치면서 닷넷과 DBMS쪽만 10년이상 했다고 한다. 회사시스템이 주로 닷넷기반으로 만들어져 있어서 닷넷전문가를 찾는 것같았다. 이력서상에 있는 몇가지 경력에 대해 좀 자세히 물었더니 침착하게 잘 대답한다. 생각이 잘 정리되어있고 침착하다는 것은 소프트웨어 개발자로써 좋은 덕목이다.

이력서에 없는 몇가지 기본적인 기술에 대해서 물었다. 즉, 닷넷이 아닌 유닉스나 다른 개발언어, 다양한 개발 프레임워크에 대한 대한 질문을 했다. 학생때 보기는 했지만 모른다고 간단하게 대답한다. 음... 이런 자기계발에 별로 신경을 안쓰는 타입인가? 최근에 목표를 세우고 달성한 것들이 있는 지 물었더니 그런 건 없다고 한다. 역시 그렇군, 성실하지만 자기계발에는 소홀한 전형적인 직장인 타입이다. 그럼 잘안다고 하는 닷넷과 DBMS쪽에 대해서도 항상 쓰는 기능밖에 안쓰는 것일 수 있어서 좀 자세히 물었다. 예상대로 대부분의 작업을 UI를 사용한다고 한다. 커맨드라인을 사용하는 것은 관심조차 없는 것같다.

프로그래밍에 대한 감각이 있는 지 확인하고 싶어서, 전자계산학을 전공했으니 간단한 알고리즘을 설명하거나 칠판에 쓰는 게 가능하냐고 물었더니 할 수 있겠다고 한다. 그래서 링크드 리스트의 특정한 노드하나를 삭제하는 알고리즘을 가장 잘아는 언어를 이용해서 칠판에 써달라고 했다. 물론 키보드와 마우스없이 칠판에 프로그래밍하는 것이 어렵다는 것을 잘 알고 있다는 멘트도 했다. 문제를 잘 이해하지 못하는 것같다. 이번에는 입력과 출력을 구체화 시켜서 다시한번 문제를 설명했다. 그래도 이해하지 못하는 것같다. 좀 당황스럽다.

이대로 종료할 수도 있겠지만, 한번 더 기회를 주고 싶어서 간단한 소팅 알고리즘을 칠판에 써보라고 했다. 이번에는 자신있게 칠판에 나가서 머뭇거리며 몇줄을 썼다. 써놓은 것을 보니 소팅을 위한 for 문장을 두개 써 놓았는데 index variable의 경계값도 명확하지 않고, 구체적인 내용은 ... 으로 되어있다. 심지어 swap도 들어있지 않다. 그 부분에 대해서 좀 더 자세히 적어 달라고 했더니 그냥 하면 된단다. ㅡㅡ;; 입력과 출력부분이 없다고 했더니 이제는 화를 낼 태세다. 칠판에 써놓은 소팅알고리즘을 무엇이라고 하느냐고 했더니, 면접을 이렇게 한다고 미리 말해주지 않았다고 불평한다. 음... 그래서 먼저 할 수 있느냐고 양해를 구했고 할 수 있다고 말하지 않았냐고 했더니 진정한다.
 
칠판에서 프로그래밍하는 건 어렵다. 특히 면접관들이 지켜보고 있으면 훨씬 더 힘들다. 그렇지만 10년넘은 프로그래머라면 더구나 전문가라면 버블소팅같은 간단한 것은 어떤 상황에서도 할 수 있어야 한다.


T자형인재가 진짜 전문가

좋은 인재는, 특히 융합이나 연계가 중요해진 IT분야의 전문가는 여러가지 분야에 대해서 어느 정도 알고 있어야 하고 자신의 전문분야에서는 어떠한 문제도 해결할만한 자신감과 능력을 가지고 있어야 한다. 이런 인재를 T자형 인재라고 부르는 데, 영문자 T가 넓게 알고 한가지 분야를 깊게 판다는 형상을 하고 있기 때문이다.
 

그런데 우리가 특정분야의 전문가에 대해서 다른 분야를 모르는 사람이라고 잘못판단하고 있는 경우가 있다. 유닉스시스템과의 연계에서 문제가 발생했는데 나는 닷넷전문가라서 유닉스쪽은 모른다는 말을 쉽게 하고 주변에서는 그말을 인정해준다. 닷넷전문가라도 다른 개발환경에 대해서 어느정도 알아야 하는게 당연하다. 그리고 닷넷에 대해서는 API하나하나까지 또 여러가지 닷넷언어들에 대해서 훤하게 알아야 한다. DBMS 전문가라고 해놓고 기초적인 SQL문법밖에 몰라서 되겠는가?

자바전문가라면 DB나 네트워크, 다른 개발언어에 대해서도 어느정도 알고 있고 자바에 대해서는 JVM 소스코드까지 훤하게 꿰뚫고 있어야 한다. 안드로이드 전문가라면 안드로이드에서 APP만드는 정도로 그쳐서는 안되고 다양한 기기에 안드로이드를 포팅하는 것을 어렵지 않게 해낼 수 있어야 한다. 파이썬 전문가라면 파이썬은 원래 속도가 안나는 것이라고 치부할게 아니라 관련된 파이썬 인터프리터 소스를 고쳐서 자신만의 파이썬 인터프리터를 만들어야 하고, 오라클 전문가라면 UI를 통해서 매니지먼트하는 것뿐만아니라 여러가지 프로세스들의 세부사항을 조정할 수 있어야 할 것이다.
 
그래서 진짜 전문가라고 하면 "그거는 아마 이게 문제일 겁니다", "로그 파일 좀 줘보세요", "30분만 시간을 줄수 있어요?"라고 말하고 바로 컴퓨터 앞으로 달려가는 사람이어야 한다.

우리회사는 특정한 언어(특히 자바나 ASP)만 할 줄 아는 사람, 특정한 업무만 하려는 사람은 면접과정에서 자연스레 배제된다. 개발언어와 도구를 가리지 않아야하고, 특정 프레임워크에 얽매이는 사람도 안된다. 옆에서 누군가 보고 있는 상태에서도 프로그래밍이 가능해야 하고, 하드웨어를 다루는 것에 대해서도 거부감이 없어야 하고 어떤 업무를 주어져도 해당 업무에 적합한 도구를 찾아서 빨리 적용해야 한다. 그래서 회사에 입사하는 사람들은 기본적으로 한일자(一)형이다. 회사내에서 자신의 전문분야를 찾아서 T자형으로 만드는 것이 숙제로 남아있을 뿐.

짬밥을 많이 먹었다고 자동으로 전문가가 되는 게 아니다. 분명히 자기계발을 꾸준히 해야만 전문가가 되는 것이다. 십년 일했다고 하는데도 불구하고 학원에서 몇달배운 사람과 별차이가 없는, 내공을 전혀 느낄 수 없는 사람들이 있다. 한분야에서 오래 일했다고 하면 드러내지 않아도 자연스레 내공이 느껴지도록 해야 하지 않을까?

면접결과에 어떤 영향을 주었을지 모르지만, 일단 면접관으로 참여했기에 소신껏 부정적인 평가의견을 냈다. 일이년차라면 몰라도 십년경력의 전문가로 뽑기에는 자기계발이 부족하다는 게 이유였다. 그 회사가 소프트웨어 개발회사가 아니라서 지원자가 많지 않기 때문에 당장에 일을 하기 위해서는 뽑아야 한다는 의견도 있었기 때문에 최종결과가 어떻게 되었는 지 모른다.
 
그날 면접보셨던 분에게 행운이 있기를...

출처 : http://allenjeon.tistory.com/

+ Recent posts