좋은 개발자? 그게 뭘까?
나는 매년 OKR을 작성한다.
그리고 또 분기별로 또 나누어 한 해의 목표를 달성하기 위해 작은 OKR들을 작성하는데 올해 초 메가테라 코스를 시작하기 전 즈음 연봉을 이 정도 받는 개발자 되기라고 쓰여 있었던 것 같다.
연봉을 나의 가치를 대략적으로 알려주는 수단이라고 한다면 그럼 연봉을 많이 받는 좋은 개발자는 대체 뭘까??? 정말 한참 동안 감도 오지 않다가 그래도 이제 포트폴리오를 마치고 다시 취업시장에 나가야 하는 입장으로써 내가 무엇이 되고 싶은지를 구체적으로 떠올려보는 것이 중요하다는 생각에 한 번 정리한 그 기준을 적어보려고 한다.
1. 내 작성한 모든 코드에 대해 테스트 코드가 모두 있다.
트레이너 분께서는 신입 개발자인 우리가 TDD를 할 줄 알 거라곤 아무도 생각하지 않는다고 하셨다. 그래서 TDD를 할 줄 안다는 말을 조금 더 알기 쉽게 구체화시켜 내가 작성한 모든 코드에 대해 테스트 코드가 있다로 써보았다.
왜 테스트 코드는 중요할까?
테스트 코드를 처음에 익히면 생산성이 낮아지는 것 같은 생각도 들고 작성하는 법도 배워야 하고 여러모로 어려운 점이 많다. 하지만 익숙해지고 나면 나의 코드가 잘 동작하는 것을 증명하고 오류가 나는 경우를 막을 수 있는 것은 테스트 코드밖에 없다고 생각한다. 미숙할 때에는 테스트 코드가 얼마나 이 코드의 동작과 효율성을 검증하는지는 모르지만 일단 해나가면서 애플리케이션의 복잡도가 높아질 수 록 테스트 코드에 의존해 나가며 더 나은 테스트 코드를 작성하고 검증하며 내 애플리케이션의 완전성을 검증해야 한다고 생각한다.
또한 특별히 동작 화면을 볼 수 없는 백엔드 같은 경우에는 테스트 코드 없이 어떻게 이 코드가 동작하지는지를 검증할 방법도 없고 코드가 변경되는 순간 다시 자체적인 검증을 거쳐야 한다.
이걸 협업하면서 하는데 테스트 코드가 없는데 문제가 생긴다면 그땐 윌리를 찾아라 게임 개발자 편을 해야 하는 게 아닐까...
2. 내가 작성한 코드에 대해 근거와 논리가 있다.
나는 위를 가치 커버리지라는 용어로 만들어 사용했는데 개발은 (아이러니하게도..?) 수학적 측면보다는 내가 이러이러한 조건과 상황에서 왜 이러한 방식의 코드와 구성을 택했는지 이유를 가져야 하는 경우가 많았다. 1 + 1 = 2이다처럼 참과 거짓의 진리의 증명이 아니었다. 따라서 내가 작성한 코드가 왜 이래야만 하는지 한정된 자원 속에서 다른 방식이 아닌 이 방식을 택한 논리를 가져야 좋은 개발자라고 생각한다.
그래야만 수많은 방법 중에서도 내가 다루는 도메인 아래에서 나만의 논리와 주관이 생긴 채로 방향을 나아갈 수 있는 것 같다.
예를 들면
무조건 설탕은 나쁘다 는 논리보다는
나는 당뇨가 있는데 등산을 자주 한다. 등산을 할 때면 많은 에너지를 사용하는데 이때 많은 칼로리 소모로 혈당이 급히 떨어지는 것을 막기 위해 초콜릿을 섭취한다. 따라서 여기서 나느 설탕은 좋은 것이다.라는 방식으로 논리를 전개하는 게 맞다고 생각한다.
3. 작성한 코드에 대해 다른 옵션을 알고 있다.
사실 초보 개발자라면 누구나 구현에 급급하다는 것을 알고 있다. 일단 작동부터 되어야 하므로 다른 것들은 뒷전이기 일 수있은데 좋은 개발자라면 무릇 내가 선택한 방법뿐 아니라 다른 방식의 구현과 왜 그러한 구현 방식을 택하는지를 잘 알아야 한다고 생각한다. 그래야만 위 2번과 마찬가지로 내가 선택한 구현 방식을 다른 옵션과 비교하여 논리를 가질 수 있고 이러한 배경지식과 논리는 여러 상황에서 코드 사용을 유연하게 해주는 능력을 길러준다고 생각한다.
오늘은 내가 생각하는 좋은 개발자라는 것에 대해 써보았는데 이렇게 한참 고민하고 써보고 나니 어떤 방식으로 학습을 해야 할지가 명확해져서 좋았다. 이번 연말 회고가 또 기대되는 날이다.
'개발 관련 학습 및 문제해결' 카테고리의 다른 글
끝까지 하나하나 전부 지키면서 해내기[20221128-TIL] (0) | 2022.11.28 |
---|---|
꼼꼼한 문서 업데이트는 개발시간을 줄여준다[메가테라 22주차 주간회고,프로젝트 6주차 주간회고] (0) | 2022.11.28 |
PATCH 로 객체 수정 후에도 프론트에서 즉시 반영이 안되는 현상/동기 비동기처리 [20221126-TIL] (0) | 2022.11.26 |
useEffect 무한 렌더링 문제, forceUpdate 후에도 계속 이전 텍스트가 화면에 남는 문제 [20221125 -TIL] (0) | 2022.11.25 |
@Mock과 @MockBean의 차이는 뭘까? (0) | 2022.11.24 |
댓글