대부분의 프로그래머가 품질에 대해 압박을 받는다지만 일정에 대한 압박만 못하다.
이렇게 일정이 빠듯할 땐 리팩토링 얘길 꺼내지 말고 몰래 실시하자.
-마틴 파울러in 리펙토링 .팀장에게어떻게 말을꺼내나 -
이미지 출처 https://www.slideshare.net/madvirus/mvp-63161829
리펙토링이란 외부적으로 보이는 기능에는 영향을 주지 않으면서 내부 구현을 변경하는 작업을 말한다.
대부분의 소프트웨어가 초기 설계 목적에 맞게 비지니스가 흘러간다면 리펙토링이란 것은 필요없을 것이다.
해당 s/w의 도메인에 대한 이해부족 또는 기획에 다 담지 못한 요구사항이 개발 단계 또는 개발 이후 드러나 설계가 변경되어야 하거나
사업 확장으로 추가되는 기능이 현 설계로는 비효율적이다 판단 될때
소프트웨어는 재설계 되어야 한다.
굳이 이런 거창한 의미가 아니더라도 신입 프로그래머들의 미숙한 추상화와 구글링을 통해 복붙한 소스코드들은 가만히 두면 나중에 타격을 맞기 때문에 사수역할의 선임 프로그래머는 이를 잡아 내어
해당 부분의 리펙토링을 지시 해야 한다는 부분에서도 리펙토링은 당장 내 옆에서도 이루어 질수 있는 작업이고 수시로 꾸준히 이루어 질수 있는 업무다.
객체간 결합도가 높아지면 해당 소프트웨어의 복잡도는 겉잡을 수 없이 증가한다.
결합도가 높은 소스코드 위에서 코딩을 한다면 그 이후 이루어지는 소스코드들은 서로간 긴밀하고 타이트한 관계를 유지 할수 밖에없다.
창업 초기 기획이 이루어 지지 않은 상태에서 개발을 시작했고
기획과 개발이 동시에 진행되면서 개발 경험 부족이라는 문제와 함께 기획 부족이라는 문제를 같이 겪으면서 아주 죽을 맛이 였다.
어차피 만들어놔도 다시 바뀔껀데 라는 생각은 사람을 의욕 저하상태로 빠트리기 충분했고
정말 소스코드는 꼴도 보기 싫을 만큼 더러웠다.
STS 를 열어 보는 것이 두려웠고 뭐하나 기능수정해달라는 것도 인상을 쓰면서 "이걸 어찌 해야 하나"라는 생각에 한숨부터 쉬면서 소스코드를 만졌다.
결론은
지금 당장에 잘 짜여진 소스코드가 아니라면 그 이후 계속되는 코딩 작업은 소프트웨어 자산에 제 3금융권 어깨 형님들의 기술 부채를 계속 끌어다 쓰는 것과 같다.
지금 당장 자금이 충분해서 안정되듯이 프로그램은 잘 돌아 가지만 부채가 쌓여서 이자가 겉잡을 수 없이 늘어났을 때
버그라는 어깨형님들이 당신에게 들이닥쳐 당신의 휴식시간을 집어던지고 깨부시면서
윽박 지를 것이다.
" 돈을 빌렸으면 갚아야지!!"
프로그래머에게 품질에 대한 일정은 주어지지 않는다.
그러나 품질에 대한 책임은 프로그래머에게 있다.
버그가 생겼을때 그 것을 잡아야 되는 당사자는 경영진이 아니다.
경영진에게 지금 잘돌아가는 소프트웨어에서
1천라인 짜리 1개 클래스는 객체지향적이지 않으니
고쳐야 한다고 이해시키는 것은 불가능하다.
이해시키기 위해서 당신은 객체지향이 아닌 prinf("Hello C World\n"); 부터 경영진에게 가르쳐야 할 것이다.
그냥 마틴 파울러의 조언처럼 몰래 실시하고 품질에 대한 시간을 스케줄에 당연히 포함되도록 일정을 계산해야 한다.
'Diary > StartUp Club' 카테고리의 다른 글
창업과 빠칭코 그 미세한 틈사이 (0) | 2017.02.21 |
---|---|
테스트좀 하게 다들 모여봐 -창업- (0) | 2017.01.08 |
그거 금방될것 같은데? 라는 망언 을 뱉는 짓을 하지 말자 -창업- (0) | 2017.01.08 |
창업 활동을 통해 얻은 교훈들 -창업- (0) | 2017.01.08 |