시니어 개발자 대부분이 이탈하며 프로젝트를 이끌어야 하는 경우들을 마주했다. 그러면서 여러가지 좋은 경험을 했다.
완벽한 개발
개발자 대부분은 완벽주의적 성향을 가지고 있다. 그리고 어떤 문제를 해결할 때 대부분 상황에서는 돌아가더라도 원초적인 문제부터 해결을 해야 뒤탈이 없는 경우가 많다.
하지만, 적합하지 않을 때가 있다. 예를 들어서 빠르게 PoC를 보면서 검증해야 될 때 등 비즈니스 임팩트를 위해 시간이 더 중요할 때다.
1~2년차 때는 이런 것들이 보이지 않았다. 느리더라도 모든 것을 고려하는 완벽한 개발이 최고인줄만 알았다.
하지만, 시간이 지나고 보니 주니어 때 이런저런 고민을 하면서 개발을 할 수 있었던 것은 위의 시니어 개발자나 리더가 방패가 되고 있었거나 바쁜 웨이브가 지나고 잠깐 소강상태 일 때가 많다는 것을 깨달았다. 또한 완벽한 개발 또한 없었다. 시간이 지나면 레거시 코드가 될 뿐이다.
결국, 상황에 맞춰서 따라갈 수 있어야 한다. 우리는 개발자이기도 하지만 회사 구성원이기도 하기 때문이다.
물론 이렇게 쓰면서도 무조건적으로 비즈니스 측면만을 고려해서 빨리빨리 개발하는 것을 선호하지는 않는다. 어설프게 빠르게 쌓인 프로젝트는 다양한 확장성을 고려하기 힘들게 만들고 좋은 사용자 경험을 제공하지 못할 가능성이 크고 결국 유지보수를 어렵게 만들어서 뒤에 따라오는 비용이 더 크기 때문이다.
모든게 트레이드오프다. 시니어 개발자로 되어가는 과정은 기술, 비즈니스적인 것을 고려하여 중간점을 잘 찾는 것도 포함된다는걸 배웠다.
완벽한 소통
소통을 할 때는 항상 “역지사지”를 가슴에 새겨야 한다고 생각한다. 상대방을 너무 배려해서 의견을 내지말라는 것이 아니다. 생산적인 대화를 위해서 의견을 내되, 상대방의 의견과 반응을 보면서 중간점을 찾는 것이 중요하다.
주변에 한명씩 자기 주장이 강한 동료가 있다. 때로는 편하다. 빠르게 방향을 확정짓고 나아갈 수 있기 때문이다. 하지만, 한명이라도 반대되는 의견이 나온다면 충돌이 생기기 쉽다. 이런 상황을 커버하는 경험을 최근에 여러번 경험했다.
내가 생각했을 때 가장 좋은 소통은 자신이 생각하는 의견을 피력하되, 상대방의 의견도 받아들일 자세가 되어있어야 하며 그 과정에는 부드러운 대화가 존재해야 한다. 그렇다고 주제에 어긋나게끔 말을 빙빙 돌려서 하라는 뜻은 아니다. 상대방을 존중만 하려는 생각을 가지고 있다면 공격적으로 언어는 나가지 않을 것이다.
중재자
적절한 의견 표현과 중재자 역할을 최근에 하고 있다. 서로의 의견이 ‘틀린’것이 아니고 ‘다르다’는 것을 이해시키고 생각이 너무 다른 부분에서는 일단 시도해보고 1주일 후에 다시 협의해보는 방향으로 회의를 이끌어갔다.
연차가 쌓일수록 개발자에게 소통의 중요성이 더 커진다고 느낀다. “개발자는 의견을 적극적으로 어필할 수 있어야 한다”는 말이 나만의 의견을 고집해야 한다는 뜻이 아님을 다시 한 번 되새길 필요가 있다. 타인의 의견 또한 존중하고 협의점을 찾는 과정이 중요하다.