시니어 개발자로 성장하기 위한 6가지 핵심 역량
[구현기술]
- 구현 기술
- 학습해야 할 구현기술을 정하는 기준
- 구현 기술을 적용하고, 익히는 방법
- 구현 기술을 적용할 때 고려해야 하는 내용과 주의점
- 품질, 코드 이해
- 소프트웨어 품질 : '소프트웨어 가치를 안정적으로 유지'하기 위한 방법
- '코드 품질'과 '개발 시간'의 관계, 비용적 측면
- 코드 이해
- 코드를 분석하는 도구
- '코드를 이해하는 역량'을 통해 효율적으로 개발하고 유지보수하기
- 이해하기 좋은 코드를 작성하는 기법
- 응집도, 결합도
- 리팩터링, 테스트
- 기능은 그대로 유지하면서 코드 품질을 높이는 방법(리팩터링)
- 이해하기 쉽고 수월하게 변경할 수 있는 코드로 바꾸기
- 테스트 코드가 중요한 이유와 테스트의 장점
- 테스트 주도 개발
[설계 역량 : 서비스 경쟁력은 시장 변화에 대응이 쉬운 구조를 가지고 있는가에서 나온다]
- 아키텍처, 패턴
- 능력있는 시니어 개발자가 되기 위한 역량 : 아키텍처
[프로젝트 관리 역량]
- 요구 분석, 업무 관리, 공유, 리드&팔로우
- 업무 관리 역량
- 업무 나누기, 위험 관리, 요구사항 이해 및 변경 대응, 일정 관리
- 좋은 결과물을 만들기 위한 점진적, 반복적 개발 방법
- 업무 효율을 높이기 위한 팁
- 글쓰기와 발표 역량
- 협업을 위한 리더와 팔로워의 역할
- 리더
- 문제 해결 리더십
- 사람이 아닌 프로세스, 시스템 변화시키기
- 기술력 상실의 두려움 없애기
- 대신하지 않기
- 자율성
- 도움 요청하기
- 규모의 비경제 이해하기
- 팔로워
- 팔로워십과 영향력
- 나쁜 팔로워 되지 않기
- 나쁜 리더와의 관계
- 이끌거나 따르거나 비켜서라
- 겸손, 존중, 신뢰
1장 : 개념 이해
개발이란
좁은 개념의 개발 : 구현 기술을 사용해서 코드를 작성하는 것
- 경력을 쌓거나 관심있는 기술을 사용하는 것
- 어떤 기술을 사용하기 위해, 개인의 이력 관리를 위해 시작한 프로젝트는 겉으로는 그럴듯해보여도 실제로 별다른 결과 없이 사라지기도 함.
- 새로운 기술을 사용했지만 좋은 결과로 이어지지 않고 단지 새로운 기술을 써봤다는데 그침
- 오히려 새로운 기술을 적용해서 유지보수를 어렵게 만들기도 함.
넓은 개념의 개발 : 코드 이상으로 개발에 포함되는 영역들.
고객의 요구를 파악
하고 충족하는 기능을 만드는 것.
- 회사와 나에게
돈을 벌어주는 기능을 만드는 것
- 내가 만든 결과물은 '회사의 수익'에 영향을 주고 '투자'와 연결이 된다.
- 이 결과는 서비스와 회사의 지속가능성을 높인다.
- 회사 규모가 작을수록 개발 결과물이 회사가 생존하는데 큰 영향을 준다.
성장이란
- 코드를 작성하고 새로운 기술을 써서 개발 능력을 향상시키는 것
- 현재 사용하는 기술에 멈춰있지 않고 새로운 도구를 배워 트렌드를 배우는 것
- 내가 맡은 프로젝트를 성공적으로 마무리하여 고객의 요구를 충족시키고, 지속가능하게 서비스하게 하는 것.
- 프로젝트 관리, 설계(아키텍처), 위험 관리
- from. 소프트웨어 프로젝트 생존전략, 스티브 맥코넬
설계 역량을 향상시키려면
- 다른 사람이 잘 만들어 놓은 설계를 실무에서 경험해보기
- 다른 상황에 적합한 설계 구조를 파악하기
- 상황에 적합하다고 생각되는 여러 설계 방안을 추리고 가장 알맞은 설계 구조를 선택하기
- 여러 설계 기법을 꾸준히 학습하고 익히기
업무 관리 역량이란
2장 : 구현 기술과 학습
3장 : 소프트웨어 가치와 비용
4장 : 코드 이해
5장 : 응집도와 결합도
6장 : 리팩터링
7장 : 테스트
8장 : 아키텍처, 패턴
9장 : 업무관리
10장 : 정리하고 공유하기
11장 : 리더와 팔로워