Yunseok's Dev Blog

배운 것을 적는 블로그입니다.

달랩 자료구조와 알고리즘 회고

계기

소프트웨어는 엄청나게 변화가 빠르다. 내가 개발을 처음 시작했을 때만 해도 Angular1(Angularjs)로 개발을 시작했는데 이제 벌써 Angular8이 발표한다. 만약 기술만 쫓았다면 더 이상 나는 쓸모없는 사람이 되었을 것이다. 과거의 영광에 묻혀서 새로운 것을 받아들이지 않는 꼰대 같은 사람이 되었을 것이다. 개발자는 문제를 해결하는 사람이다. 하나의 도구를 잘 다루는 사람이 아니다. 문제를 해결하는 데 적절한 도구를 선택하고 다루는 방법을 배워서 문제를 해결해야 한다. 그러려면 새로운 기술들을 빠르게 배울 수 있어야 한다. How to solve it이라는 책에서는 항상 이렇게 얘기한다. 이 문제를 다른 곳에서 본 적이 있는가? 우리가 문제를 직면할 때마다 항상 새로운 문제라고 생각하지만 그런 일은 거의 일어나지 않는다. 언젠가 그런 문제를 만난 적이 있고 다른 사람의 이야기를 들었을 수도 있다. 내가 이미 해본 경험이 있다면 그때를 떠올려 좀 더 쉽게 문제를 해결할 수 있을 것 이다.

자료구조와 알고리즘

프로그램은 어떻게 만들어지는가? 자료구조로 데이터를 표현하고 알고리즘이라는 순서로 실행한다. 프로그램의 가장 기초가 된다는 뜻이다. 학교에서 모두 배웠던 내용이지만 학교에서는 제한된 시간 동안 너무 많은 내용을 가르치려 하다 보니 이론만 배우고 끝이 났었다. 이론상으로는 이해가 됐었다. 그리고 그렇게만 알고 있으면 될 줄 알았다. 실제로 쓸 일은 없으니까… 하지만 실제로 쓸 일이 생겼다! 블록체인을 개발할 때 머클트리를 구현할 일이 생겼다. 만약 제대로 이해하고 있었다면 어땠을까? 만약 해시테이블을 제대로 이해하고 있었다면 Golang의 map이라는 자료형을 배울 때 더 쉽게 배웠을 것이다. 해시 함수를 좀 더 쉽게 이해했을 것이다.

달랩 자료구조와 알고리즘 수업 1 & 2

단순히 이론만 배우는 주입식 수업이 아니었다. 실습을 통해 이론을 이해한다. 같이 수업을 듣는 사람들과 페어 프로그래밍으로 문제를 해결하는 데 어떤 자료구조를 사용하고 어떤 알고리즘을 통해 해결할 것인지 제약조건이나 요구 사항을 보면서 같이 상의하고, 고민하고 결정하는 그 과정에서 한 번 더 깊게 이해하게 되었다. 그리고 그것을 코드로 직접 구현하면서 더욱 깊게 이해하게 되었다. 다음에 또 이런 수업이 있다면 주저 없이 신청할 것이다.

신청하기