잡동사니

알고리즘 공부의 필요성 본문

IT/Algotithm

알고리즘 공부의 필요성

yeTi 2022. 12. 22. 17:14

안녕하세요. yeTi입니다.
오늘은 알고리즘 공부를 해보면서 공부하는 것이 안하는 것보다 프로그래밍을 함에 있어서 도움이 된다고 느낀점을 공유해보고자 합니다.

코테를 위한 알고리즘?

흔히들 알고리즘 공부라 하면 코테(코딩 테스트)를 준비하기 위해서 한다고 인식합니다. 저도 그랬었고 주변 의견을 들어봐도 그렇고,

알고리즘 공부를 한다고 해서 실무에 어디다가 쓰느냐.

좋은 기업에 입사하기 위해, 코테를 통과하기 위해, 알고리즘을 공부한다는 의견이 대다수 입니다.

하지만 최근 제 경험은 개발을 위한 사고를 하는데 도움이 된다고 느꼈습니다.

사고력 훈련

이전 글에서도 알고리즘을 공부해야하는 이유 라는 제목으로 알고리즘 공부의 필요성에 대해 공유한적이 있는데요.

해당 글에서는 논리적인 생각의 코드로써 직관적인 표현과 논리적인 생각에 대한 테스트가 코드의 테스트 scope이 된다는 부분에서 받은 충격으로 알고리즘 공부가 필요하다는 의견을 공유했었습니다.

하지만 이번에는 알고리즘 공부를 하면서 깨달은 부분이 문제를 인식하고, 해결 방안을 고려하고, 해결 방안대로 구현하고, 구현한 해결 방안이 올바른지 검토하고, 개선할 수 있는 부분을 개선하는, 일련의 과정이 알고리즘을 공부하면서 자연스럽게 익혀진다는 것을 깨달았습니다.

따라서 알고리즘을 공부하고 적용한다는 행동이 프로그래밍적 사고력을 기르기 위한 훈련이 된다고 느껴졌습니다.

경험한 현실

코드기반 대화하기를 해보면서 느낀 부분은 생각보다 개발자들이 문제해결을 위한 사고는 하지 않고 기존 코드를 copy & paste 방식으로 코드를 만들어 나가는 경험을 했고, 왜 자신이 해당 코드를 작성했는지 설명하지 못하는 경험을 했으며, 다른 사람의 코드에 궁금증을 가지지 않는 것을 경험했습니다.

이러한 경험은 내 코드가 왜 신뢰할만한지 설명하지 못하고 확장성이라는 이유로 불분명한 인터페이스를 정의하며 시간복잡도에 대한 고려가 필요한 연산은 모두 데이터베이스에 위임하는 현상을 만들었습니다.

또한, 알고리즘 문제를 놓고 페어프로그래밍을 모방하여 라이브 코딩을 진행해 봤는데요. 해당 활동을 하면서 경험한 부분은 문제를 어떻게 해석해서 어떤 방식으로 풀이할 계획이고 왜 이 해결방법이 올바른지에 대한 고려를 하지 않고 손이 가는 직관대로 코딩을 하는 방식들을 보면서 개발자들은 생각보다 사고하지 않는다는 느낌을 받았습니다.

훈련의 결과

최근 2주동안 알고리즘 공부를 해보면서 느낀 부분은 문제를 정확히 인식해야 어떤 방식으로 문제를 해결할지 계획할 수 있고, 문제 해결을 위한 방식들에 대해 고민해보고 최선의 방식을 선택하는 경험을 할 수 있으며 선택한 방식에서 나타날 수 있는 문제를 고려해보는 훈련을 하는데 도움이 된다는 점입니다.

만일 내가 코드로 다른 사람들을 이해시키지 못한다면 알고리즘을 공부해보면서 사고하는 훈련을 해보는것을 추천드립니다.

내가 생각한 것을 코드로 표현하고 다른 사람에게 설명할 수 있게 된다면 프로그래밍이라는 활동, 알고리즘 문제를 푸는 행위가 생각보다 재미있다는 것을 느낄 수 있다고 생각합니다.

이상 알고리즘 공부 2주차 개발자의 경험이었습니다.

'IT > Algotithm' 카테고리의 다른 글

알고리즘 공부 - 그래프  (2) 2023.01.10
알고리즘 공부 - 해싱  (0) 2023.01.03
알고리즘 공부 - 트리  (0) 2022.12.22
알고리즘 공부 - sort  (0) 2022.12.15
알고리즘 공부 - recursion  (0) 2022.12.10
Comments