기술에 매몰되지 말자.
Last updated
Was this helpful?
Last updated
Was this helpful?
제미니님이 올리신 영상과 최근에 좋아하는 선배님과 이야기를 나누면서 과연 '엔지니어'란 무엇인가에 대해 생각 정리가 필요하다 싶어 아래와 같이 글을 작성한다.
오버엔지니어링과 기술 부채가 생기는 이유가 뭘까? 기술에 매몰되다보니 발생하는 문제인걸까?
소프트웨어 분야에서는 어떠한 문제를 풀기 위한 해법이 정말 다양하게 존재한다.
하지만, 누군가가 어떤 문제를 해결하기 위해서 어떤 기술을 사용했다는 이유만으로 많은 사람들이 베스트 프랙티스로 착각하고 자신의 소프트웨어 성숙도를 고려하지 않고, 팀원의 숙련도를 고려하지 않은 채 문제 해결에만 집중하다보니 현 단계에서 필요하지 않을 정도의 높은 기술들을 사용하려는 문제점들이 발생한다.
이러한 문제점을 해결하기 위해서는 어떤 노력이 필요할까? 과연 우리 서비스를 많은 사람들이 사용할 것이라는 보장도 없다.
최소한의 구현이 가장 좋은 접근이지 않을까?
단순 모놀리식 아키텍처로부터 시작
3-Layerd 아키텍처 (Controller - Service - Repository)
Service Layer가 커졌을 경우 역할을 분담
...
이런 식의 성장하는 소프트웨어를 설계하는 방식은 어떠한가? 소프트웨어는 처음부터 완벽할 수 없다. 점차적으로 성장하는 방식이 좋은 설계라고 느낀다.
작은 문제를 작게 해결하는 경험의 중요성 또한 필요하다.
특히 '소프트웨어' 개발자인데 나는 '소프트(soft)' 하게 대처하고 있는지부터 되돌아 볼 필요가 있다.
소프트웨어란 무엇인가? 왜 Hard 하지 않고, Soft 라는 단어를 썼을까?
소프트웨어 공학에서의 '유연함' 은 무엇일까?
Soft하고 유연한 엔지니어링을 하고 있는가?
물론 새로운 기술을 배우는 자세는 무엇보다 빠르게 변하는 IT 업계에서 필수적인 요소이다. 하지만, 단순히 사람들이 많이 써서, 멋있어보여서, 트렌드하니까 어떤 기술에 대해서 바로 적용한다면 적절한 설계일까? 그냥 단순히 '사용'에 그치지 않는다.
어떻게 문제를 해결할지에 대해서 고민하며 다양한 관점을 찾아보는 것이 아닌 다른 사람의 의견만을 따라가진 말자. 누군가가 정말 정답에 가까운 해결책을 제시한다하더라도 다양한 관점에서 바라봐주길 원한다. 함께 일하는 동료가 "YES" 만을 외친다면 마냥 좋아하진 말자.
결론은 문제를 해결하는 방법에 대해 여러 관점에서 보는 시각을 넓히자. 어떤 방식으로 접근해야하는지 제대로 고민을 했는지도 되돌아보자.
"단순 구현 레벨의 관점이 아닌 전체적인 관점을 보자."