김승준 강사님
Github 의 개념과 특징, Codespace에 대해 소개합니다.
Git, Github, Codespace, Copilot 소개
IDE : Integrated Development Environment
코드를 작성, 편집하고 실행 및 디버깅하는 환경이 통합
Ms Visual Studio Code
Coputational Notebook
사람이 보고 이해하기 쉽도록 프로그램 작성
Jupyter Notebook, Matlab Notebook
데이터를 탐색하면서 바로 결과를 확인할 수 잇어서 데이터 분석시 많이 활용
분산형 소프트웨어 형상 관리 도구
Distributed Software Configuration Management
respository를 서비스로 제공하기 시작 (2007년)
수 많은 오픈소스 프로젝트들이 Github에 모임
단순 코드 호스팅 플랫폼이 아닌 개발 플랫폼으로 확장 중
Codepspaces 서비스를 이용하여 Python 개발이 가능하며 또한 Web 지원으로 언제 어디서나 개발 가능
버전 관리 소프트웨어 대표적 기능들
1. 버전 관리
2. 분기&병합
3. 커밋
4. 충동 해결
5. 히스토리 & 로그
Data Center regions
클라우드 서비스 업체에서는 장애를 대비하기 위해서, 전 세계에 데이터 센터를 분산 운영 중
GitHub Copilot 클라우드 기반 AI 코딩 지원 도구
1. 주석문 추천
2. 코드 자동완성/추천
3. 코드 분석/읽기
4. 다양한 언어 지원
5. Regular Expression, SQL 등 지원
6. 한글 주석문도 지원
Cross Platform 지원하는 확장성 높은 코드 편집기
Dependency hell : 특정 버전의 다른 소프트웨어 패키지에 의존하는 소프트웨어 패키지를 설치한 일부 사용자들이 겪는 좌절감을 나타냄
오픈 소스, 크로스 플랫폼 패키지 및 환경 관리 시스템
CONDA ⊂ MINI CONDA ⊂ ANACONDA
Pyenv : 다양한 버전의 Python을 설치하고 관리할 수 있게 해주는 도구
Engineering Ladders : 기술, 시스템, 사람, 프로세스, 영향력이라는 5가지 관점으로 소프트웨어 개발 경력에서 위치별 가져야 할 역량을 정의
개발 관련 핵심문구
Don't reinvent the wheel
이미 존재하는 해결책이나 도구를 사용하라는 뜻입니다. 시간을 낭비하지 말고 기존에 잘 작동하는 것을 재사용하라는 의미예요.
Divide and conquer
큰 문제를 작은 문제들로 나누어 각각 해결하는 방식입니다. 복잡한 문제를 해결할 때 유용하죠.
Keep it simple, stupid (KISS)
복잡하게 만들지 말고 최대한 단순하게 설계하라는 뜻입니다. 단순한 것이 더 효율적일 때가 많습니다.
You aren't gonna need it (YAGNI)
미래에 필요할 것 같은 기능을 미리 만들지 말라는 뜻입니다. 지금 필요한 것에만 집중하라는 의미죠.
Fail fast, fail often
빨리 실패하고, 자주 실패해서 문제를 빨리 발견하고 수정하라는 뜻입니다. 시도하고 피드백을 빨리 받는 것이 중요해요.
There is no silver bullet
모든 문제를 해결해주는 '만능 해결책'은 없다는 뜻입니다. 각 상황에 맞는 해결 방법을 찾아야 한다는 의미죠.
Write once, run anywhere (WORA)
한 번 코드를 작성하면 여러 환경에서 실행할 수 있도록 하라는 뜻입니다. 예를 들어, 자바가 이 원칙을 따릅니다.
Single responsibility principle (SRP)
하나의 클래스나 함수는 한 가지 책임만 가져야 한다는 원칙입니다. 여러 책임을 맡으면 복잡해지고 유지보수가 어려워져요.
Test-driven development (TDD)
테스트를 먼저 작성하고 그 테스트를 통과하는 코드를 개발하는 방식입니다. 오류를 줄이고 코드 품질을 높이는 데 도움됩니다.
Don't repeat yourself (DRY)
중복되는 코드를 피하고, 재사용 가능한 코드를 작성하라는 뜻입니다. 같은 코드를 여러 번 쓰면 유지보수가 어렵습니다.
Loose coupling and high cohesion
서로 다른 모듈이 너무 의존적이지 않게(Loose coupling) 만들고, 모듈 내부는 강하게 연관되게(High cohesion) 하라는 뜻입니다. 코드의 유연성과 가독성을 높여줍니다.
Separation of concerns (SoC)
각 모듈이나 함수가 서로 다른 책임을 가져야 한다는 원칙입니다. 예를 들어, UI와 데이터 처리는 분리하는 것이 좋아요.
Code is read more than it is written
코드는 작성된 후 더 많이 읽히기 때문에, 읽기 쉬운 코드를 작성하는 것이 중요하다는 뜻입니다. 유지보수가 쉬워집니다.
The simplest solution is usually the best
가장 단순한 해결책이 종종 최고의 해결책이라는 뜻입니다. 복잡하게 만들 필요가 없다는 의미죠.
Convention over configuration
설정을 많이 하지 말고, 정해진 규칙(관습)을 따르라는 뜻입니다. 규칙을 따르는 것이 설정보다 효율적일 때가 많습니다.
Github 에 대해서 많이 들어봤지만 실제로 어떤 개념인지는 알지 못 했다. 들어본 것이 중요하지 않고, 실제로 사용해봤는지, 능숙하게 활용할 수 있는지가 중요합니다.
개발자 마인드세트에 대해서도 교육을 받았습니다. 개발자의 일 잘하는 법과 비즈니스에서 일 잘하는 법은 통하는 내용이 많았습니다. 어느 영역이든 정수는 통하는 법입니다.
내 분야만 아니라
다른 분들의 분야까지 관심 갖는 것이
나중에 다양한 기회를 잡을 수 있습니다.
코딩 뿐만 아니라
두루두루 잘 아는 것이 좋지 않을까 싶습니다.
Github 에서 Codespace에 들어가 Copilot의 도움을 받아 온라인에서 쉽고 능숙하게 코딩 가능합니다.