본문 바로가기
IT 기술

[IT 기술] 오픈소스 분석 방법과 개발자 공부 방법

by 개발 까마귀 2021. 3. 14.
반응형

[IT 기술] 오픈소스 분석 방법

안녕하세요. 개발자 개발 까마귀입니다.
오늘은 개발 초보자와 그리고 공부법을 모르는 주니어 개발자한테 추천드리는 글입니다. ㅎㅎ
이 글을 작성을 한 이유는 OKKY라는 커뮤니티 사이트를 보니 많이 공부법을 거의 학원이나 과외로 연결 시키더군요.
이게 시간이 없고 빨리 취업을 해야한다면 좋은 방법이지만 그 이후가 문제인거같습니다. 제대로된 공부법을 안하더군요. 저는 개발자의 평생 개발 공부법은 오픈소스를 보면서 공부를 하고 그 오픈소스에 있는 플러그인을 분석해서 직접 플러그인을 붙여도 보고 해야하지만 그냥 학원에서는 가르친 공부법으로만 생각을해서 코드를 짜는 경우가 많습니다.
개발자는 정말 스펙트럼을 넓게 가져야 합니다. 뭐 예를 하나 들어볼까요? 여러분이 .html 파일을 만들고 거기에 .css와 .js파일 연결 시켰습니다. 작은 프로젝트면 연결이 1~6개 정도 될겁니다. 하지만 규모가 큰 프로젝트면 20~40개 정도되는 양입니다. 근데 이 홈페이지는 페이지 양은 적지만 사용자가 똑같은 홈페이지를 여러번 돌아 다닐 수 있습니다. 뭐 채팅 페이지 같은거죠 그러면 계속 똑같이 20~40개는 파일들을 들어갈 때 마다 불러들입니다. 얼마나 비효율적인 거죠? 이것도 여러가지 방법이 있습니다. 우선 파일들은 GET 요청이니 그에 대한 Routes를 만들고 요청한 파일에 대한 절대경로를 안다음 파일을 압축한 후 그 파일의 코드를 읽어 클라이언트에 응답을 하는겁니다. 그러면 똑같은 페이지를 왔다갔다해도 20~40개되는 파일을 압축을 했기 때문에 그렇게 큰 부담이 아닙니다. 제가 이거를 어떻게 알았을까요? 제가 천재여서? 학원에서 알려줘서? 아닙니다. 저는 지금까지 독학만 했고 머리도 좋은편이 아닙니다. 정답은 오픈소스입니다.

오픈소스는 여러분의 생각을 넓혀줍니다.

오픈소스야말로 실무 코드입니다. 여러분들이 계속 공부법 그리고 강좌에 나온 흐름 등은 FM이 아닙니다. 대부분이 보안에 취약한 방법일 뿐더러 충분히 쓸데없는 트래픽을 제어할 수 있지만 딱히 강좌나 학원에서는 그런 방법도 알려주지 않습니다. 하지만 오픈소스는 여러분이 계속 파고만 들면 이러한 방법을 다 알 수 있습니다. (유명한 오픈소스일수록 좋습니다.) 특히 외국에서 짠 코드를 보면 정말 놀랍습니다. 천재들은 많고 제가 몰랐던 방식들도 있고 저의 2차원적인 생각들이 3, 4차원적으로 넓어지는게 느껴지더군요.

코드 한줄 한줄 분석하지 마세요.

일단 한줄 한줄 코드를 분석하지 마세요. 먼저 파일 과 폴더별로 분석을 하세요. 코드별로 분석을 하면 분석도 느리고 숲을 보는게 아닌 나무를 보는거여서 전체 흐름을 파악하기도 힘듭니다. 오픈소스 폴더만 보더라도 배울거는 많습니다. 폴더 이름을 의미없이 짓지는 않으니깐요. 정말 폴더명 하나하나 분석하세요. 그러면 기초적인 플로우를 알 수 있습니다.
폴더별로 분석을 하면 그 다음 파일별입니다. 이 파일이 무슨 역할을 하고 이 파일과 연결된 파일은 뭐가 있는지 등을 보세요. 이게 함수 명과 변수 명 주석 등 만 봐도 대충 예상이 갑니다. 이 파일이 무슨 역할을 하는지요. 그런 다음 함수를 따라서 가시고 그 다음에 코드를 보면서 흐름을 따라가시면 됩니다.

목적을 정하세요.

그냥 무작정 "이 소스의 모든 기능을 알아야지!" 하면 시간도 오래 걸리고 분석도 힘듭니다. 우선 구체적인 목적을 정하세요. 예를들어 게시판 에디터 오픈소스면 글자 크기를 키우는 플러그인을 만든다거나 채팅과 관련된 오픈소스면 그 채팅에 관한 소스를 분석하고 적용을 시킨다거나 등 구체적인 목적을 정하시고 점점 반경을 넓히시면됩니다.

오픈소스를 분석 전 충분한 지식

오픈소스는 난이도가 높습니다. 원래 남의 소스코드 보기가 제일 힘들죠 그러니 남의 소스 분석보다 새로 짜는게 좋다라는 말이 괜히 나온게 아니니깐요. ㅎㅎ 하지만 오픈소스는 다릅니다. 코드를 꼬지도 않고 자기들 끼리 알 수 있게 코드를 짜지도 않았습니다. 그러면 오픈소스를 할 이유가 없죠 가끔가다 이상한것도 있지만 그런거 거르세요. 그러니 처음 입문부터 오픈소스는 매우 힘든 방법입니다. 하지만 스파르타식 그리고 빠른 성장과 집요하게 계속 파고들 자신이 있으면 입문이어도 분석하고 구글링하면서 공부하면 누구보다 빠르고 FM 방식데로 성장할 수 있습니다. 제대로 분석만 한다면요.

분석하면서 문서 작업

아니 무슨 분석하는데 문서작업을 하냐라고 생각할 수 있지만 무조건 해야합니다. 그냥 이렇게 생각하세요. 책 출판하듯이요. 자 생각해보세요. 지금 여러분이 보는 오픈소스 실무에서도 바로 쓸 수 있을 뿐더러 소스 분석도 힘듭니다. 근데 한번 이해했다고 안 까먹을 자신이있나요? 플로우도 복잡할 뿐더러 분석하면서 100% 이해는 어렵습니다. 그리고 시간이 지나면 당연히 이게 무슨 기능을 했는지 기억도 가물가물 할텐데 분석하고 이해하는 즉시 워드나 한글 메모장 등 이해한걸 적으시면서 문서작업하는게 좋습니다. 그래야 더 오래 기억되고 까먹어도 보면 기억이 나니깐요.

학원과 과외 좋습니다. 하지만 영원히 학원 과외다니면서 코딩 공부하실거는 아니잖아요? 모르는거 있으면 바로바로 질문하면서 원하는거를 얻는거는 개발자한테는 나쁜 습관입니다. 1시간 하루 길면 일주일 정말 길면 1달 심하면 6개월 까지 고민하면서 깨닫는게 개발자입니다. 학원에서 배운데로만 공부를 하면 울타리 안에서만 개발할겁니다. 제가 위에서 말했듯이 오픈소스는 여러가지 상황에 대비해 그에 맞는 코드와 플로우 그리고 설계까지 실무에서도 오픈소스를 이용해서 서비스까지 할 정도면 말 다한겁니다. 그냥 오픈소스의 코드와 크기의 겁을 먹어서 도망치는 개발자가 80%일겁니다. 하지만 더 성장하고싶다면 오픈소스뿐이라고 저는 생각합니다.

감사합니다.

반응형

댓글