자료구조 알고리즘은 꼭 필요한 것인가?

자료구조 알고리즘은 꼭 필요한 것인가?

저는 사파 개발자 입니다. 제가 정의한 사파 개발자라함은 비전공자로서 체계적인 학습을 받지 못한 상태에서 개발에 입문한 개발자를 말합니다. 사실 사파와 정파를 나누다는 것 자체가 제 자신이 부족하다는 증거일 것입니다. 하지만 주니어 개발자 단계에서는 사파와 정파의 차이는 분명 존재합니다. 특히 기반지식들에서는 큰 차이와 출발지점 자체가 다릅니다. 그 중 자료구조와 알고리즘은 무림에 갓 입문한 사파 개발자에게 아주 큰 벽이자 애증의 관계입니다. 그 대표로 제 자신이 존재합니다.

제 경험을 빗대어 얘기해보자면, 회사에서 신규 서비스를 개발할 때 2명의 API 개발자 중 한명으로 투입된 적이 있었습니다. 지금도 입문자 수준이지만 이 당시에는 알고리즘과 자료구조에 대한 지식이 전무했습니다. 하지만 3개월의 개발기간 동안 문제 없이 개발을 진행했고, 오픈까지 성공적으로 완수 했습니다.

‘그래서 너가 하고 싶은 말이 뭐냐?’

음 뭐냐면요… 복잡한 알고리즘이 필요 없는 서비스에서는 자료구조와 알고리즘에 대한 이해가 크게 중요하지 않습니다. 특히 트래픽이 폭팔적으로 많지 않다면 남아도는 서버의 자원이 있다면 더더욱 중요하지 않습니다. 오히려 이 단계에서는 알고리즘과 자료구조에 대한 이해 보다는 코드의 재사용성에 대한 이해와 가독성이 훨씬 중요할 것이라 생각됩니다.

‘뭐지 이 자식 지는 자료구조와 알고리즘에 대해 포스팅하고 있으면서 왜 자꾸 필요없다는 말을 하는거지?!! 뭐 어쩌라고?!’

어느 정도 수준의 서비스는 자료구조와 알고리즘이 이해 없이도 꾀 잘 만들수 있다는 믿음은 변함없습니다. 어느 정도로 잘 만들어진 제품을 100점 만점에 80점이라 가정했을 때, 자신이 받은 점수가 80점으로 만족하는 개발자라면 자료구조와 알고리즘을 굳이 공부할 필요가 없다 생각합니다. 80점을 만드는 개발자가 나쁜 것이 아닙니다. 어느 상황에서는 100점 보다 80점 제품이 기업에서 요구하는 수준일 수 있습니다. 60점을 80점으로 만드는 비용과 80점을 100점으로 향상시키는 비용은 비교가 되지 않을 만큼 더 클 것이기 때문입니다. 학창시절 만점을 맞기 위해 투자하는 노력과 80점을 맞기 투자한 노력의 차이와 같은 맥락일 것입니다.

결국 본인이 80점 이상의 제품을 만들기 원하는 기업에 들어가고 싶다거나 본인 스스로 80점이상의 제품을 만들고 싶다면 자료구조와 알고리즘과 같은 기초지식?들이 필요합니다.

서론이 엄청 길었네요… 자료구조와 알고리즘과 오랜 싸움을 위해서 어느 정도의 동기부여와 각오가 제 스스로 필요했던 것 같습니다. 사파든 정파든 개발자의 길을 선택했고, 100점 짜리 제품을 만들 수 있는 고수가 되기 위해서 저는 알고리즘과 자료구조를 공부합니다!! 주저리 끝!! 이제 공부하러 갑시다!!

잘못된 부분에 대한 지적은 언제든지 감사히 받겠습니다.
rochan87@gmail.com