육각형 개발자

hyHA·2023년 12월 10일
0
post-custom-banner

시니어 개발자로 성장하기 위한 6가지 핵심 역량

[구현기술]

  1. 구현 기술
    • 학습해야 할 구현기술을 정하는 기준
    • 구현 기술을 적용하고, 익히는 방법
    • 구현 기술을 적용할 때 고려해야 하는 내용과 주의점
  2. 품질, 코드 이해
    1. 소프트웨어 품질 : '소프트웨어 가치를 안정적으로 유지'하기 위한 방법
    • '코드 품질'과 '개발 시간'의 관계, 비용적 측면
    1. 코드 이해
    • 코드를 분석하는 도구
      • '코드를 이해하는 역량'을 통해 효율적으로 개발하고 유지보수하기
    • 이해하기 좋은 코드를 작성하는 기법
  3. 응집도, 결합도
    • 변경에 유연한 구조를 만들기 위한 방법
      • 응집도 높이기
      • 결합도 낮추기
  4. 리팩터링, 테스트
    • 기능은 그대로 유지하면서 코드 품질을 높이는 방법(리팩터링)
      • 이해하기 쉽고 수월하게 변경할 수 있는 코드로 바꾸기
    • 테스트 코드가 중요한 이유와 테스트의 장점
      • 개발 생산성과 설계 품질 높이기
    • 테스트 주도 개발

[설계 역량 : 서비스 경쟁력은 시장 변화에 대응이 쉬운 구조를 가지고 있는가에서 나온다]

  1. 아키텍처, 패턴
    • 능력있는 시니어 개발자가 되기 위한 역량 : 아키텍처
      • 아키텍처가 중요한 이유
      • 패턴의 유용함

[프로젝트 관리 역량]

  1. 요구 분석, 업무 관리, 공유, 리드&팔로우
    1. 업무 관리 역량
    • 업무 나누기, 위험 관리, 요구사항 이해 및 변경 대응, 일정 관리
    • 좋은 결과물을 만들기 위한 점진적, 반복적 개발 방법
    • 업무 효율을 높이기 위한 팁
    1. 글쓰기와 발표 역량
    • 모호하지 않고 정확하게 표현하기
    1. 협업을 위한 리더와 팔로워의 역할
    • 리더
      • 문제 해결 리더십
      • 사람이 아닌 프로세스, 시스템 변화시키기
      • 기술력 상실의 두려움 없애기
      • 대신하지 않기
      • 자율성
      • 도움 요청하기
      • 규모의 비경제 이해하기
    • 팔로워
      • 팔로워십과 영향력
      • 나쁜 팔로워 되지 않기
      • 나쁜 리더와의 관계
      • 이끌거나 따르거나 비켜서라
    • 겸손, 존중, 신뢰

1장 : 개념 이해

개발이란

좁은 개념의 개발 : 구현 기술을 사용해서 코드를 작성하는 것

  • 경력을 쌓거나 관심있는 기술을 사용하는 것
  • 어떤 기술을 사용하기 위해, 개인의 이력 관리를 위해 시작한 프로젝트는 겉으로는 그럴듯해보여도 실제로 별다른 결과 없이 사라지기도 함.
  • 새로운 기술을 사용했지만 좋은 결과로 이어지지 않고 단지 새로운 기술을 써봤다는데 그침
  • 오히려 새로운 기술을 적용해서 유지보수를 어렵게 만들기도 함.

넓은 개념의 개발 : 코드 이상으로 개발에 포함되는 영역들.

  • 고객의 요구를 파악하고 충족하는 기능을 만드는 것.
  • 회사와 나에게 돈을 벌어주는 기능을 만드는 것
    • 내가 만든 결과물은 '회사의 수익'에 영향을 주고 '투자'와 연결이 된다.
    • 이 결과는 서비스와 회사의 지속가능성을 높인다.
    • 회사 규모가 작을수록 개발 결과물이 회사가 생존하는데 큰 영향을 준다.

성장이란

  1. 코드를 작성하고 새로운 기술을 써서 개발 능력을 향상시키는 것
  • 현재 사용하는 기술에 멈춰있지 않고 새로운 도구를 배워 트렌드를 배우는 것
  1. 내가 맡은 프로젝트를 성공적으로 마무리하여 고객의 요구를 충족시키고, 지속가능하게 서비스하게 하는 것.
  • 프로젝트 관리, 설계(아키텍처), 위험 관리
  • from. 소프트웨어 프로젝트 생존전략, 스티브 맥코넬

설계 역량을 향상시키려면

  1. 다른 사람이 잘 만들어 놓은 설계를 실무에서 경험해보기
  • 특정 상황에 적합한 설계를 볼 수 있다.
  1. 다른 상황에 적합한 설계 구조를 파악하기
  • 상황에 적합하다고 생각되는 여러 설계 방안을 추리고 가장 알맞은 설계 구조를 선택하기
  • 여러 설계 기법을 꾸준히 학습하고 익히기

업무 관리 역량이란

2장 : 구현 기술과 학습

3장 : 소프트웨어 가치와 비용

4장 : 코드 이해

5장 : 응집도와 결합도

6장 : 리팩터링

7장 : 테스트

8장 : 아키텍처, 패턴

9장 : 업무관리

10장 : 정리하고 공유하기

11장 : 리더와 팔로워

profile
룰루랄라
post-custom-banner

0개의 댓글