개발자

오픈 소스 라이브러리를 이해하는 방법

2022년 10월 24일조회 2,601

공부 목적으로 리액트나 리액트 쿼리 같은 라이브러리를 열어서 구현부를 확인합니다. 내가 사용하는 리액트 API가 실제로는 어떻게 구현되어 있는지 확인하고 이해해야 단순히 리액트를 사용하는 것이 아니라 응용을 할 수 있다고 생각해서 이런 식으로 공부를 하는데, 생각보다 의미를 알 수 없는 코드가 많아서 어렵고 전체적인 구조를 파악하는 것도 쉽지 않습니다. 그냥 끝까지 파고들어서 붙들고 있는 것이 답일까요? 이렇게 하는 것이 의미가 있는지도 궁금합니다. 하도 오래 붙들고 있다보니 시간을 효율적으로 쓰는 것인지 걱정도 됩니다. 혹시 중간 단계가 있을까요? 저는 1년 6개월차 프론트엔드 개발자이고 개발을 배운지는 2년 되었습니다.

이 질문이 도움이 되었나요?
'추천해요' 버튼을 누르면 좋은 질문이 더 많은 사람에게 노출될 수 있어요. '보충이 필요해요' 버튼을 누르면 질문자에게 질문 내용 보충을 요청하는 알림이 가요.
profile picture
익명님의 질문

답변 8

인기 답변

Outsider님의 프로필 사진

오픈소스의 코드를 읽는 것은 정말 좋은 방법이라고 생각합니다. 대신 느끼시는 것처럼 쉽지 않습니다만 오랜시간 노력하면 정말 큰 자산이 될것입니다. 쉽지 않은 이유는 여러가지가 있는데요 사용하시는 라이브러리는 오랜 시간동안 고도화된 라이브러리라서 코드 양도 많고 복잡도가 상당할 가능성이 높습니다. 몇가지 방법이 있는데 버전을 낮추는 것입니다. 재작성되거나 버전이 올라가면서 프로젝트 구조가 많이 달라지기도 하지만 어느정도 프로젝트가 해결하려는 문제는 유지되기 때문에 초기 버전을 보면 코드의 양이 적어서 좀더 이해하기가 좋을 것입니다. 비슷한 목적으로 좀더 작은 유틸리티성 프로젝트로 읽는 연습을 하는 것도 좋습니다. 저같은 경우는 목적성이 있을 때 좀 더 보기가 쉬웠습니다. 동작을 파악하고자 할때도 그렇긴 하지만 버그 등으로 원인을 추적할 때는 프로젝트 전체의 구조는 모르더라도 내가 보려고 하는 동작만 쫓아가다 보면 해당 부분에 대해서는 이해할 수 있는 경우가 있습니다. 해당 부분을 이해했다면 어느정도 목적은 달성한것이고 반복하다보면 코드를 좀 더 빠르게 읽을 수 있습니다. 유명 라이브러리라면 from scratch를 붙여서 검색해 보시면 해당 라이브러리를 처음 부터 작성해 보는 글이 있는 경우가 있습니다. 이럴 때는 불필요한 코드(특정 브라우저를 대응하는 코드라거나 유지보수를 위한 추상화)는 제거하고 핵심만 다루면서 설명하기 때문에 이런 글이 있다면 이해하시는데 많은 도움이 될 수 있습니다.(대신 원하시는 부분이 다 있진 않습니다.) 패턴이나 아키텍처에 대한 공부도 필요합니다. 완전히 새로운 구조는 많지 않기 때문에 이런 공부를 해두면 해당 코드가 어떤 의도를 가진 코드인지 도움이 됩니다. 한번에 빠르게 가는 방법은 없어서 답답하시겠지만 노력하신 시간이 나중에 도움이 될거라고 생각합니다. 개인적으로 코드 읽기 능력은 시간이 갈수록 중요해진다고 믿는 편이라 지치지 않게 계속 보기시를 응원하겠습니다.

profile picture

익명

작성자

2022년 10월 29일

정말 감사합니다. 많은 도움 되었습니다!

인기 답변

박승규님의 프로필 사진

오픈 소스의 경우는 해당 오픈 소스의 디자인을 어떻게 했는지 찾아보는 것이 중요합니다. 코드를 무작정 읽기 만하면 이해 안되는 것이 많을 텐데요. 이는 오픈소스에 사용된 프로그래밍 언어의 고급 문법을 모르는 경우와 오픈소스를 통으로 이해하려고 해서 그런 경향이 큽니다. 본인이 궁금한 것이 무엇인지 해당 소스를 찾아서 돌려보고 비슷하게 구현도 해보고 문법을 몰라서인 경우는 문법을 백퍼센트 정확하게 숙지하셔야 합니다. 무엇보다도 리액트 같은 경우는 10년도 넘게 만들어온 것이므로 몇일 만에 다 이해하려고 하는 것은 욕심일 수 있습니다. 천천히 그러나 꾸준히 하다보면 늘 것이라생각합니다. 영어가 되신다면 관련 커뮤니티에 질문을 올리는 것도 좋을 것 같습니다.

프레드윰님의 프로필 사진

이건 제 개인적인 생각인데 꾸준히 인강 보면서 이해하는게 좋아요 금방 학습하는 언어가 아니라고 봅니다

강병진님의 프로필 사진

작동 원리를 이해하려고 하는 노력은 좋다고 생각합니다! 혼자 공부하다가 마주하는 “생각보다 의미를 알 수 없는 코드” 예제를 올려주시면 같이 고민할 수 있을 것 같습니다

psmon님의 프로필 사진

프레임워크와 라이브러리개념을 혼용한것 같습니다. 두차이를 구분하고 접근하면 도움될것같습니다. 아래링크가 잘정리된것 같아 추천합니다. https://webclub.tistory.com/m/458

류호준님의 프로필 사진

시간이 많고 오픈소스 컨트리뷰트에 뜻이있다고 하시면 계속 하셔도 좋지만 라이브러리를 읽고 이해한다고 무조건 실력이 느는건 아닙니다. 도큐멘테이션이 있고 우리가 사용할 수 있게 잘 포장된 엔드포인트들이 있으니 잘 사용하시다가 꼭 알고싶은 부분이 생긴다면 엔드포인트 함수부터 시작하여 파고들어가보시면 될 것 같습니다. 무조건 코드만 읽는 것 보다는 전체적으로 어떻게 동작하는지를 이해하기 쉽게 설명해둔 글을 먼저 읽어보는 것도 도움이 될 수 있습니다

이시우님의 프로필 사진

의미를 알 수 없다고 하신 코드 부분을 chatgpt에게 물어보면서 공부하시는건 어떨지요? 저는 요즈음 chatgpt를 개인과외 선생님처럼 사용하고있는데 생각보다 좋은 방법인 것 같아서요.

이재찬님의 프로필 사진

다른 공부에 영향을 주지 않는 취미 같은 느낌으로는 정말 좋은 공부 방법이라고 생각합니다. 저 또한 공부를 할 때, 최대한 많은 코드를 보려고 노력했고 그게 성장에 많은 도움이 된 케이스입니다. 잘 짜여졌고, 많은 사람이 이용하는 라이브러리일 수록 양질의 코드들로 작성되어 있는 경우가 많으니까, 꼭 구조를 완벽히 이해하는걸 떠나서 좋은 코드를 많이 보는 그 자체만으로도 정말 많은 도움이 될 수 있다고 생각합니다. 물론 그 과정에서 이해도 할 수 있다면 베스트겠죠? 그리고 그런 방식으로 오픈소스를 분석하는 실력을 기르다보면 나중에 bug를 발견했을 경우에 직접 수정하고, fix하면서 contributor가 되고 하다보면 실력이 정말 많이 늘어있는 자신을 보실 수 있을거에요!

지금 가입하면 모든 질문의 답변을 볼 수 있어요!

현직자들의 명쾌한 답변을 얻을 수 있어요.

또는

이미 회원이신가요?

목록으로
키워드로 질문 모아보기

실무, 커리어 고민이 있다면

새로운 질문 올리기

지금 가입하면 모든 질문의 답변을 볼 수 있어요!