본문 바로가기
미국 개발자/HOOTips

[HOO's Q&A] 알고리즘 공부를 왜 해야 하나요?

by Henry Cho 2021. 6. 17.
728x90

Q: 알고리즘 공부를 왜 해야 하나요?


프로그래밍 공부를 하거나 취업 준비하는 Bro들과 이야기를 나누다 보면 공통적으로 이야기하는 부분이 알고리즘이 어렵다는 것이다. 찬찬히 이야기를 나누다 보면 알고리즘이 어려운 이유는 알고리즘을 왜 공부해야 하는지 정확히 모르기 때문이다. 알고리즘 공부에 대한 필요성을 느끼지 못하다 보니 그다지 공부를 하기 싫게 느껴진다.

 

알고리즘을 모르고도 프로그래밍이 가능하다.

사실 알고리즘을 공부를 하지 않고도 프로그래밍을 할 수 있다. 특히 정형화된 프로그래밍일수록 사실 알고리즘을 모르고도 프로그램 개발을 하는데 당장의 지장은 없다. 실제로도 멘토링을 통해서 취업을 한 3년 차 이내 Bro들과 이직 멘토링을 하다 보면 알고리즘을 다 잊어버린 Bro들이 대부분이다. 솔직히 필자도 100% 이해가 되는 점이다. 필자도 알고리즘을 응용해서 개발하는 분야가 아니거나 라이브러리에서 가져다 사용만 하고 아니면 일명 복붙으로 프로그램 개발을 해왔다면 당연히 다양한 알고리즘에 대해서 공부해왔던걸 잊어버릴 수밖에 없다.

또한 전공 학부생이나 비전공자 학생들도 보면 사실 당장의 과제나 프로젝트를 만드는데 알고리즘에 대한 정확하고 확실한 이해가 필요가 없다. 당장 제출해야될 과제가 많거나 완성해야 되는 프로젝트가 있는데 구글링 해서 찾아서 연결하기 바쁘지 본인이 사용한 기능이나 알고리즘을 공부할 필요성이 느껴지지 않는 것이다. 결국 본인이 알고리즘에 대해서 이해를 제대로 하지 못하더라도 당장의 문제는 해결할 수가 있다 보니 굳이 알고리즘을 왜 공부해야 하는지 생각조차 하지 않게 된다. 정작 알고리즘과 프로그래밍에 대한 기능적 원리 이해 공부를 시작할 때는 취업 전에 코딩 테스트가 있다는 걸 알고 족집게 공부를 하는 경우가 많다.

 

알고리즘을 모르면 응용을 할 수 없다.

거두절미하고 알고리즘을 모르면 응용이 되지 않는다. 프로그래밍 분야에 따라서 알고리즘 이해도의 중요성은 각기 다르지만 필자가 느끼기에는 모든 분야에서 알고리즘의 이해는 정말 중요하다. 알고리즘이 왜 중요한지는 사실 개발자 채용 과정에서도 살펴볼 수 있다. 많은 IT 기업들이 대부분 서류, 면접 그리고 코딩 테스트를 통해 인재 채용을 결정한다. 코딩 테스트에서 대부분 알고리즘이나 자료구조에 대한 부분에 대한 문제를 낸다고 하여 한국에는 코딩 테스트를 준비하기 위한 별도의 웹사이트가 존재할 정도이다. 기업들이 코딩 테스트에서 왜 알고리즘이나 자료 구조 즉, 프로그래밍 기능에 대한 이해도를 문제로 낸다는 것은 실무 업무에서 해당 기본 지식들이 중요하다는 걸 알 수 있다. 그럼에도 불구하고 많은 Bro들은 알고리즘 공부가 당장 와닿지 않다 보니 소홀히 하는 경향이 크고, 비전공자에게는 단기간에 알고리즘 공부를 하는 것이 사실 쉬운 일이 아니다.

필자는 프로그래밍이란 마치 요리와 같다고 생각한다. 최근 유행하는 Meal kit처럼 하라는데로만 따라 하면 요리가 완성되는 것처럼 알고리즘에 대한 이해를 하지 못하더라도 툴을 사용할 줄 알고 언어만 안다면 시키는 데로만 하면 된다. 하지만 정말 새로운 요리는 아니더라도 기존 요리 방법을 기반으로 자신만의 맛을 더 낼 수 있는 방법을 생각해내서 더 맛있는 요리를 하려면, 프로그래밍에서 알고리즘에 대한 이해가 충분해야 한다.

 

알고리즘을 모르면 발전이 없다.

알고리즘을 제대로 알지 못해도 취업도 되고 프로그램 개발도 할 수 있다. 하지만 결과적으로는 본인 발전이 없으며 스스로가 스트레스를 받을 수밖에 없다. 앞서 이야기한 바와 같이 알고리즘을 제대로 이해하지 못하면 프로그램 개발에 있어서 응용력이 떨어진다. 한마디로 다른 개발자는 퇴근할 동안 자신은 밤새서 찾아보면서 일을 해야 한다. 또는 알고리즘을 잘 다루는 신입 개발자와 비교 대상이 되고 결국 연봉 협상이나 승진에서도 밀릴 수밖에 없다. 필자가 느낀 프로그래머라는 직업의 무서움은 Fair 하다는 것이다. 본인이 항상 노력하지 않고 당장은 즐거워도 나중에 더 큰 스트레스로 다가온다. 물론 개발 천재로써 노력하지 않아도 충분히 잘하는 사람이라면 문제가 없다. 그러나 필자처럼 노력파라면 기본기부터 완벽해야 어려운 작업을 수행할 때 문제없이 개발이 가능하다는 것이다. 무엇보다 무서운 점은 개발 천재라고 불리는 사람들은 알고리즘과 기본 지식을 완벽히 이해했기에 노력하지 않고 개발을 쉽게 쉽게 할 수 있는 것이다. 결국 알고리즘을 제대로 파악하지 못한다면 실력 향상을 기대하지 말아야 한다.

 

노력하면 할 수 있는 알고리즘 공부

프로그래밍에 대한 적성과 흥미가 맞지 않다면 고민할 필요없이 다른 공부를 해야 하는 건 사실이다. 하지만 프로그래밍이 적성과 흥미와 맞다면 알고리즘은 공부는 충분히 노력을 할 수 있다. 프로그래밍을 공부하는 학생들에게 하루에 조금씩 직접 예제 코드나 프로그램 개발을 해보라고 하는 것은 직접 해봄으로써 익힐 수 있는 시간을 가져보라는 것이다. 알고리즘 공부도 마찬가지이다. 시간 투자를 통해 기본 원리를 정확히 이해하고 차곡차곡 쌓아간다면 개발자가 되었을 때 큰 도움이 된다. 마치 일확천금을 노리듯이 당장 무엇이 이루어지지는 않는다. 하지만 독서나 단어 공부와 같이 조금씩 매일 시간 투자를 하여 완벽히 알고리즘을 이해해 간다면 미래에 자신도 모르게 프로그램 개발에 있어서 보다 더 수월하게 개발이 가능해질 것이다. 독서, 단어 공부, 알고리즘 공부 모두 필자가 현재까지도 느끼고 있는 부분이다. 다만 알고 있음에도 매일매일 유지하는 것이 어려운 게 바로 독서, 단어 공부 그리고 알고리즘이나 프로그래밍 지식에 대한 이해 공부인 것 같다.


 

728x90

댓글