나는 실력있는 개발자라는 착각이 있었던 2개월 전의 나
퇴사 이후 벌써, 2달이 넘은 시점이 되었다.
퇴사 후 보름만에 사업을 제대로 시작했고, 운이 좋게도 사무실 지원사업과 기타 지원사업에 합격하여, 돈 걱정없이 한 해를 제대로 불사를 수 있는 용기를 얻게 되었다.
대학교 동기들 세 명이서 사업을 시작한 만큼 생각보다 많은 선택지와 자유분방함이 존재했는데, 2달이 넘는 기간동안 어떻게 지냈고, 그 속에서 느낀 개발자의 소양과 마음가짐에 대해 정리하고자 이 글을 적게 되었다.
(퇴사 후 이세계에서는 1년차 개발자인 내가 팀장..?)
본격적으로 사업이 시작되기 전부터, 우리가 하고자 했던 아이템은 개발이 진행중이었다. 하지만, 풀타임이 아니기도 했고, 주니어 개발자로 구성된 팀이 프로젝트를 처음부터 시작하다보니, 아래와 같은 문제가 있었다.
이 외에도 꽤나 많은 오류와 문제들이 매 실행마다 우리를 반겼다.
위와 같은 문제들로 비롯하여 새로운 프로젝트를 시작했고, 우리 사업체에서 나는 연차와 맞지않은 직책을 맡게 되었다..
새로운 프로젝트를 시작하면서 고려해야하는 요소들은 굉장히 많았는데, 그 중에서도 내가 프로젝트를 구성할 때, 중요시 했던 요소들은 아래와 같다.
이 때문에, 프레임워크와 스타일 방식, 네이밍 컨벤션과 더불어 많은 요소들을 결정해야 했다.
"그냥 이렇게 하면 되는거 아니었어..?"
정말 큰 문제는 사실 코드나 실력에 있는 것이 아닌 나라는 사람에게 있다는 것을 많이 깨달았다.
첫 사업이다보니, 전문성이 떨어지는 부분과 더불어 모르는 부분들이 너무나 많았고, 그 속에서 우리는 끝없는 타협을 보았다.
이 타협은 사업과 더불어 나 자신에게도 꽤나 많이 하고 있었는데 나의 타협점들은 아래와 같았다.
나의 실력이 부족한 부분을 개발적인 부분의 핑계로 기획에서 배제하려는 태도
어떠한 기획이던 처음 개발자들이 기획과 디자인을 만났을 때에는 큰 고민에 빠지게 된다.
이 때, 필자는 해왔던 방식과 내용을 통해 기획을 자연스럽게 수정하고자 하는 태도를 보이는 부정적인 태도가 종종 나오고는 했다.
스스로에 대한 타협과 더불어, 타인에게 타협을 제안하고 있는 모습이었다.
물론 시간, 자본, 현실적인 상황을 고려하는 것은 매우 합당한 일이나,
자신이 알지 못하는 부분이 안된다고 생각하는 태도는 큰 문제가 되었다.
이것을 알게 된 것은 음악 플레이어를 만들면서 깨닫게 되었는데, 해당 개발 과정은 아래에 기록해두었다.
Next.js 프로젝트에 음악 Player 시스템 구축
해당 개발을 진행하면서, 지레 겁먹었던 부분은 지속적으로 기획자에게 이런 저런 핑계를 대게 만들었고, 이 과정에서 서로 불필요한 감정소모와 시간 낭비를 겪었다.
실제로 며칠간 다양한 프로젝트를 찾아보고 개발을 진행하면서, 구현에 초점을 맞추기보다 제한사항에만 초점을 맞추어 태도로 발현된 것은 큰 문제점인 것을 깨달았다.
"기획과 디자인을 들었을 때에는 반드시 어떻게 구현할지에 대해 충분히 리서치하고 테스트해보아야 한다."
"기록과 회고는 늘 나를 발전시킨다"
개발자 문화에서 가장 잘 구성되었다고 생각하는 부분은 바로 기록이다.
왜 많은 사람들이 기록에 초점을 맞추고 있는지 전혀 생각하지 못했다.
그저, 취업을 위해서 노력하는 정도로 생각하고 있었으나, 진정한 기록의 힘은 다른 곳에 있었다.
개발 공부를 하면서 많은 글과 정보를 접한 경험이 있을 것이다.
진짜 문제는 내가 무엇을 모르는지 모르는 상황이다.
한 번 좋은 글을 보고 이해한 것은 아는게 아니라 인지한 것
말 그대로, 내가 어떤 글을 보고 새로운 개념을 발견한 것은 내가 아는 것이 아닌 인지한 상태일 뿐이다.
즉, 코드로 구현하기 위해서는 테스트해보고 이 과정의 시행착오를 글로 옮겨야만 나의 스킬로 재탄생시킬 수 있다.
하다못해 간단한 라이브러리를 커스텀하는 것 또한 기록은 힘이 된다.
이처럼 간단한 라이브러리 커스텀에서도 안될 때 만났던 이슈들과 라이브러리 동작 원리에 대해 더 정확히 파악할 수 있고, 해당 과정에서 파생된 궁금증도 찾아보게 된다.
내가 아는 것과 모르는 것을 구분하게 해주는 것은 기록이고, 이 속에서 나의 무지함을 깨닫게 된다.
(나 자신 너무 무식한 것..)
경험으로 코드를 작성하는 개발자와 근거를 통해 힘있는 코드를 작성하는 개발자의 프로젝트는 시간이 지나면 지날수록 티가 날 것이라 확신한다.
그게 그 사람의 실력이든, 프로젝트의 완성도든, 확장성이든 모든 면에서.
세상살이 마음처럼 되는 것이 하나 없는 바쁘다 바빠 현대사회이지만, 필자는 아래와 같은 태도를 노력하고자 한다.
지금까지 진행한 프로젝트에서 실패했지만 잘한 부분이었다고 생각하는 부분은 휴대폰 본인인증 PASS앱을 연동하는 것이었다.
가이드로 받은 코드가 초기 React의 코드였고, 다른 사람들이 연동한 기록 또한 찾아보기가 어려워 문제점을 찾지 못했다.
이틀이 넘도록 시도했으나 해결되지 않아 해당 회사의 개발자에게 직접 문의하며 가이드를 설명받았다.
끝내 문제점은 코드에 있는 것이 아니라, 통신 방식에서 localhost를 허용하지 않고, 공인IP를 통해 해당 업체 서버와 직접 통신해야 한다는 원인을 찾게 되었다.
현재 사무실의 여건 상 공인IP를 할당받아 사용할 수가 없어, localhost에서 테스트하지 못한다는 큰 문제점으로 인해 업체를 바꾸게 되어, 결론적으로 실패하게 되었지만...
만약, 안된다는 이유로 온갖 방법을 시도했거나, 가이드만 보면서 다른 곳에서 문제를 찾고 있었다면 해결하지 못했을 것이다.
"자리가 사람을 만든다."
나는 팀장에 부합해서 개발팀장이라는 자리를 맡게되지 않았다.
오히려, '주니어주니어초보초보 개발'을 할 줄 아는 사람이라는 칭호가 더 어울리는 수준이다.
하지만, 매일 깨닫는 것을 통해 어떤 프로젝트나 상황에서도 겁먹지 않고 상상을 현실로 옮기는 개발자가 되기 위해 노력해보고자 한다.