오버엔지니어링과 언더엔지니어링

금일 오후 오버엔지니어링과 언더엔지니어링에 대한 이야기를 하게 되었다. 꽤나 오래 개발자 생활을 한것 같은데 처음 접하고 이야기를 하게 되어 여태까지 뭐하고 살았나 싶다.

아무튼 이 주제에 대해서 대화를 나눌땐 깊이 생각하지 못했으나, 대화 이후 생각을 해보고 어느정도 내린 결론에 대해서 적어 놓으려고 한다.

우선 나의 경우는 오버 엔지니어링을 많이 해왔던 것 같다. 언더 엔지니어링의 문제가 어마하게 크다고 개인적으로 생각하고 있어서 그런 것도 있고, 뭐가 나올지 모르니 다 준비했어가.. 결국 일을 하다 보니 나오는 방어수단?정도 인 것 같다.

근데 결국은 적정엔지니어링?을 추구해야 하는게 아닐까? 이 적정이라는건 어떤 수치가 아니다. 합리적인 판단의 동적 지표다. 우리 비지니스에 대한 이해가 있으면 언제든 변경 될 수 있는 수치고 개발자는 비지니스를 성공적으로 만들어야 할 의무가 있다. 기업에서 보수를 받고 개발을 하고 있다면 더욱 비지니스의 가치를 우선시 해야 한다고 생각한다. 절대 한쪽으로 치우치면 안되고 비지니스를 중심으로 가치 판단을 하고 해당 지표를 설정하는 것이 결국 경험 많은 개발자가 되는 거라고 생각한다.

그리고 다음으로 중요하다고 생각하는건 앞서 말한 경험이다. 우리가 두려워 하는 이유는 결국 기술 부채, 복잡성 증가로 인한 코드의 인적 의존성 증가일 것이다. 좋은 잘하는 개발자란 이 리스크를 지워 줄 수 있어야 했던 것 같다. 결국 지식이 경험을 이기지 못한다고 하는데 많은 경험과 쌓여 있는 노하우등의 지식은 빠르게 올바른 길로 갈 수 있게 해준다. 잘 못 왔을수 있지만 돌아갈 수도 있다. 빨리 옳바른 길로 갈 수 있게 해줄 수 있는 개발자가 되어야 겠다는 생각을 하면서 … 글을 마무리 한다.