장님이 코끼리 코만 더듬기

Root(√)·2020년 11월 4일
1

블로그와 나

목록 보기
8/8

지난 2주 정도의 기간 동안 짬을 내서 flask로 백엔드 개발을 하였다.
'깔끔한 파이썬 탄탄한 백엔드' 책을 보면서 실습을 했다. A to Z로 내가 개발하는 것이 아니고 백엔드 개발의 주요 개념을 '학습'하는데 목적을 두고 실습을 하였다. 뒷부분에 있던 파일 업로드 엔드포인트 구현까지는 하지 않았다. 이렇게 더 하는게 무슨 의미가 있나 싶었기 때문이다.

코딩을 빠르게 배우는 법


나는 비전공자고, 주변에 프로그래머가 거의 없어서 처음 프로그래머의 진로를 정했을 때 어디서부터 시작해야할 지 막막하였다. 인터넷, 유튜브 등에서 접하는 많은 추천 경로는 일단 무조건 뭐를 만들어보라는 것이었다. 클론 코딩을 해보고, 그 다음에 그것을 다시 만들어보든지, 아니면 내가 만들어보고 싶은 것을 한 번 만들고 나면 실력이 는다는 것이었다. 그래서 python으로 웹 크롤러도 만들어보고, 패스트캠퍼스의 데이터 엔지니어링 강의도 들으면서 챗봇도 만들어보고, 이번처럼 백엔드 개발도 해봤다. 이런 과정에서 성장하지 않은 것은 아니다. 하지만 코딩을 하다보면 이게 왜 필요한지도 모르겠고, 코드너머에서 무슨 일이 일어나는지 궁금하기도 해서 장님이 코끼리 코만 더듬는 듯한 기분이 들었다.
그리고 더 큰 문제는 따로 있었다.

프로그래밍을 왜 배우고 싶은데?


저번 인턴을 데이터팀에서 하였고, 그래서인지 자연스럽게 데이터 엔지니어링 쪽에 관심을 가지게 되었다. 저번 달에 스타트업 한 군데에 지원을 하였고, 면접에 갔다가 데이터 엔지니어링 쪽에 관심이 있다고 말을 하였더니 그걸 왜 배우고 관심을 가지고 있고, 그게 소비자, 사용자에게 어떤 효용을 발생시키는 지 등을 물어봤는데 꽤 오랜 시간 나는 답을 하지 못하였다. 모든 행동에 이유가 필요하다고 생각하지는 않지만, 내가 왜 데이터 엔지니어링을 해야하는지 깊이 생각해보지 못 했던 것 같다.

프로그래밍을 배우고 싶은 이유


나는 경제금융을 전공하였다. 자연스럽게 투자에 관심을 가지게 되었고, 가치투자 동아리 활동을 하였다. 재무제표를 좀 더 잘 읽고 싶었고, 투자를 좀 더 잘하고 싶었다. 그리고 사모펀드, 스타트업 액셀러레이터 등에도 관심이 있어서 공인회계사 공부를 하였다. 2년 정도 공부를 하다가 개인적인 이유에서 그만두고 복학을 하였다. 그리고 원점에서 진로에 대해 다시 생각해보게 되었다.

처음에 투자는 가치투자에서 시작하였지만, 나는 거래량과 가격 그 자체에 관심을 가지게 되었고, 자연스럽게 기술적 투자, 시스템 트레이딩, 금융공학 분야에 관심이 생겼다. 그래서 전공에서 계량경제와, 교양에서도 통계와 관련된 과목을 수강하였다.

나는 처음에 경제 현상을 계량화하고, 통계분석하고 이런 것에 관심이 있는 줄 알았다. 근데 과제를 할 때 어떤 결과물을 확인하는 것 그 자체보다는 코딩을 하고, 디버깅을 하고 밤을 새는 것을 더 재밌어한다는 것을 알게 되었다. 학부 생활을 하면서 내 스스로 밤을 새고, 엉덩이 한 번 안 떼고 하나를 붙들고 어떤 작업을 한 것은 이 경험이 유일했다. 동시에 즐겨 읽었던 책인 '인공지능 투자가 퀀트'에서 나오는 분산 프로그래밍, CUDA 등에 더 관심이 가기도 하였다. 이런 경험들이 내가 프로그래밍을 공부하게 된 계기가 되었던 것 같다.

외공보다 내공, 당분간의 방향


처음에는 빠른 취업을 목표로 기업에서 요구하는 기술을 습득하는데 주안점을 두고 공부했던 것 같다. 그런데 나의 성향은 외공보다는 내공에 치중하는 변태적인 성향이 있다. 어떻게 보면 학구적(?)이라고 할 수 있는데, 요가를 처음 배울 때도 그냥 동작 따라하고 이러는게 아니라 요가의 역사, 철학, 요가의 종류, 요가의 구루 등에 대해서 공부하고 다녔다. 투자를 공부할 때도 투자의 스킬적인 부분이 아니라 투자 철학, 투자 가치관 정립, 역사적인 투자가들에 대해 공부하는 것을 즐겼다. 이런 나의 성향이 프로그래밍 공부할 때도 발현되는 것 같다. 장님 코끼리 코 더듬는 듯한 상황이 반복되는 것을 견딜 수가 없다.

그래서 당분간은 C, C++ 공부하면서 자료구조, 알고리즘 공부에 치중하려고 한다. (C의 악명높은 명성을 익히 들었으나, 다행히 아직까지는 C가 재밌다. 이전에 공부하였던 Go와 흡사해서 그런지 거부감은 없다.)그리고 운영체제를 공부할 생각이다. 전에도 운영체제를 공부한 적이 있긴 하지만 좀 겉핥기 식으로 공부하여서, 지금처럼 시간 많은 백수일 때 리눅스 커널을 뜯어볼까 한다. 그리고 CUDA, GPU에 대해서도 좀 공부해볼까 한다. 취업은 뭐.. 어떻게든 되지 않을까?

어쨌든 나는 단순 구현보다 기반 원리, 프로그래밍 사고 방식, CS fundamental 등을 먼저 함양하고 싶다.

profile
Software Engineer

0개의 댓글