3일차 강의 : Github, Codespace & Copilot, 개발자 마인드세트

Luis_J·2024년 9월 26일
0

MS_AI_School 5기

목록 보기
4/48
post-thumbnail
post-custom-banner

Summary

  1. Github는 기존에는 형상 관리 도구, 현재는 개발 플랫폼으로 확장 중입니다.
  2. Codespace를 통해 온라인 개발이 가능합니다.
  3. Copilot을 활용해 개발 역량 강화할 수 있습니다.

Introduction

김승준 강사님
Github 의 개념과 특징, Codespace에 대해 소개합니다.

Code, Conept & Explanation

데이터 분석 및 인공지능 개발 환경

Git, Github, Codespace, Copilot 소개

프로그래밍 개발 환경

IDE : Integrated Development Environment
코드를 작성, 편집하고 실행 및 디버깅하는 환경이 통합
Ms Visual Studio Code

Coputational Notebook
사람이 보고 이해하기 쉽도록 프로그램 작성
Jupyter Notebook, Matlab Notebook
데이터를 탐색하면서 바로 결과를 확인할 수 잇어서 데이터 분석시 많이 활용

Github

분산형 소프트웨어 형상 관리 도구
Distributed Software Configuration Management

respository를 서비스로 제공하기 시작 (2007년)
수 많은 오픈소스 프로젝트들이 Github에 모임

단순 코드 호스팅 플랫폼이 아닌 개발 플랫폼으로 확장 중
Codepspaces 서비스를 이용하여 Python 개발이 가능하며 또한 Web 지원으로 언제 어디서나 개발 가능

버전 관리 소프트웨어 대표적 기능들
1. 버전 관리
2. 분기&병합
3. 커밋
4. 충동 해결
5. 히스토리 & 로그

Git 기본 작업 흐름

  1. Git 환경 구성
  2. 파일 생성
  3. Git 추적 목록에 등록
  4. 로컬 저장소에 등록
  5. 원격 저장소에 등록

Git 저장 영역 구분

  1. Local Working Directory
  2. Staging Area
  3. Local Repository
  4. Remote Repository

Data Center regions
클라우드 서비스 업체에서는 장애를 대비하기 위해서, 전 세계에 데이터 센터를 분산 운영 중

Copilot

GitHub Copilot 클라우드 기반 AI 코딩 지원 도구
1. 주석문 추천
2. 코드 자동완성/추천
3. 코드 분석/읽기
4. 다양한 언어 지원
5. Regular Expression, SQL 등 지원
6. 한글 주석문도 지원

Visual Studio Code

Cross Platform 지원하는 확장성 높은 코드 편집기

Python 개발 환경 구성

Dependency hell : 특정 버전의 다른 소프트웨어 패키지에 의존하는 소프트웨어 패키지를 설치한 일부 사용자들이 겪는 좌절감을 나타냄

  1. Package management : 프로젝트 내에서 다른 패키지들 사용시, 설치하고 관리 및 업그레이드
  2. Python version management : 서로 다른 Python 버전을 설치하고 전환
  3. Environment management : 서로 다른 프로젝트에서 동일한 패키지의 다른 버전을 필요로 할 수 있기 때문에, 의존성 충돌을 피하기 위해 가상 환경을 생성하고 관리
  4. Package building : 다른 개발자와 공유하기 위해 패키지 빌드
  5. Package Publishing : PyPl 이나 다른 인덱스에 게시

Conda

오픈 소스, 크로스 플랫폼 패키지 및 환경 관리 시스템
CONDA ⊂ MINI CONDA ⊂ ANACONDA

Pyenv : 다양한 버전의 Python을 설치하고 관리할 수 있게 해주는 도구

개발자 마인드세트

Engineering Ladders : 기술, 시스템, 사람, 프로세스, 영향력이라는 5가지 관점으로 소프트웨어 개발 경력에서 위치별 가져야 할 역량을 정의

  1. 개발자 : 프로그래머 또는 소프트웨어 엔지니어
  2. 기술 리드 : 개발 리드, 시스템의 소유자, 실무 개발, 아키텍처 지식 및 운영 지원 간 독특한 균형을 요구
  3. 기술 프로그램 관리자 : 여러 팀에 걸친 이니셔티브 조정하고 완료를 추진하는 역할
  4. 엔지니어링 매니저 : 개발 매니저로도 알려진 역할, 팀의 일관된 전달, 경력 성장 및 행복 수준에 대한 책임

개발 관련 핵심문구

  1. Don't reinvent the wheel
    이미 존재하는 해결책이나 도구를 사용하라는 뜻입니다. 시간을 낭비하지 말고 기존에 잘 작동하는 것을 재사용하라는 의미예요.

  2. Divide and conquer
    큰 문제를 작은 문제들로 나누어 각각 해결하는 방식입니다. 복잡한 문제를 해결할 때 유용하죠.

  3. Keep it simple, stupid (KISS)
    복잡하게 만들지 말고 최대한 단순하게 설계하라는 뜻입니다. 단순한 것이 더 효율적일 때가 많습니다.

  4. You aren't gonna need it (YAGNI)
    미래에 필요할 것 같은 기능을 미리 만들지 말라는 뜻입니다. 지금 필요한 것에만 집중하라는 의미죠.

  5. Fail fast, fail often
    빨리 실패하고, 자주 실패해서 문제를 빨리 발견하고 수정하라는 뜻입니다. 시도하고 피드백을 빨리 받는 것이 중요해요.

  6. There is no silver bullet
    모든 문제를 해결해주는 '만능 해결책'은 없다는 뜻입니다. 각 상황에 맞는 해결 방법을 찾아야 한다는 의미죠.

  7. Write once, run anywhere (WORA)
    한 번 코드를 작성하면 여러 환경에서 실행할 수 있도록 하라는 뜻입니다. 예를 들어, 자바가 이 원칙을 따릅니다.

  8. Single responsibility principle (SRP)
    하나의 클래스나 함수는 한 가지 책임만 가져야 한다는 원칙입니다. 여러 책임을 맡으면 복잡해지고 유지보수가 어려워져요.

  9. Test-driven development (TDD)
    테스트를 먼저 작성하고 그 테스트를 통과하는 코드를 개발하는 방식입니다. 오류를 줄이고 코드 품질을 높이는 데 도움됩니다.

  10. Don't repeat yourself (DRY)
    중복되는 코드를 피하고, 재사용 가능한 코드를 작성하라는 뜻입니다. 같은 코드를 여러 번 쓰면 유지보수가 어렵습니다.

  11. Loose coupling and high cohesion
    서로 다른 모듈이 너무 의존적이지 않게(Loose coupling) 만들고, 모듈 내부는 강하게 연관되게(High cohesion) 하라는 뜻입니다. 코드의 유연성과 가독성을 높여줍니다.

  12. Separation of concerns (SoC)
    각 모듈이나 함수가 서로 다른 책임을 가져야 한다는 원칙입니다. 예를 들어, UI와 데이터 처리는 분리하는 것이 좋아요.

  13. Code is read more than it is written
    코드는 작성된 후 더 많이 읽히기 때문에, 읽기 쉬운 코드를 작성하는 것이 중요하다는 뜻입니다. 유지보수가 쉬워집니다.

  14. The simplest solution is usually the best
    가장 단순한 해결책이 종종 최고의 해결책이라는 뜻입니다. 복잡하게 만들 필요가 없다는 의미죠.

  15. Convention over configuration
    설정을 많이 하지 말고, 정해진 규칙(관습)을 따르라는 뜻입니다. 규칙을 따르는 것이 설정보다 효율적일 때가 많습니다.

Challenges & Solutions

Results

What I Learned & Insights

Github 에 대해서 많이 들어봤지만 실제로 어떤 개념인지는 알지 못 했다. 들어본 것이 중요하지 않고, 실제로 사용해봤는지, 능숙하게 활용할 수 있는지가 중요합니다.

개발자 마인드세트에 대해서도 교육을 받았습니다. 개발자의 일 잘하는 법과 비즈니스에서 일 잘하는 법은 통하는 내용이 많았습니다. 어느 영역이든 정수는 통하는 법입니다.

내 분야만 아니라
다른 분들의 분야까지 관심 갖는 것이
나중에 다양한 기회를 잡을 수 있습니다.

코딩 뿐만 아니라
두루두루 잘 아는 것이 좋지 않을까 싶습니다.

Conlusion

Github 에서 Codespace에 들어가 Copilot의 도움을 받아 온라인에서 쉽고 능숙하게 코딩 가능합니다.

profile
New life & History
post-custom-banner

0개의 댓글