함수 작성 시, 가급적 10줄은 넘기지 마세요 | 아마존 출신 개발자
F-Lab : 상위 1% 개발자들의 멘토링
안녕하세요 여러분!
오늘도 멘토님께 인터뷰한 내용을 가져왔습니다 :-)
성장의 의지가 있는 주니어 개발자분들을 위해 아마존 출신 멘토님을 모시고 이야기를 나눴습니다.
🚀 멘토님께 질문했습니다!
- 이미 좋은 회사를 다니고 있어도 '앞으로 어떤 개발자가 되고 싶다!' 하는 다짐이 있을지 궁금합니다!
- 빠르게 성장할 수 있는 방법이 있을까요?
- 코드를 작성할 때 멘토님이 개인적으로 중요하게 생각하는 원칙이나 고수하는 철학이 있을까요?
- 다양한 기술 스택이 존재하는데, 한 가지를 깊이 파는 것이 좋을까요, 넓게 배우는 것이 좋을까요?
Q. 이미 좋은 회사를 다니고 있어도 '앞으로 어떤 개발자가 되고 싶다!' 하는 다짐이 있을지 궁금합니다!
좋은 코드를 잘 짜는 것은 당연하게도 중요한 일이지만, 조직에서 시니어에게 기대하는 것은 그 이상이라고 생각합니다.
다른 사람에게 영향을 미치는 역할을 기대하는 거죠. 단순히 좋은 코드를 더 잘 짜도록 하기 위해서 높은 연봉을 준다고 생각하지는 않아요.
결국 성장할 수록, 혼자서 뭔가를 잘하는 것보다는 다른 사람들을 위한 일을 잘 하는 것이 점점 중요해지는 것 같아요. 생산성 관점에서도 그게 맞고요.
그래서 저는 다른 사람이 자신의 작업에 잘 집중할 수 있도록 복잡한 것을 단순화하고, 어려운 개념을 쉽게 구조화해서 접근 장벽을 낮추며, 타인에게 좋은 영향력을 끼칠 수 있는 전문가가 되는 것을 목표로 하고 있습니다.
Q. 빠르게 성장할 수 있는 방법이 있을까요?
성장할 수록 중요한 것은 지식 보다는 경험이라고 생각합니다. 경험에 관해서 Amazon의 현 CEO인 Andy Jessi가 남긴 유명한 말이 있는데요, "경험을 압축하는 알고리즘은 없다"라는 거에요.
경험을 건너뛰거나 지식처럼 빠르게 쌓아나갈 수는 없다는 거죠.
결국 빠르게 성장하려면 다양한 경험과 시도를 많이 해 볼 수 밖에 없어요.
프로젝트에서의 경험이 아니라도 혼자서 다양한 PoC를 해보거나, 혹은 경험을 쌓을 수 있는 기회가 있다면 가리지 말고 해 보시라는 말씀을 드리고 싶습니다.
Q. 코드를 작성할 때 개인적으로 중요하게 생각하는 원칙이나 고수하는 철학이 있을까요?
개인적으로 가지는 원칙은, 코드가 복잡해서는 안되며, 최대한 이해하기 쉽게 작성해야 한다는 겁니다. 간단 명료해야 해요.
가끔 코드를 보면 20~30줄을 넘어 100줄 가까이 길게 작성한 함수를 종종 보는데요, 사람의 뇌는 대략 8줄 정도의 코드 라인을 기억한다고 해요.
한 마디로 10줄이 넘어가면 코드의 흐름을 따라가기 어려워진다는 거죠. 그래서 함수의 경우 단일 책임 원칙을 강조합니다.
함수 작성 시, 가급적 10줄을 넘지 않도록 권장하고 있어요. 10줄을 넘어가면 2가지 이상의 책임을 맡고 있을 가능성이 크다고 보고, 어떤 부분을 떼어내고 분리해야 할까를 고민해서 리팩토링하도록 가이드 드리고 있어요. 저도 물론 그렇게 하고 있구요.
Q. 다양한 기술 스택이 존재하는데, 한 가지를 깊이 파는 것이 좋을까요, 넓게 배우는 것이 좋을까요?
이 부분에서는 이미 많은 분들이 답을 알고 있으리라고 생각하는데요, 제가 생각하는 정답은 "둘 다"입니다.
정확히는 1~2가지 정도의 전문분야에 대해서는 깊이 팔 것을, 나머지 관련 분야에 대해서는 넓게 팔 것을 주문합니다.
처음 시작하는 분들은 특정 주제를 깊이 파는 SME(Subject Matter Expert)나 스페셜리스트가 되고 싶어하시는 경향이 많은데, 현대 IT는 기술이 워낙 다양하고, 한 가지 기술을 다루더라도 이를 위해 알아야 하는 주변 기술들이 많다보니 넓게 아는 것 또한 무척 중요합니다.
성장 방향성이라면 우선 제너럴리스트가 되기를, 그 이후에 전문적으로 팔 기술을 선택해서 전문가가 되는 방향으로 성장하는 것을 추천합니다.
깊이 있는 인사이트와 현실적인 조언이 담긴 멘토님들의 인터뷰와 커리어 성장 콘텐츠가 데브클럽에서 정기적으로 업데이트되고 있습니다.
실력 있는 현직 개발자 멘토들과 직접 소통하고, 생생한 실무 노하우와 커리어 성장 전략을 배워보세요!
이 컨텐츠는 F-Lab의 고유 자산으로 상업적인 목적의 복사 및 배포를 금합니다.