본문 바로가기
Tip

[ByteByteGo] 주니어 개발자에서 시니어 개발자로 성장하는 11단계

by 너드나무 2024. 6. 16.
728x90

서론

ByteByteGo 뉴스레터 중 11 steps to go from Junior to Senior Developer 아티클을 확인해보고 정리해본다.
개인적인 성장 11단계를 다시 정의해본다.

ByteByteGO, 11 steps to go from Junior to Senior Developer


1. 프로그래밍 언어

  • 한두 가지 프로그래밍 언어를 선택하여 마스터하세요.
  • Java, Python, JavaScript, C#, Go 등 다양한 옵션 중에서 자신에게 맞는 언어를 깊이 있게 학습하는 것이 중요합니다.
  • 개인적으로는 C언어로 시작하여 이중 포인터의 개념을 습득하면서 메모리에 대한 이해까지 선행하는 것이 좋습니다.

2. 협업 도구 사용

  • 소프트웨어 개발은 팀워크가 중요한 사회적 활동입니다.
  • Jira, Confluence, Slack, MS Teams, Zoom 등 협업 도구를 활용하여 팀과 효과적으로 소통하고 협력하는 방법을 배우세요.
  • 주로 처음 시작하는 협업 도구는 Git이며, Webhook 등을 사용하여 Slack, Jira, Zoom 등 서드 파티를 활용하기 시작합니다.

3. API 개발

  • REST, GraphQL, gRPC 등 API 개발 접근 방식을 익히세요.
  • API는 다양한 시스템 간의 데이터 교환을 가능하게 하며, 이를 이해하는 것은 현대 웹 개발의 핵심입니다.
  • 단순한 프로그램 개발은 Local 수준에서 가능하나, 다양한 공공데이터 연동 및 확장성을 고려하면서 배우기 시작합니다.

4. 웹 서버 및 호스팅

  • 웹 서버에 대해 이해하고 AWS, Azure, GCP와 같은 클라우드 플랫폼을 사용하는 방법을 배우세요.
  • 이는 애플리케이션을 배포하고 유지 관리하는 데 필수적인 기술입니다.
  • 초기 무료로 연습할 수 있는 추천 플랫폼은 AWS이며, Azure, GCP 뿐만 아니라 KT Cloud, NCP 등 국내 클라우드 플랫폼 및 Nginx와 관련된 개념을 배우는 것도 중요합니다.

 

5. 인증 및 테스트

  • JWT, OAuth2 등의 인증 기술을 통해 애플리케이션을 안전하게 보호하는 방법을 배우세요.
  • 또한, TDD(테스트 주도 개발), E2E(엔드 투 엔드) 테스트, 성능 테스트와 같은 다양한 테스트 기법을 마스터하세요.
  • 인증 기술에는 크게 토큰 방식, 세션 방식으로 구분되며, 테스트는 Unit 단위로 복합성을 최소화하는 것이 중요합니다.

 

6. 데이터베이스

  • Postgres, MySQL, SQLite와 같은 관계형 데이터베이스와 MongoDB, Cassandra, Redis와 같은 비관계형 데이터베이스를 다룰 수 있는 능력을 기르세요.
  • 데이터베이스는 애플리케이션의 핵심 데이터를 저장하고 관리하는 데 필수적입니다.
  • RDBS는 모든 시스템에 주로 사용되며, 빅데이터 및 문서 형태로 관리할 수 있는 NoSQL를 후행으로 학습하는 것도 하나의 전략일 수 있습니다.

7. 자료구조 및 알고리즘

  • Big O 표기법, 정렬, 트리, 그래프와 같은 기본적인 자료 구조와 알고리즘을 마스터하세요.
  • 이는 문제 해결 능력과 코딩 인터뷰 준비에 매우 중요합니다.
  • 해당 내용을 학습하기 좋은 곳은 백준이나 프로그래머스 등 코딩 연습 플랫폼을 활용하는 것이 유용합니다.

8. CI/CD

  • GitHub Actions, Jenkins, CircleCI 등의 도구를 사용하여 지속적인 통합(CI)과 지속적인 배포(CD)에 대해 배우세요.
  • 이는 개발 프로세스를 자동화하고 효율성을 높이는 데 중요합니다.
  • 대부분의 회사에서는 CI/CD 시스템이 없을 수도 있습니다.
  • 하지만, CI와 CD에 대한 개념을 가지고 있다면, 시스템을 안전하게 확장하는 방법에 대해 개념을 갖출 수 있습니다.

9. 시스템 설계

  • 네트워킹, 캐싱, CDN, 마이크로서비스, 메시징, 로드 밸런싱, 복제, 분산 시스템 등 시스템 설계 개념을 배우세요.
  • 이는 복잡한 시스템을 설계하고 확장하는 능력을 키우는 데 필수적입니다.
  • 특히, 네트워크에 대한 개념은 타 기술에 대한 기초 학문이라고 할 수 있습니다.

10. 디자인 패턴

  • 의존성 주입, 팩토리, 프록시, 옵저버, 퍼사드와 같은 디자인 패턴의 적용을 마스터하세요.
  • 디자인 패턴은 코드의 재사용성과 유지 보수성을 높이는 데 중요한 역할을 합니다.
  • 초기에는 기능 개발에 집중하면서 레거시 코드를 유지보수하고 확장하는 데에 있어서 업무 유연성을 갖출 수 있습니다.

11. AI 도구

  • GitHub Copilot, ChatGPT, Langchain, Prompt Engineering과 같은 AI 도구를 활용하여 미래의 커리어를 준비하세요.
  • AI 도구는 개발 생산성을 크게 향상시킬 수 있습니다.
  • ChatGPT는 효과적인 도우미이며, SQL이나 PoC 개발에 도움을 크게 줄 수 있으나, 무작정 사용 시 심각한 버그를 초래할 수 있으므로 이중 검토가 필수적입니다.

참고 및 인용 출처

- ByteByteGo Newsletter. (2024). EP116: 11 steps to go from Junior to Senior Developer. ByteByteGo.
728x90
반응형