세이해피

소프트웨어 단기 성과주의의 결과 기술 부채(Technical debt) 본문

기업_스타트업/스타트업

소프트웨어 단기 성과주의의 결과 기술 부채(Technical debt)

HappyGod 2023. 3. 11. 11:37
반응형

소프트웨어 업계에는 단기 성과주의의 결과를 일컫는 기술 부채(technical debt)

  • 장기적으로 보고 코드와 프로세스를 정교하게 설계하기보다는, 단기적인 코드 수정, 즉 "핵(hack)"을 우선시하면 결국 미래에 코드를 재작성, 재구성함으로써 갚아야 할 부채가 쌓이게 됨.
  • 프로젝트를 단기에 신속히 진행할 수 있으므로 기술 부채의 누적이 꼭 해로운 것은 아니나, 끓는 물속의 태평한 개구리가 아리라 성실한 관찰자의 태도를 견지해야 함
  • ex) 집수리시 작은 것이 파손되면 당장 DIY방식 (일명 강력 테이프 방식)으로 수리를 하고 싶어짐 -> 저렴하고 신속하기 때문 -> 그러나 건축 기준에 미치지 못하는 땜빵식 수리는 장기적으로 더 많은 비용을 잡아 먹음. (집을 팔 때가 되면 더 큰돈을 들여서 그 부분을 재수리해야 하는 사태가 벌어짐)

 

스타트업 문화는 이 개념을 다른 유형의 '부채'에까지 확대함

  • 경영 부채
    : 장기적으로 경영 팀의 구성원이나 절차를 제대로 정비하지 못하여 나중에 문제가 생기게 될 가능성을 뜻 함.
  • 설계 부채
    :
    일관된 제품 설계 언어나 브랜드의 스타일 가이드를 갖추지 못하는 것을 의미.
  • 다양성 부채
    : 조직의 다양화를 위한 인력 채용을 등한시하는 것을 뜻 함

이런 모델은 관계 부채, 다이어트 부채, 청소 부채 등 다른 분야로 확장되어, 근시안적 사고의 의도하지 않은 결과를 설명할 수 있다.

이런 부채들의 영향은

  • 이런 상황에서는 꾸준히 상환하지 않으면 빚이 걷잡을 수 없이 커짐
  • 손쓸 수 없을 만큼 엉망이 된 집, 점점 늘어나는 허리둘레, 갈수록 악화되는 관계

이런 형향을 설명하는 일반적인 모델은 경로 의존성(path dependence) 개념(경제학에서 나온 용어)

  • 지금 내릴 수 있는 결정이나 선택할 수 있는 경로는 과거에 한 결정에 의존한다는 뜻.
  • 무해해 보이는 결정이나 사건이, 결국 장기적인 결과에 막대한 영향을 주거나 제한을 가하게 되는 경우가 있음.
  • ex) 별 고민없이 특정 소프트웨어를 이용해서 프로젝트를 관리하는 선택 -> 회사가 성장하고 사용자가 늘면 결국 그 소프트웨어가 최선이 아니라는 것이 드러남. -> 모든 데이터가 그곳에 저장되어 있다 보니 제품을 바꾸려고 하면 큰 혼란이 생김

이 경로 의존성의 제한을 유예하는 경제학에서 가져온 모델 - 선택 유보(preserving optionality)

  • 미래의 선택을 유보하는 결정을 의미
  • 결정을 앞두고 있을 때는 결정을 유예할 수도 있고(회색적 사고), 더 많은 정보를 얻을 때까지 기다리거나 확신이 생길 때까지 선택을 미루고 기다릴 수 있음

그러나, 선택적 유보는 적당히 해야 함 (세상일이 다 그러함)

  • 대학에서 전공 선택을 유보할 수 있지만 제때 졸업을 하려면 어느 시점에는 반드시 하나를 선택해야 함.
  • 전공과 학위주제를 계속 유예하면 학교를 더 다녀야함.

선택 유보의 단점은 더 많은 자원이 요구되어 비용이 증가하므로 -> 선택 유보와 경로 의존성 사이에서 적절한 균형을 찾아야 함.

균형을 유지하는데 도움이 될 생각 모델 사전 예방 원칙 (precautionary principle)

  • 만약 어떤 조치가 얼마나 큰 피해를 일으킬지 알 수 없다면 정책을 시행하기 전에 엄청나게 주의를 해야 함
  • ex) 어떤 물질이 암을 유발한다고 믿을 만한 이유가 있다면, 사정 예방 원칙에서는 그 물질을 통제하지 않아서 사람들을 암에 걸릴 위험에 빠뜨리느니 과학계가 유해성의 정도를 밝힐 때까지 엄격히 통제하는 편이 낫다고 봄

출처 인용 : 슈퍼 씽킹 | 가브리엘 와인버그, 로건 매켄 | 김효정 옮김 | 까치
- 가브리엘 와인버그 : 덕덕고(DuckDuckDuck)창립자 / 트랙션(Traction) 공동 집필


[- 더 알아보기 -]

1. 6가지 기술부채와 해결 방법

https://www.techtarget.com/searchitoperations/tip/6-technical-debt-examples-and-how-to-solve-them

 

6 technical debt examples and how to solve them | TechTarget

Technical debt can accumulate silently and quickly -- unless you know where to look. Explore six examples of where to find it and how to deal with it.

www.techtarget.com

6가지 기술부채

  1. 코드 품질 (열악한 )
  2. IT리더쉽 (제대로 갖춰지지 않은)
  3. 팬데믹과 원격근무에 기반한 기술부채
  4. 문서화가 없음
  5. 개인의 job 유지를 위한 정보 은닉 (협력 부족, 문서, 주니어 멘토링 부족)
  6. 소트트웨어 테스팅 (불충분한)

2. 기술 부채의 일반적인 원인 더보기

https://en.wikipedia.org/wiki/Technical_debt

 

Technical debt - Wikipedia

From Wikipedia, the free encyclopedia Software development concept In software development, technical debt (also known as design debt[1] or code debt) is the implied cost of future reworking required when choosing an easy but limited solution instead of a

en.wikipedia.org

 

반응형
Comments