이직
개발자에게 이직은 직업 특성이 된 것 같다.
인력 수급이 힘든 중소기업 입장에서는 개발자의 이직, 즉 사람의 이탈이 큰 짐이 될 테지만 그럼에도 불구하고 사람은 적당히 순환해야 한다.
이직을 통해 잃는 점들은 무엇이 있을까?
자리를 오래 지킴으로 인해서 얻는 장점들이 있다. 개발 히스토리를 파악하고 있고, 개발 도메인에 대한 이해가 깊어지며, 주변 동료들과의 유대감이 깊어질 수 있다(모두 그런것은 아니다)
그래도 이직을 해야하는 이유는?
한 자리에 오래 있다 보면 익숙함으로 인해 변화하지 않는 것, 개선할 수 있음에도 유지하는 것들이 생긴다. 의식적인 노력을 한다고 해도 바쁘다는 이유로 넘어가다보면 익숙해져 버린다. 극단적으로 고여버리면 발전하지 않는 조직이 될 수도 있다.
왜? 지금 상태로도 잘 돌아가니까. 문제가 없으니까. 문제를 해결하려면 비용(시간)이 필요하니까
새로운 사람은 다른 문화를 경험했다. 우리 조직이 정상이라고 느끼는 것이 그 사람에게는 비정상이라고 느껴질 수 있다. 반대로 내가 새로운 사람이라면, 내가 알고있는 문화가 비정상적인 문화라는 것을 비교를 통해 알 수 있다.
새하얀 도화지같은 신입이 들어오는 것도 그런 면에서 오히려 좋다. 조직에 활력을 불어 넣고 문화를 개선할 수 있는 인물이 될 수 있다.
3년차
개발 경력이 어느새 2년을 가득 채우고 3년차가 되었다. 중간에 1년정도 놀았으니까 정신적으로는 3년을 채웠을 테고, 실력적으로는 -1년을 해야하지 않을까? 하는 생각도 해본다.
나의 짧은 개발인생은 어땠을까?
이기적이었을 지도 모른다. 지금도 이기적일 지도 모른다. 개발자의 최우선 과제는 요구사항의 구현이다. 소프트웨어가 존재하는 이유는 소비자의 요구사항이 있기 때문이고, 회사는 요구사항을 충족시켜 돈을 번다. 내가 일에서 중점적으로 고민하는 부분과 회사가 고민하는 부분의 차이가 있다면 어떻게 해야하지? 나는 지금까지 욕심만 챙기진 않았을까? 요구사항 충족을 위해 어느정도까지 포기해야 하는가? 욕심을 챙기는건 나쁜건가?
개발자 열정의 일부는 개발 욕심을 얼마나 충족했는가에서 나오지 않을까? 욕심을 챙기고 열정적인 개발자는 나쁜가?
레거시, 테스트, 성장, 외로움
레거시 코드는 개발자가 필연적으로 마주쳐야 하는 것이다.
레거시는 오히려 좋다. 개발 당시 개발자가 실력, 환경, 일정을 고려해서 선택한 최선일 것이다. 사용된 기술을 알아가는 즐거움, 역사를 통해 왜 이런 선택을 했을지 고민하는 것도 재미있다. 레거시를 모르고 만드는건 나쁘지 않다. 인지하고도 생산하는 것은 나쁘다. 쓰레기를 흘리는건 괜찮을지 모르지만 보고도 줍지 않는 것은 문제다.
레거시를 다룰 때마다 아쉬운 점이 있다. 내가 하는 리팩토링, 수정이 최선의 결과인지 모른다는 것이다. 내가 생성해내는 코드 또한 스파게티 레거시의 일부가 되는 것은 아닐까 두렵다.
가끔 누군가의 가르침에 얹혀가고 싶은 마음도 있다. 고민은 즐겁지만 내 선택을 확신하지 못하기 때문에 고통스럽다. 잘못된 선택을 내릴까봐 두렵다. 내가 스스로 고민해서 해답을 찾아나가는 것은 분명 즐겁고 성장하겠지만, 더 나은 방법이 분명 있을 것이고 이끌어 줄 수 있는 사람이 없다는 것은 종종 아쉬움이 남는다.
테스트 코드도 마찬가지다.
테스트 코드를 작성하는 문화가 많이 보급되었고, 유행처럼 번져 많은 사람들이 테스트 코드를 작성하고 TDD로 개발을 진행하는 사람도 있다. 나도 약간이나마 그 문화의 맛을 봤다.
테스트 코드를 작성하지 않는 것은 나쁘지 않으나, 필요하다고 느꼈는데 지나가는 것은 나쁘다.
테스트 코드를 추가하고싶은데 이 또한 도움이 있으면 하는 아쉬움이 있다. 레거시 코드는 테스트하기 쉽지 않다.
Best Practice는 있을까? 코드 구성 등 베스트 프랙티스가 궁금할 때가 있다. 최대한으로 지키는 것은 어렵고, 오히려 좋지 않을때도 있겠지만 궁금하다.
외롭다. 잘하고 있는지 모르겠다. 연차가 높아져도 비슷한 생각을 할까? 5년차 6년차에는 어떤 고민을 할까? 어떻게 해결하고 있을까? 지금 그 연차인 분들은 어떤 고민들을 하고있을까 궁금하다.
결론은 잘하고싶다. 클린한 코드, 객체지향적인 코드를 위해 노력하는 개발자가 되고싶다.
조급함
잘하고 싶다는 생각이 조급함을 부른다.
네카라쿠배에 다니는 사람들은 어떨까? 상상해본다. 그 사람들은 객체지향에 대해 깊이 고민하고 코드를 작성하고 있고, 서로 코드리뷰를 통해 클린한 코드를 위해 노력하고 있을까? 외부에 노출된 기업 문화를 보았을때 부럽고 궁금함이 생긴다.
의견 제시
의견제시는 정말 어려운 일이다. 제시하는사람이 각오와 준비를 많이해야한다. 적절한 이유를 들고 다른 생각을 가진 사람들과 대화하고 설득해야 하는 부분이 있다. 감정컨트롤도 해야한다.
문화에 대해 의견을 제시한다는 것은 지금까지 이어온 문화를 깨는 것이다. 때문에 공격한다고 느끼지 않도록 주의해서 발언해야 한다.