A set of finite instructions that solve the problem.
알고리즘(algorithm)은 수학과 컴퓨터 과학 등의 분야에서 문제 해결에 필요한 계산 절차 또는 처리 과정을 뜻한다. 쉽게 말하면 우리가 어떠한 문제를 만났을 때, 그러한 문제를 해결하는 과정이 바로 알고리즘이다.
다음은 좋은 알고리즘이 되기 위한 특징이다.
이러한 알고리즘은 현재 코딩테스트를 통해 입사 시 필수적으로 검증하는 능력이 되었다. 그러나 이러한 테스트가 과연 실효성을 가지느냐에 대한 논란이 되고 있는데, 10년 차 개발자가 바라본 입장에선 알고리즘 능력과 실제 문제를 찾아내고 해결하는 두 능력은 다르다고 한다.
그렇다면 이러한 알고리즘으로 코딩 능력을 테스트하는 것이 유효한가? 이에 대한 의견은 대체로 다음과 같이 나뉘는 것을 볼 수 있다.
필요 없다는 입장
창의력보다는 반복훈련에 의한 결과
외국은 기술테스트 비중이 더 높으며, 코딩 실력은 수습 중에 충분히 확인 가능
실제 업무 능력과 큰 연관성이 없음
필요하다는 입장
국내 IT업계의 트렌드
특정 분야의 실무에선 알고리즘 능력이 중요함(데이터, 인공지능, 금융업 등)
사원 선발 과정에서 변별력 있는 테스트가 필요
여러 논란이 있지만, 국내 IT 기업들은 현재까지 코딩 테스트를 통해 사람을 뽑고 있다. 만약 이러한 기업 중 하나에 개발자로 입사하는 것이 목표라면 어쩔 수 없이 그 룰을 받아들이는 수밖에 없다. 마치 싫어도 수능을 봐야 대학을 가는 것처럼 말이다!
만약 더 확실하게 코딩 능력을 테스트할 방법이 등장한다면 미래에는 그 방법이 업계의 표준으로 퍼질 것이다. 그러나 아직 IT업계는 알고리즘을 코딩 능력을 평가하는 대표적인 기준으로 보고 있다.
참고
위키백과 - 알고리즘
치킨모임 배진호님의 브런치 - 알고리즘이 필요한 '진짜' 이유에 대해서
라이언님의 블로그 - 코딩테스트는 곧 사라질 것