Github 엔지니어가 새로운 코드베이스를 배우는 방법
코딩 경력의 어느 곳에 있든, 당신은 당신에게 완전히 익숙하지 않은 새로운 코드베이스 또는 문제 도메인을 발견하게 될 것입니다. 코드베이스는 많은 디자인 패턴, 버그 수정 및 임시 해결 방법으로 채워질 수 있으므로 새로운 것을 배우는 것은 시간이 많이 걸리고 좌절하는 프로세스가 될 수 있습니다.
작년에 나는 Github의 새로운 팀으로 이사했습니다. 전환하는 동안 동료들이 새로운 기술 공간을 배우는 방법에 대한 통찰력을 수집했습니다. 매혹적인 전략 모음이 나타 났으며, 나는 그것들을 공유하게되어 기쁩니다!
다음은 접근 방식으로 조직 한 가장 효과적인 방법입니다. 노련한 엔지니어 스위칭 팀이든 현장에 새로 온 사람들이든, 이러한 전략은 다음 코드베이스 온 보드를 조금 더 쉽게 만드는 데 도움이 될 수 있습니다.
실습 코드 탐색
시작하는 가장 좋은 방법 중 하나는 코드 자체와 직접 작업하는 것입니다.
- “좋은 첫 번째 문제”로 시작하십시오.: 작고 잘 정의 된 작업을 해결하여 여행을 시작하십시오. 이러한 문제는 종종 코드베이스를 소유 한 팀이 신규 이민자가 압도되지 않고 주요 구성 요소를 이해하도록 돕는 팀에 의해 신중하게 선택됩니다. 그들은 시스템에 자연스러운 진입 지점을 제공하면서 팀에 즉각적인 가치를 제공합니다.
- Github Copilot으로 배우십시오: 코드베이스 옆에있는 Copilot 채팅 창을 탐색 할 때 열립니다. Copilot 채팅을 요청한 다음 사용할 수 있습니다.
/explain
이해하기 어려운 것들에 대한 기능. 개발 환경에서 Copilot Chat 사용에 대해 자세히 알아보십시오. 다음은 Codebase에 대한 이해를 높이기 위해 Github Copilot과 함께 사용한 몇 가지 예입니다.- x를 주면이 기능이 무엇을 반환합니까?
- 이 방법이 무엇을 해야하는지 요약하십시오
- 이 방법에 대한 기존 테스트에서 몇 가지 잠재적 차이는 무엇입니까?
- 원격 측정 및 메트릭을 분석하십시오: 최신 응용 프로그램은 방대한 양의 성능 및 사용 데이터를 생성합니다. 이러한 메트릭을 연구하여 시스템이 생산에서 어떻게 행동하는지, 피크 사용 중에 나타나는 패턴 및 어떤 구성 요소가 가장주의를 기울여야하는지 이해하십시오. 이 데이터 중심의 접근 방식은 응용 프로그램의 실제 동작에 대한 귀중한 컨텍스트를 제공합니다.
- 테스트를 통해 탐색하십시오: 코드를 의도적으로 수정하고 그 효과를 관찰하십시오. 새로운 테스트를 작성하여 이해를 확인하고 시스템이 어떻게 실패하는지 확인하기 위해 의도적으로 물건을 깨뜨립니다 (개발 중). 이를 통해 응용 프로그램의 경계 및 실패 모드에 대한 직관적 인 이해를 구축하는 데 도움이됩니다.
공동 학습
지식 공유는 종종 이해하는 가장 빠른 길입니다.
- 쌍 프로그램: 단지 관찰하지 마십시오 – 경험이 풍부한 팀원과 세션을 페어링하는 데 효과적으로 참여하십시오. 워크 플로에 대해 질문하고 자주 액세스하는 파일에 주목하고 디버깅 전략을 알게됩니다. 주로보고 있더라도 다른 조각이 어떻게 맞는 지에 대한 귀중한 맥락을 흡수 할 것입니다.
- “왜”를 이해하십시오: 할당 된 작업은 그 뒤에 동기 부여를 깊이 파고 들으십시오. 비즈니스 컨텍스트와 기술적 근거를 이해하면 향후 문제 해결에 더 나은 건축 결정을 내리고 도움을 줄 수 있습니다. 겉보기에는 기본적인 질문을하는 것을 두려워하지 마십시오. 그들은 종종 중요한 통찰력으로 이어집니다.
- 팀 커뮤니케이션을 모니터링합니다: 팀 채팅 채널 및 사고 응답 토론에서 활동하십시오. 생산 경보와 팀이 어떻게 대응하는지에 특별한주의를 기울이십시오. 이 노출은 일반적인 실패 패턴을 이해하고 사고를 처리하기위한 근육 기억을 쌓는 데 도움이됩니다.
문서 및 지식 관리
정보 작성 및 구성 정보는 이해를 강화하는 데 도움이됩니다.
- 개인 문서를 만듭니다: 발견, 질문 및 통찰력에 대한 살아있는 문서를 유지하십시오. 중요한 코드 경로, 건축 결정 및 시스템 인터페이스를 문서화하십시오. 이것은 귀중한 참조가 될 것이며 이해의 격차를 식별하는 데 도움이됩니다.
- 기술지도 구축: 시스템 아키텍처, 데이터 흐름 및 엔티티 관계 다이어그램을 만듭니다. 높은 수준의 “블랙 박스”로 시작하여 이해가 커짐에 따라 세부 사항을 점차적으로 채우십시오. 시각적 표현은 종종 코드에서 명백하지 않은 패턴과 관계를 보여줍니다. 내가 이것에 사용하는 도구 중 하나는 Figma입니다. 시스템에 대해 이해하는 기본 블록을 추가하고 상호 작용하는 방법을 추가 한 다음 시스템의 다른 부분을 지속적으로 확대하여 배우기 위해 맵에 추가합니다.
- 명령 치트 시트를 유지하십시오: 발견 한 유용한 명령, 스크립트 및 워크 플로를 추적하십시오. 언제, 왜 사용 해야하는지에 대한 컨텍스트를 포함하십시오. 복잡한 빌드 시스템 또는 배포 파이프 라인으로 작업 할 때 특히 가치가 있습니다. 다음은 내가 종종 Markdown 구문을 참조하는 명령 치트 시트의 예입니다.
- 도메인에 대한 정보를 수집하십시오: 코드베이스에 대한 지식을 관리하는 핵심은 도메인을 깊이 이해하는 것입니다. 이는 도메인을 충분히 일반화 할 수있는 경우 제품 소유자, 고객 통찰력 또는 업계 모범 사례에서 얻을 수 있습니다. 도메인을 깊이 이해하고 해당 공간에서 고객이 가장 중요하다고 생각하는 것이 새로운 코드베이스를 배우는 데 중요합니다.
가르치면서 배우십시오
주제에 대한 이해를 확인하는 한 가지 좋은 방법은 주제를 다른 사람들에게 정확하게 설명하는 능력입니다. 이전 섹션에서 권장 된대로 개인 문서를 만든 경우 향후 새로운 팀 구성원을위한 가이드 및 공식 문서로 공식화 할 수 있습니다.
- 내부 가이드를 작성하십시오: 새로운 것을 배우면 다음 사람을 위해 문서화하십시오. 이것은 당신이 배운 것을 조직하고 종종 당신의 이해가 당신이 생각했던 것만 큼 완전하지 않은 영역을 드러냅니다.
- 공식 문서에 기여합니다: 기존 문서에서 간격이 발견되면 이니셔티브를 사용하여 개선하십시오. 이는 미래의 팀원에게 도움이 될뿐만 아니라 현재 전문가와의 이해를 검증합니다. GitHub-flavored Markdown 가이드에서 GitHub 저장소에 대한 문서 작성에 대해 자세히 알아보십시오.
- 이러한 주요 질문에 답변하여 학습에 정기적으로 반영하십시오.
- 몇 가지 간결한 문장으로 시스템을 설명 할 수 있습니까?
- 인접한 시스템과 어떻게 상호 작용합니까?
- 학습 과정에서 가장 놀라운 점은 무엇입니까?
- 어떤 측면이 불분명합니까?
이러한 모든 권장 사항을 마친 후, 새로운 코드베이스를 배우는 가장 좋아하는 방법은 문서를 문서화하고 그 문서를 다른 사람들이 미래에 사용할 수있는 것으로 바꾸는 것임을 알게되었습니다. 사물을 쓰면 내 생각을 구성하고 이해의 격차를 식별해야합니다.
다음은 새로운 코드베이스를 학습하기 위해 개발 한 마크 다운 템플릿입니다.이 방법과 함께 사용하여 지식을 체계적으로 구축합니다.
학습 방식에 관계없이 새로운 코드베이스에 익숙해지면 시간이 걸릴 수 있습니다. 이 영역에 대한 GitHub 기술을 닦아내야한다면 초보자 비디오를 위해이 GitHub를 확인하십시오.
행복한 학습!
작성자가 작성했습니다
Post Comment