비효율의 숙달화

개발이야기|2023. 5. 10. 10:14

요즘은 기술적인 내용보다 머릿속에 떠도는 여러가지 키워드들에 대한 나의 생각을 적어보고 싶어 오래간만에 글을 써본다.
 

효율과 비효율의 정의

우선 효율과 비효율의 사전적 의미를 알아본다.
효율은 '들인 노력과 얻은 결과의 비율'
비효율은 '들인 노력에 비하여 얻은 결과가 만족스럽지 못함'
 

비효율이 발생되는 원인

우리가 수영을 배울 때 코치가 이론과 실습을 알려주지만 실제 수영을 해보면 배운대로 동작이 나오지 않는다. 수영 동작을 반복적으로 하며 양적인 시간을 채워나가야지만 비효율에서 효율의 구간으로 조금씩 넘어가게 된다.
즉, 비효율은 자연스러운 현상이고, 효율로 가기 위해 필요한 과정이라고 생각하면 된다.
효율은 비효율에 의존적이고, 자연스러운 현상이다.
 

문제는 비효율의 지속성

간단한 예를 들어보자.
배포 자동화가 되어 있지 않은 환경에서 우리가 애플리케이션을 배포하기 위해서는 빌드를 하고, 애플리케이션 바이너리 파일을 서버에 업로드 하고, 서버를 구동해야 한다.

  • IDE에서 빌드 버튼을 누르고
  • jar파일을 복사하고
  • 파일질라 프로그램을 실행한 후 특정 서버에 jar 파일을 업로드 한다.
  • 그리고 jar 파일을 실행한다.

뭐~ 이정도는 손으로라도 금방 할 수 있다고 생각한다.
위의 작업을 1~2분 이내로 할 수 있고, 빈도수가 많지 않다면 그냥 노가다 하면 된다.
하지만 이런 노가다에는 수많은 부작용들이 숨어 있다. (항상 눈에 보이는 것만 봐서는 안된다. 보이지 않는 것을 보려고 하는 노력이 필요하다.)
 

부작용

  • 배포를 할 때마다 단순 작업을 계속해야 한다.
  • 빌드하고 jar 파일을 업로드 한 뒤에 동료로부터 업무 협의 요청이 와서 대화를 한다. 서버 구동은 까맣게 잊은채로 말이다.
  • jar 파일을 복사해서 올린 줄 알았는데 안 올리고, 서버 구동만 다시 했다. 뭔가 이상하다. 내가 개발한 코드가 서버에 제대로 반영이 안 된 것 같다. 다시 확인하자.
  • 몰입해서 개발하고 있는데 갑자기 배포 요청이 온다. 이로 인한 컨텍스트 스위칭 비용이 발생한다.
  • 내가 배포할 때 동료도 배포하고 있어서 충돌이 발생한다. 그래 다음에 배포할 때에는 채팅방에 공지하고 배포를 진행하자.
  • 기타 등등 너무나도 많은 부작용과 신경써야 할 부분들이 생겨난다.

 
얼마나 많은 부작용이 발생하는가? 이 모든 부작용들을 관리의 영역으로 제어 할 수 있는가?
문제는 이런 비효율적인 작업들을 개선하지 않고, 지속하면 숙달화된다는 것이다.
이렇게 비효율의 숙달화가 발생하는 것이다. 더 문제는 비효율이 발생하고 있는 것 조차 인지하지 못하고, 반복 작업에 숙달되어 지금도 그냥 하고 있는 사람들이 많다라는 점이다.
 

대안은 있나?

서버 배포를 예시로 들었긴 하지만 우리가 업무를 함에 있어 굉장히 많은 비효율이 발생한다.
어렵게 생각하지 말고, 두 번 이상 반복적인 작업이 생긴다면 무조건 자동화 시스템을 도입해야 한다. 여기서 두 번 이상은 내가 두 번 작업하는 것일 수도 있고, 나와 동료가 각각 한 번씩 작업해서 두 번 이상이 될 수도 있다.
자동화 시스템을 도입하고 싶긴 하지만 여의치 않은 경우도 많다. 다른 팀에서 만든 시스템을 이용하다 보면 비효율의 구간이 발생한다. 이와 같은 상황에서는 팀간의 이해관계 등으로 인해 쉽게 효율의 구간으로 넘어오기 어렵다.
이런 상황에서 "이걸 왜 이렇게 밖에 못 만들었어요?" 라고 말하면 싸움 밖에 안된다. 서로간의 감정이 상하고, 앞으로의 협업에 금이 가게 된다. 이럴 때에는 본인 스스로가 좀 더 효율적인 방법으로 시스템을 사용할 수 있게 자동화 툴을 만들던가 아니면 타 팀에 의견을 제시하여 좀 더 유연하게 대처하는 자세가 필요하다.
 

내가 할 수 있는 영역은?

다른 팀에서 만든 시스템을 자동화 할 수 없다면 내가 자동화 툴을 만들면 된다.
기다리지 말고, 내가 할 수 있는 영역이 무엇인지를 찾아보고 구현하면 된다. 이런 작은 노력이라도 해야 업무의 효율을 높일 수 있다.

댓글()