나는 이렇게 학습한다/Etc

cs에 대한 생각

daco2020 2022. 1. 20. 01:21

기업 협업이 내일이면 마지막이다.


기업 협업을 4주간 진행하면서 느낀 점은 cs지식이 실제 실무와 많이 연결되어 있다는 것이다. 예를 들어 나는 개발에서 데이터 저장은 DB만 사용하는 줄 알았는데, 문제를 어떻게 바라보느냐에 따라 DB 외에도 메모리, 파일, 등을 사용할 수 있어야 한다는 것을 알게되었다.


내가 이번에 다룬 주식 호가 데이터는 전형적인 '스트리밍 데이터'로 그 양이 어마어마하다. 이렇게 방대한 데이터를 DB에 그대로 저장하는 것은 좋은 방법이라고 할 수 없다. 왜냐하면 하나의 테이블에 매일 수백만 개의 데이터를 쌓는 것은 데이터 관리나 활용 측면에서 매우 비효율적이기 때문이다. 하지만 이런 데이터를 특정 기준에 따라 여러 파일로 분산 저장한다면 어떨까? 데이터를 관리하기도, 활용하기도 매우 용이할 것이다.


이러한 문제들을 해결하기 위해 필요한 것이 바로 cs지식이다. 단순히 코드 로직만 짜는 것은 좋은 개발자라고 보기 어렵다. 네트워크와 서버, 운영체제 등의 지식을 통해 내게 주어진 문제를 효과적으로 해결할 수 있어야 한다. 지식이 없으면 해결책도 단편적일 수밖에 없다. 때문에 효과적이고 다양한 방법으로 문제에 접근하기 위해서 cs지식이 필요한 것이다.


cs를 공부하는 것은 단순 암기라고 생각했다. 면접을 위한 공부라고 생각했다. 그래서 틈틈이 공부하자는 마음으로 매일 출퇴근 길에 cs관련 책을 읽었다. 그런데 웬걸.. 다음장을 넘기면 방금 읽었던 내용이 머릿속에서 지워졌다 :(...


이와달리 내가 직접 문제를 해결하기 위해 공부한 cs지식은 머릿속에 계속 맴돌았다. 설령 헷갈리고 잊어버리더라도 다시금 찾아보고 익히고 코드로 구현하기 위해 애쓰는 과정에서 점점 이해가 되기 시작했다.


'필요에 의한 공부'라는 말이 새삼 와닿는다. 내가 동시성을 구현하기 위해 '비동기'와 '스레드'를 공부하고 실제 적용한 것처럼, cs를 글로만 이해하는 것이 아닌 실제 문제를 만나 적용해보는 것. 이것이 가장 효과적이고 재미있는 cs 공부방법이 아닐까.