Fundamentals2020. 2. 6. 00:07

회사에서 작지 않은 S/W 프로젝트를 진행할 경우에는 대부분(이 아니라 전부) 버전 관리 시스템을 이용합니다.

 

무료 시스템으로는 SVN, GIT, CVS 등이 있겠고,

유료 시스템은 MS SourceSafe(사용하는 곳이 있는지는 모르겠으나), IBM ClearCase, MS TFS 등이 있겠네요.

 

버전 관리 시스템을 이용하는 이유는 나중에 살펴 보기로 하겠습니다.

 

어쨌든...

일반적으로 개발자가 코드를 수정한 경우에는 어느 정도 테스트를 수행하고 체크인(또는 커밋)하게 됩니다.

그런데, 체크인(또는 커밋)하기 직전에 또다시 코드를 일부 수정만 하고 테스트 없이 체크인을 하는 경우가 종종 있는데요,

 

이럴 경우에 생기는 부작용은 생각보다 엄청납니다.

검증(테스트)이 되지 않은 코드가 포함된 S/W가 출하되기 때문이죠.

 

학창 시절에 친구들과 삼삼오오 모여 제작하는 S/W야 딱히 검증이 중요하지 않겠습니다만,

'아마' 딱지를 떼고 '프로'라는 직함을 달고 부터는 S/W 개발에서 검증이 차지하는 비중은 이루 말할 수 없습니다.

 

규모가 작은 회사에서는 개발자가 검증 업무도 수행하지만,

규모가 큰 회사일수록 검증 팀이 따로 존재하고 그 인원도 상당합니다.

 

그만큼, 검증이 상당히(혹은 가장) 중요하다는 건데,

위와 같이 검증되지 않은 코드가 시스템 내에 존재한다는 것은 상당히 위험하지요.

 

예를 들어, 체크인을 해야 하는 코드 내에 아래의 루틴이 있다고 가정했을 때, 

 

  if( a >= 0 )
  {
      if( a < 5 )
      {
          return 1;
      }
      else 
     {
         return 2;
      }
  }

 

 

위의 빨간색 부분이 이중 if 문이라 괜히 보기 싫어서, 아래와 같이 수정하고 체크인하면,

 

  if( a >= 0 && a < 5 )
  {
      return 1;
  }
  else 
  {
      return 2;
  }  


 

보기는 참 좋아 보이는데, 큰 차이점이 있죠?

 

첫번째 코드는 a가 음수인 경우 return 없이 다음 코드로 진행합니다.

그런데, 두번째 코드는 a가 5 이상일 때 뿐만 아니라 '음수'인 경우에도 2를 return 하게 되어 버렸습니다.

 

참 황당한 실수라고 생각할 수 있지만, 격무에 시달리다 보면 의외로 저런 실수가 나오기 마련입니다.

 

 

그런데, 위험한 점은 저런 실수 자체가 아닙니다.

개발자가 실수를 했다고 해도 검증 팀에서 위의 문제가 걸러진다면 개발자가 욕 한 번 먹으면 되니 괜찮습니다.

 

그러나, 검증에서도 위의 문제가 찾아지지 않았다면 위의 코드가 포함된 S/W가 고객에게 전달될 것이고,

고객이 그 S/W를 사용하면서 S/W의 결함이 나타났다면, 계약 규모와 결함의 정도에 따라 적게는

수백만원, 많게는 수억원의 페널티를 물게 될 수도 있습니다.

 

 

제가 회사 생활을 하면서 주위를 살펴보면, 개발 능력이 뛰어난 분들일수록 이런 습관을 가지고 있더군요.

자신에 대한 믿음이 강하기 때문이겠죠. 슬프게도... 회사에선 능력이 뛰어나 이것저것 고치려고 하는

개발자보다 자신의 할 일만 하고 안정적으로 기능만 되게 해주는 개발자를 더 선호하지요.

 

하지만, 고용주 입장에서는 수억~수백억원이 오가는 프로젝트에서 실수의 가능성을 내포한 개발자보다

안정적인 개발자가 더 인정 받는 것이 당연하겠죠.

 

PS : 사실 제가 (실력이 좋다는 건 절대 아닙니다.) 저런 실수를 많이해서 혼이 많이 났답니다. :]

     하도 많이 혼나다 보니, 이런 습관은 많이 없어지더라구요. 

     결국 '경험이 중요하다' 로 마무리 되나요. ㅋㅋ

 

네이버 블로그와 통합한 글

- Review 2020. 2. 5

 . 글 말미에 보면 능력이 뛰어난 개발자보다 안정적인 개발자가 더 대우 받는다고 쓴 것은 당시 내가 삼성전자에 재직 중이어서 그랬던 것 같다. 제조IT라는 특성 때문이었던 것 같은데, 실상 대부분의 IT업계는 능력이 뛰어난 개발자를 더 중용한다. 왜냐하면 실수가 있을지언정 그들은 더 멀리 뛸 수 있기 때문이다.

 . 근데, 왜 유독 이 글을 존대말로 썼는지 모르겠네...

Posted by JMAN