_______하는 주니어 개발자는 꼭 제가 데려가고 싶어요 | 카카오, 11번가 출신 멘토님
F-Lab : 상위 1% 개발자들의 멘토링
안녕하세요 여러분!
오늘도 멘토님께 인터뷰한 내용을 가져왔습니다 :-)
성장의 의지가 있는 주니어 개발자분들을 위해 카카오, 11번가 출신 멘토님을 모시고 이야기를 나눴습니다.
🚀 멘토님께 질문했습니다!
- 코드를 작성하실 때, 고수하는 철학이나 원칙이 있으시다면 알고 싶습니다!
- 후배 개발자들을 보면서 '이 친구는 정말 성장할 것 같다'라고 느낀 순간이 있다면? 반대의 경우는 무엇인가요?
- 프로젝트의 품질을 유지하기 위해 가장 중요하게 여기는 것은 무엇인가요?
- 개발자로서 계속 성장하기 위해 실천하고 계신 습관이나 학습 방법이 있으신가요?
Q. 코드를 작성하실 때, 고수하는 철학이나 원칙이 있으시다면 알고 싶습니다!
코드를 작성할때는 절대적인 기본 원칙이 있습니다. 이것은 내가 만든 코드는 내가 보는 것이 아니라 다른 사람이 보고 이해할 수 있는 코드여야 한다는 원칙입니다.
이를 기반으로 클래스,변수, 메소드 명을 지을 때가 가장 어렵습니다.
자기가 만든 코드는 금방 알아 볼수 있습니다. 하지만 시간이 지나면 수많은 일들을 했기때문에 결국 차츰 기억속으로 잊어갑니다.
이후 어떤 이유로 인해 코드 수정이 필요한 경우 자기 코드를 볼때 이해를 못하는 경우나 시간이 오래 걸리는 경우가 있습니다.
이럴때 주석, 변수명, 메소드 명만 잘 만들어도 쉽게 이해되고 가독성도 높아집니다.
그래서 잘 짜여진 코드는 짧거나 로직을 분리해서 메소드를 만드는 것보다, 다른 사람이 보고 이해할수 있게 주석, 변수, 메소드 명들을 잘 만든 것입니다.
일을 하다보면 퇴사자의 코드를 보면 대부분 '이게 뭐지?' 합니다.
이는 주석이나 메소드,변수명들이 이해하기가 어렵기 때문입니다.
개발자는 로직 정리도 중요하지만, 이러한 가독성을 높이는 것이 결국 잘 짠 코드, 깔끔한 코드라고 보여집니다.
Q. 후배 개발자들을 보면서 '이 친구는 정말 성장할 것 같다'라고 느낀 순간이 있다면? 반대의 경우는 무엇인가요?
후배 개발자들과 대화 혹은 어떤 지식을 알려주면 대다수 사람은 거기서 듣고 끝나는 경우가 있습니다.
그런데 간혹 후배 개발자들 중에 어떤 것을 개발을 할 때 예외 사항, 프로세스에 대한 이해를 바탕으로 자기의 설계 방향 및 어떤 부분이 부족할지 피드백을 부탁하는 경우가 있습니다.
이때마다 저는 느끼는 것이 일을 잘한다는 것도 있겠지만, 이 개발자는 정말 제대로 방향성과 자기학습에 대한 꾸준함만을 갖춰지게 한다면 몇년 안에는 꼭 제가 데려가고 싶다는 개발자들이 있습니다.
여기서 한번이 아닌 지속적으로 어떤 문제에 대해 많은 다양항 고민과 탐구를 하는 개발자를 볼때마다 좋은 사수 혹은 선배만 만난다면 분명 엄청난 성장이 일어날 것 같다고 느껴집니다.
멘토링할때 간혹 이런 멘토들을 만나는데 만날때는 항상 시간에 구애받지 않고 몇시간이고 질문 및 의견을 이야기 합니다.
반대로 그저 가르쳐 준대로, 시간이 지나면서 배운 그대로 하기만 하는 개발자의 경우 개발자라기보다는 개발을 하는 직업을 가진 회사원이다 라고 느껴지며, 시간이 지나면 격차가 많이 벌어진것이 보입니다.
본인이 경험만으로 설계 및 개발을 하고, 기술적인 발전이 없다보니 아주 오래 전에 한때 유행했던 방식으로만 개발을 합니다.
이럴때마다 후배들은 절대 이런걸 배우지 않았으면 합니다.
Q. 프로젝트의 품질을 유지하기 위해 가장 중요하게 여기는 것은 무엇인가요?
가장 어려운 질문인데요. 프로젝트 품질은 개발자만의 노력으로 되지는 않습니다.
이 품질에는 안정성, 요구사항에 대한 이해도 및 완성도, 향후 시스템에 대한 유지보수 및 관리, 추가로 발생되는 요구사항에 대해 개발되는 프로세스들이 정립이 되어야 프로젝트의 품질을 높이며 유지할수 있습니다.
이를 위해서는 기획자, 개발자, 설계자, 요구사항 요청한자, 프로젝트에 대한 책임자, 프로젝트를 통핸 시스템을 사용하는 실무자 들의 명확한 의견과 소통이 따라야 합니다.
또한 모든것은 기록이 되어야 합니다.
구두로 전해지는 말들은 언제든지 왜곡이 되고 잊기에 항상 기록이 해야합니다.
또한 어떤 이슈가 발생을 하면 같이 해결하도록해야 하며, 내일이 아닌데 라는 마인드는 절대로 좋지 않습니다. 그리고 명확하게 결정을 내려야 합니다.
우리가 프로젝트 개발 시에 모든 것을 정책으로 정하고, 모든 예외 사항을 다 파악할 수 없습니다.
그렇기에 프로젝트 품질을 높이고 유지하기 위해서는 일의 관련자들과의 의사소통 및 기록, 절차, 명확한 의사결정이 아주 중요합니다.
Q. 개발자로서 계속 성장하기 위해 실천하고 계신 습관이나 학습 방법이 있으신가요?
가장 좋은 쉬운 방법은 나의 지식을 배우기를 원하는 다른 개발자에게 계속 공유해 주는 것입니다.
혼자서 모든 것을 알 수가 없습니다.
저는 현재 20년정도 개발을 하고 있습니다.
하지만 인프라 엔지니어 보다 인프라에 대해 잘 모릅니다. 또한 DBA보다도 DB를 잘 관리를 못합니다.
다들 각자의 영역에서 오랫 동안 일을 하기에 단순히 학습에 의존해서는 성장할 방법이 없습니다.
또한 개발 언어는 하나의 언어만 오랫동안 한다면 쉽게 다른 언어도 배우고 익힐수 있습니다. 물론 한 언어를 오랫 동안 한 만큼은 아니여도, 적어도 다른 언어로 만들어진 코드를 어느 정보 유지보수 및 개발을 할수 있습니다.
저같은 경우에도 자바가 주메인 개발언어지만, Golang, Python 언어를 해야만 했고, 책을 통해 기본적인 문법을 배우고, 구글링을 통해 학습을 했습니다. 결국 현재 해당 언어 시스템들의 개발도 하고 있습니다.
이렇기에 계속 학습을 통해 성장할수는 있지만 하지만, 결국 나이가 들어 세월이 지나면 자연스레 젊었을때보다는 더 배우기가 힘듭니다.
그래서 저는 가장 쉬운 방법으로 나의 지식을 아무런 대가없이 원한다면 가르쳐주는 것이였습니다.
그래서 이 f-lab이 저에게는 아주 알맞은 기회였습니다.
회사에서 후배들에게 가르쳐주지만 회사라는 틀이 있기에 항상 한계가 있습니다.
f-lab를 통해 많은 지식을 알려주고, 반대로 멘티들은 학습 과 더불어서 멘티 자기의 생각과 관심분야들에 대한 고민과 토론을 하다보면, 세상에 나오려는 개발자들의 생각과 트렌드, 관심도 등에 대한 이해도 높이고, 예기치 못한 질문에 대해 저도 다시 고민해서 말을 하다보면 많은성장이 일어나고 있습니다.
초기에는 개발자의 빠른 성장은 많은 학습과 경험이지만, 결국 10년 이상이 지나면 성장의 한계가 옵니다.
책을 배운다고 해서 내 지식이 되는게 아닙니다.
이를 실천하거나 누군가를 통해 결과물을 얻어야만 배울수 있습니다.
이는 쉬운게 아닙니다.
그래서 저는 성장하기 위해 가장 쉬운 방법으로 계속해서 제가 아는 많은 것은 가능한 많은 사람들에게 알려주려고 합니다.
깊이 있는 인사이트와 현실적인 조언이 담긴 멘토님들의 인터뷰와 커리어 성장 콘텐츠가 데브클럽에서 정기적으로 업데이트되고 있습니다.
실력 있는 현직 개발자 멘토들과 직접 소통하고, 생생한 실무 노하우와 커리어 성장 전략을 배워보세요!
이 컨텐츠는 F-Lab의 고유 자산으로 상업적인 목적의 복사 및 배포를 금합니다.