취업준비생을 위한 Github 포트폴리오 정리
Page content
강의소개
- 인프런에서 Streamlit 관련 강의를 진행하고 있습니다.
- 인프런 : https://inf.run/YPniH
개요
- Github에서 포트폴리오 정리하는 방법에 대해 기술합니다.
- 취업준비생들의 취업을 진심으로 응원합니다.
취업준비생들에게 개발이란
- Github에 배포를 하겠다는 뜻은 앞으로 계속적으로 발전 시키겠다는 것을 의미합니다.
- 그런데, 개발은 혼자 할 수 없기 때문에 다른 사람들의 참여를 독려하겠다는 것과 같습니다.
- 가장 좋은 시나리오는 간단하게 배포를 진행하고 프로젝트의 전반적인 취지를 설명한 후 함께 발전시켜 나갈 동료를 구하는 것입니다.
- 이러한 기본적인 관점에서 Github 포트폴리오를 구성하는 것이 좋습니다.
- 데모프로젝트이만, 100% 완성된 개발은 존재하지 않습니다. 보통은 개발을 더 안할 뿐입니다.
필자의 Github를 통해서 살펴보는 Github 포트폴리오
- 의도하지 않게 필자는 강의를 주 업으로 삼고 있으며, 그리고 책도 집필하고 있습니다.
책 홍보 페이지
- 블로그 : https://dschloe.github.io/ds-projects/2024/01/book_intro/
- 책 앞부분에 소스코드가 있는데, 그 중의 한면을 살펴보면 다음과 같이 서술되어 있습니다.
- 필자는 사용 설명서라고 명명했는데, 가장 큰 이유는 실제 독자가 책을 하나씩 읽으면서 코드를 칠일은 거의 없습니다. (일단 필자도 타 책을 구매하면 그렇게 안함)
- 보통은 소스코드를 먼저 찾고, 그걸 실행하면서 이해하는 것을 목표로 합니다.
- 따라서, 실제 빠르게 독자들이 그 코드를 실행할 수 있도록 하는 것이 저자의 목표라고 생각을 합니다.
- 그러면 Github 포트폴리오를 만들 때 필수적으로 들어가면 좋을 내용은 어떤 것이 있을까요?
Github Streamlit 포트폴리오의 소개
- 참조 : Based Plots with Statistical Details : https://indrajeetpatil.github.io/ggstatsplot/
- 기술내용 1 : 프로젝트의 주요 목적
- 기술내용 2 : Python 라이브러리의 주요 버전 및 사용 설명서 기술
- 기술내용 3 : 핵심 기능 (features) 소개 및 역할
- 기술내용 4 : 발표자료 PDF로 업로드
- 기술내용 5 : Release Notes
- 기술내용 6 : 저작권
기술내용 1 : 프로젝트의 주요 목적
- 간단하게 3-4줄 이상의 줄글로 작성을 합니다. (참조 사이트 확인)
{ggstatsplot} is an extension of {ggplot2} package for creating graphics with details from statistical tests included in the information-rich plots themselves. In a typical exploratory data analysis workflow, data visualization and statistical modeling are two different phases: visualization informs modeling, and modeling in its turn can suggest a different visualization method, and so on and so forth. The central idea of ggstatsplot is simple: combine these two phases into one in the form of graphics with statistical details, which makes data exploration simpler and faster.
- 필자의 책을 주제인 부동산 데이터를 포트폴리오를 한다고 한다면 다음과 같이 간단하게 작성할 수 있습니다. (예시)
부동산 데이터를 활용하여 대시보드를 개발하는 목적은 부동산 시장 동향을 시각화하고 사용자에게 부동산 투자 결정을 돕기 위함입니다. 이를 통해 사용자는 지역별 가격 변동, 투자 수익률 예측 및 부동산 시장의 트렌드를 쉽게 파악하고 최적의 부동산 투자 전략을 수립할 수 있도록 도와주기 위함입니다.
기술내용 2 : Python 라이브러리의 주요 버전 및 사용 설명서 기술
- 일반적으로 파이썬에서 라이브러리를 사용할 때는 버전 명시를 해주는 것이 좋습니다.
- pandas : 2.1.2 / matplotlib : 3.8.2
- 좀 더 명확하게 하고 싶다면 requirements.txt 파일을 작성할 때, version을 아예 명시하는 것도 좋습니다.
pandas==2.1.2
matplotlib==3.8.2
...
- 주요 라이브러리들은 1년에도 매우 자주 version 업그레이드가 되며, 따라서 실행을 할 때, 간혹 되지 않을 때가 있습니다.
- 또한 Python에서 프로젝트를 하는 것은 가상환경을 설치를 기본으로 하기 때문에 이 부분도 같이 진행을 해주시는 것을 추천합니다.
Github README.md
파일에서 대략적으로 아래와 같이 서술하는 것을 추천합니다.
기술내용 3 : 핵심 기능 (features) 소개 및 역할
- 데모 페이지를 보여주는 것이 최선은 아닙니다.
- 실제로 많은 면접관들은 데모 페이지를 일일이 자세하게 확인하지 못할수도 있습니다.
- 필자도 면접관이 되어서 면접을 진행한적이 있지만, PDF 자료나 데모페이지도 보기에 참신하거나 이미지로 봤을 때 예쁘지 않으면 자세히 안 보는 경우가 많았습니다.
- 실제 면접을 하면서 데모페이지를 하나씩 살펴보면서 질문을 했던 경우가 훨씬 많았던 기억이 있습니다.
- 따라서 데모 페이지를 보여주는 것이 능사가 아니라, 해당 프로젝트의 메인 기능을 추가 설명하는 것이 훨씬 효율적입니다.
- 프로그래밍 언어를 사용하여 분석/대시보드/개발 프로젝트 포트폴리오를 수행한다면 그것은 결국
function
으로 귀결됩니다.- 일반적으로 개발 프로젝트는 클래스로 시작해서 클래스로 끝나는 것이지만,
Python
은function
으로 시작해서funciton
으로 마무리할 수 있다. 그만큼 언어가 쉽다는 뜻의 반증일수도 있습니다. - Streamlit 라이브러리는 애초에 개발자를 위한 Framework가 아니라 언어를 잘 다루지 못한다(?)는데이터 분석가를 위해 만든 라이브러리이기 때문에 굳이 클래스로 구현할 필요는 없습니다.
- 일반적으로 개발 프로젝트는 클래스로 시작해서 클래스로 끝나는 것이지만,
- 이 링크에서 https://indrajeetpatil.github.io/ggstatsplot/ 다시 확인해봅니다.
- Summary of Available Plots : 이 라이브러리에 존재하는 주요 함수들을 소개하고 그것에 대해 간단하게 서술을 하고 있습니다.
- 하나의 예를 통해서 구체적으로 살펴봅니다.
- 링크 : https://indrajeetpatil.github.io/ggstatsplot/#ggbetweenstats
- 구현된 함수에 대해 간단하게 설명하고 사용 예시를 구현하고 있습니다. 그리고 구현된 함수를 활용하여 예시를 이미지로 보여주고 있습니다.
- 물론 이 메서드는 시각화 메서드이기 때문에 이미지로 표현이 되지만, 핵심은 사용된 메서드가 무엇을 의미하는지 기술하고 있다는 부분입니다.
- 실제 프로젝트를 하다보면 생성될 함수는 많을 수 밖에 없습니다. 그 중에서 타 프로젝트와 차별점이 있고, 각 팀에서 여러가지 아이디어 끝에 구현된 함수, 그리고 재현 가능성이 있는 함수를 소개하며 구체적으로 표현하는 것이 좋습니다.
기술내용 4 : 발표자료 PDF로 업로드
- 국비교육을 수강하면 일반적으로 과정의 마지막으로 나오는 것이 발표자료 PDF입니다.
- 이 PDF 자료를 캡쳐해서 README.md 파일에 붙여넣기 하는 분들도 있었다. 이것이 꼭 나쁘다고 말할 수는 없지만, 좋은 것은 아닙니다.
- github README.md 파일은 전체 프로젝트를 설명하는 공간이기 때문에 PDF자료가 있는 곳으로 아웃링크 하는 것을 추천합니다.
[](portfoilo.pdf)
기술내용 5 : Release Notes
- Github의 Release Note는 소프트웨어 프로젝트의 특정 버전에 대한 정보를 제공하는 문서입니다.
- 사용자와 개발자에게 소프트웨어 변경 사항을 알리고 이해하기 쉽도록 도와줍니다.
- 주로 버그 수정, 개선 사항, 새로운 기능 등의 세부 정보를 포함합니다.
- 사용자에게 업데이트 필요성을 전달하고 프로젝트 진행 상황을 파악하는 데 중요합니다.
- Github에서 Release Notes를 생성하는 것도 있습니다.
- 참조 : https://docs.github.com/ko/repositories/releasing-projects-on-github/managing-releases-in-a-repository
- 예시 : https://github.com/IndrajeetPatil/ggstatsplot/
기술내용 6 : 저작권
- 국비교육을 하던, 공모전을 나가던, 프로젝트 결과물은 모두 저작권을 가지고 있습니다. 그런데, 이를 명시해주다 것이 본인이 만든 결과물을 법적으로 지킬 수 있습니다.
- Github에서는 저작권을 명시할 수 있도록 기능을 제공하고 있다. 그러나 각 저작권이 어떤 의미가 있는지는 라이선스 비교표를 통해 확인하도록 합니다.
- 참조 : 라이선스 비교표
- 저작권 관련 주요 설명 자료
정리
- Github README.md 파일을 의미있게 활용합니다.
- 필수적으로 기술해야 할 내용들(기술내용 1-6) 잘 정리합니다.
- 발표자료 및 그외 자료들은 README.md에서 아웃링크로 처리합니다.
강의 소개
- 필자의 강의를 소개합니다.