무협소설 같은 곳에서 '기연을 얻었다' 라는 표현이 자주 쓰인다.
나는 아쉽게도 무협소설의 주인공은 아니지만,
오늘 상담해주신 멘토님께서 여러 좋은 말씀을 해주셨고
그를 토대로 마치 기연을 얻은 것 처럼 나도 많이 성장할 수 있으면 좋겠다는 마음에
기연이라고 제목을 붙혔다.
멘토님이 말씀하신 내용은 간단하다. 기본기를 확실하게 쌓을 것.
먼저 기본기에 대한 부분은 아무리 강조해도 지나치지 않구나 하고 느꼈다.
멘토님께서도 최근에 다시 딥다이브 자바스크립트 책으로 공부를 시작했다고 하셨다.
회사마다 사용하는 기술과 스택, 코드 컨벤션은 모두 다를 수 밖에 없다.
거기서 신입 개발자는 새로운 지식을 습득하고 적응함에 있어 유연하게 대처할 수 있어야 한다.
기본기가 단단하다면, 예를들어 자바스크립트의 원리와 특성을 파악하고
응용할 수 있는 능력이 일정 수준 이상이라면,
거기서 파생된 기술은 공식문서를 읽거나 구현된 코드를 보고 대부분 어렵지 않게 구현할 수 있다.
라이브러리나 api는 대부분의 가이드라인이 있기 때문이기도 하다.
새로운 기술스택, 새로운 라이브러리나 멋진 기술들을 배우는 것도
물론 개발의 흥미에 있어서 중요한 부분일 수 있지만,
멘토님께서는 냉정하게 생각해서 필요없는 부분은 과감하게 포기하고
현재에 집중하라고 말씀하셨다.
취직 이후에도 계속 공부할 수 있고 앞으로도 공부할게 산더미라고.
취직을 위한 공부를 하라는 것이 아니고 깊이있는 공부를 해야 한다고.
깊이있는 공부는 내가 가장 좋아하고 자신있는 분야였는데.
언젠가부터 잊고 있었던 것 같다.
멘토님께서는 구현해보고자 하는 재밌는 것이 생기면 주저없이 시작하신다고 하셨다.
나도 이전에는 재밌는 것이 떠오르면 무작정 구현을 해보곤 했었는데
언젠가부터는 그렇게 하지 못했다. 시간적인 여유가 없다는 핑계는 차치하고
최근 코드가 정말 마음에 들지 않아서 그랬던 것 같다.
뭔가 어설픈 것 같고 최적화나 추성화도 전혀 되어있지 않은 것 같아서.
이런 부분을 멘토님께 말씀드렸다.
먼저, 포트폴리오 단위로 작업하는 소규모 프로젝트는
당장 최적화가 시급할 정도로 느리거나 하지 않으니 너무 강박적으로 생각하지 말라고 하셨다.
또한, 당연한게 아니냐고 오히려 되물어보셨다.
초보 개발자가 짜는 코드가 당연히 없거니와 멘토님도 두 세달 전에 짰던 코드가
부끄러웠던 경험도 적지 않다고 하셨다.
그래서 코드 히스토리를 관리하는 습관을 들이는게 중요하다고 하셨다.
처음에는 중복되는 코드가 많은 것이 당연하지만 그 코드를 어떤 식으로 고쳐나가고
바뀌는지는 그 사람의 경험을 대변한다. 이러한 경험들이 쌓이다보면
구조를 설계할 때 '이 부분은 중복되겠다' 하고 함수나 hook 으로 만들 수 있는
역량이 생기게 되는거라고.
그리고.. 타협하는 사람은 이런 고민을 하지 않는다고.
더 잘하고 싶고, 잘하려고 하고, 성장하려고 하는 사람들이 이런 고민을 한다고.
단지 내가 생각하는 코드와 내가 알고있는 이상적인 코드의 괴리가 만드는 불안이며,
긍정적인 방향으로 나아가기 위해서는 좋은 코드들을 보면서
'나도 저렇게 되어야지' 하는 생각을 원동력을 삼는 것이 좋다고 하셨다.
항상 말로는 '내가 지금 못하는게 당연하지, 처음부터 잘하면 천재지' 라고 했지만
마음속으로는 '난 왜 지금 저렇게 못짤까?' 라며 불안에 떨고 있었던 것 같다.
그러니까 개발이 점점 무서워지고 코드를 칠 수 없었던 것 같고.
모든 성장은 나의 현재 상태를 정확하게 인지하는 것 부터 시작한다.
이 부분은 정말 멘토님께 다시한번 감사하다고 말씀드리고 싶다.
회사는 어떤 신입을 뽑으려고 할까 ?
성장가능성 같은 추상적인 관점을 배제한다면
단순하게는 더 잘하는 신입일 것이다.
개발 공부에는 끝이 없으므로 취업을 하기 위해서 어디까지 공부를 해야한다는
명확한 기준을 설정하기는 쉽지 않다.
그래서 멘토님께서 추천하는 방식으로는
'어느 수준' 까지 공부를 하겠다 보다는 '언제 까지' 취업을 하겠다.
라는 방식으로 일단은 공부를 진행하라고 하셨다.
목표를 세우는 것에서 끝내는 것이 아니고
명확한 목표를 세우고 치밀하게 계획을 짜서 반드시 지키라고 말씀하셨다.
하루 중 얼마만큼의 시간을 기본기를 연습하는 데에 사용할 지,
얼마만큼의 시간을 프로젝트 개발을 위해 사용할 지,
언제까지 어떤 프로젝트를 완성할 지, 몇개의 프로젝트를 완성할 지,
포트폴리오에는 어떤 프로젝트가 들어가게 될 지,
언제 지원을 시작할 지, 언제 면접을 볼 지, 합격할 지.
계획하는 시간과 실행하는 시간을 명확하게 분리하여 그저 따르기만 하라고.
사람의 불안함은 막연함에서 온다. 그 막연함은 계획으로서 해결할 수 있고.
또 강조하신 내용은, 어필할 수 있는 무기를 만들어야 한다는 것이었다.
개발은 개발자라면 누구나 열심히 하지만 기업에서 나를 선택할 이유,
타인과는 다른 어떤 무기를 반드시 가지고 있어야만 한다는 것이다.
나만의 장점을 천천히 생각해보라고 하셨다.
나의 개발자로써의 장점은 뭘까 ?
계획을 세우면서 차근차근 한번 생각해보려고 한다.
내가 개발자라는 직업을 정말 좋아하는 이유는 그들의 코드를 공유하는 문화라고 생각한다.
'내가 이런거 저런거를 만들었어요' 하는 자랑하고 싶은 귀엽고 순수한 마음일수도,
'내가 만든 코드를 유용하게 써주세요' 하는 선한 영향력이 되고 싶은 마음일수도,
'후배 개발자들이 좀 더 멋진 개발자들이 되었으면' 하는 멋진 선배의 마음일수도.
멘토님께서는 개발자로서의 값진 경험과 지식을 공유해 주셨다.
정말 기연이 아닐 수 없다.
무협소설 처럼 기연을 얻고 천하를 호령하는 고수가 될 수는 없어도
내가 만든 것들을 자랑하고, 내가 만든 코드들을 누군가가 유용하게 써주고,
미래에는 있을 내 후배 개발자들이 더 멋진 코딩을 할 수 있도록,
한 명의 멋진 개발자가 되고싶다고 생각했다.