κ³„νšκ³Ό 좔정에 λŒ€ν•œ 연ꡬ결과

  • 2/3 κ°€λŸ‰μ˜ ν”„λ‘œμ νŠΈλŠ” μΆ”μ •λœ λΉ„μš© μ΄μƒμœΌλ‘œ λ§Žμ€ 돈이 λ“ λ‹€.
  • μ΅œμ’… μ œν’ˆμ— ν¬ν•¨λœ κΈ°λŠ₯λ“€ 쀑 64 νΌμ„ΌνŠΈ κ°€λŸ‰μ€ 거의 ν˜Ήμ€ κ²°μ½” 쓰이지 μ•ŠλŠ”λ‹€.
  • 평균적인 ν”„λ‘œμ νŠΈλŠ” κ³„νšλœ 일정을 두 λ°° 정도 μ΄ˆκ³Όν•œλ‹€.

μ™œ 이런 κ²°κ³Όκ°€ λ‚˜μ™”μ„κΉŒ? μ™œ κ³„νšλ²•μ€ μ‹€νŒ¨ν–ˆμ„κΉŒ?

ν™œλ™μ΄λƒ κΈ°λŠ₯이냐

  • ν™œλ™: νŠΉμ • νŒ€μ΄ μ–΄λ–€ ν–‰μœ„λ₯Ό ν•˜λŠ”κ°€?
  • κΈ°λŠ₯: νŠΉμ • νŒ€μ΄ μ–΄λ–€ κ²°κ³Όλ₯Ό λ‚΄λŠ”κ°€?

κ°„νŠΈ 차트, μž‘μ—… λΆ„ν•΄λ„λŠ” 기본적으둜 ν™œλ™ 기반 κ³„νšλ²•μ΄λ‹€. 이런 ν™œλ™ 기반 κ³„νšλ²•μ€ κ·Έ 자체둜 ν•œκ³„λ₯Ό 가지고 μžˆλ‹€.

  1. ν™œλ™μ˜ μ’…λ£Œλ₯Ό 톡해 고객이 μ–΄λ–€ κ°€μΉ˜λ₯Ό νšλ“ν•˜λŠ”μ§€ μ•Œμˆ˜κ°€ μ—†λ‹€.
    • 고객은 β€œκΈ°λŠ₯” μœ„μ£Όλ‘œ κ°€μΉ˜λ₯Ό μ‚°μ •ν•œλ‹€.
  2. κ³„νšμ„ κ²€ν† μ‹œ β€œμ–΄λ–€ κΈ°λŠ₯을 λΉ νŠΈλ Έμ§€?”가 μ•„λ‹Œ, β€œκ³„νšμ— 적힌 무엇을 ν•˜μ§€ μ•Šμ•˜μ§€?β€λ‘œ κ²€ν† ν•œλ‹€.
    • 즉, ν™œλ™ 기반으둜 μž‘μ„±λœ κ³„νšμ„œμ— 맀λͺ°λ˜κ²Œ λœλ‹€. μ—­μ‹œλ‚˜ 고객 κ΄€μ μ—μ„œ μƒκ°ν•˜μ§€ μ•Šκ²Œ λœλ‹€.

μœ„μ˜ μ΄μœ λŠ” μ–΄λ–»κ²Œ 보면, 근본적인 λ¬Έμ œμ μ— λŒ€ν•΄μ„œ κ³ μ°°ν•˜κ³  μžˆλ‹€. 쒀더 ꡬ체적으둜 μ™œ 전톡적인 κ³„νšλ²•μ΄ μ‹€νŒ¨ν•  수 μ—†λŠ”μ§€μ— λŒ€ν•΄ μ•Œμ•„λ³΄μž.

μ˜ˆμ •λœ 일정을 μ–΄κΈ°κ²Œ λ˜λŠ” 일이 빈번히 λ°œμƒν•œλ‹€

이런 일정 문제 λ•Œλ¬Έμ—, μ œν’ˆμ˜ μ§ˆμ„ ν¬κΈ°ν•˜λŠ” μΌκΉŒμ§€ λ°œμƒν•˜κ³€ ν•œλ‹€.

ν™œλ™μ΄ 일정보닀 일찍 λλ‚˜μ§€ μ•ŠλŠ”λ‹€

  • AλΌλŠ” κΈ°λŠ₯을 5일 μ•ˆμ— λ§Œλ“€λΌλŠ” ν™œλ™ κ³„νšμ΄ μžˆμ—ˆλ‹€κ³  ν•΄λ³΄μž.
  • ν•΄λ‹Ή κ°œλ°œμžλŠ” 5일 이전에 더 빠릴 일을 마치렀고 ν• κΉŒ?
  • 빨리 λ§ˆμ³€λ‹€λ©΄, 자료 쑰사 μ •λ„λŠ” ν•  수 μžˆκ² μ§€λ§Œ 보톡은 μ›Ήμ„œν•‘ν•˜λ©΄μ„œ 쉬렀할 것이닀.
  • 이렇듯 κ°„νŠΈ μ°¨νŠΈμ— μž‘μ—… μ†Œμš”μ‹œκ°„ 자체λ₯Ό μ λŠ” 것은, 빨리 μ’…λ£Œλ  경우 λ­˜ν•˜λ“  상관 μ•ˆν•˜κ² λ‹€λŠ” μ˜μ§€μ˜ ν‘œλͺ…이닀.
  • 그리고, κ·Έ μ‹œκ°„μ— 인간은 κ°€μΉ˜λ₯Ό 생산적인 일을 ν•˜μ§€ μ•ŠλŠ”λ‹€.

ν•œ ν™œλ™μ˜ 지연은 뒀이은 ν™œλ™λ“€μ—κ²Œλ„ 영ν–₯을 μ€€λ‹€

전톡적인 κ³„νšλ²•μ€ β€œν™œλ™ μ€‘μ‹¬μ β€μœΌλ‘œ κ΅¬μ„±λ˜μ–΄ 있기 λ•Œλ¬Έμ— ν™œλ™κ°„μ˜ μ˜μ‘΄μ„±μ— μ£Όλͺ©ν•œλ‹€.

AgileEstimatingAndPlanning_02_WhyPlanningFails_0

μœ„μ™€ 같은 μƒν™©μ—μ„œ ν…ŒμŠ€νŠΈλ₯Ό 일찍 μˆ˜ν–‰ν•˜κ³  μ‹Άλ‹€λ©΄ μ–΄λ–€ 것듀이 μΆ©μ‘±λ˜μ–΄μ•Ό ν• κΉŒ?

  • λ―Έλ“€ ν‹°μ–΄ 뢀뢄이 일찍 λ§ˆλ¬΄λ¦¬λ˜μ–΄μ•Ό ν•œλ‹€.
    • 그리고 이 뢀뢄은 λ°μ΄ν„°λ² μ΄μŠ€ μž‘μ—…μ— μ˜μ‘΄μ μ΄λ‹€.
  • UI 코딩이 일찍 μ’…λ£Œλ˜μ–΄μ•Ό ν•œλ‹€.
  • ν…ŒμŠ€ν„°λ„ 일찍 λ°λ €μ™€μ„œ κ°€μš©ν•  수 μžˆμ–΄μ•Ό ν•œλ‹€.

μœ„μ™€ 같은 의쑴 κ΅¬μ‘°μ—μ„œλ„ ν…ŒμŠ€νŠΈ 일정을 μ•žλ‹ΉκΈ°κΈ° μœ„ν•΄ κ³ λ €ν•΄μ•Όν•˜λŠ” 점이 μ„Έκ°€μ§€λ‚˜ λœλ‹€. 반면 κ·Έ λ°˜λŒ€λŠ” ν•˜λ‚˜λΌλ„ 틀어지면 λ°”λ‘œ 일정이 λŠ¦μ–΄μ§„λ‹€.

  • 데이터 베이슀 μž‘μ—…μ΄ λŠ¦μ–΄μ§„λ‹€.
  • λ―Έλ“€ ν‹°μ–΄ μž‘μ—…μ΄ λŠ¦μ–΄μ§„λ‹€.
  • UI μž‘μ—…μ΄ λŠ¦μ–΄μ§„λ‹€.
  • ν…ŒμŠ€ν„°λ₯Ό μ“Έ 수 μ—†λ‹€.

ν™œλ™ μ€‘μ‹¬μ μœΌλ‘œ μž‘μ„±ν•œ κ³„νšμ΄ 일찍 μ’…λ£Œλ˜λŠ” 것은 κΈ°λŒ€ν•˜κΈ° νž˜λ“€λ‹€.

ν™œλ™λ“€μ€ μ„œλ‘œ 독립적이지 μ•Šλ‹€

  • μ†Œν”„νŠΈμ›¨μ–΄ 개발 ν”„λ‘œμ νŠΈλ₯Ό κ΅¬μ„±ν•˜λŠ” ν™œλ™λ“€μ€ μƒν˜Έ 쒅속적인 κ²½μš°κ°€ λ§Žλ‹€.
  • 개발 κ³Όμ •μ—μ„œ μˆ˜ν–‰λ˜λŠ” ν™œλ™λ“€κ°„μ— 독립성이 μ—†μœΌλ©΄ ν™œλ™μ€ 이후에 영ν–₯을 μ€€λ‹€.

λ©€ν‹°νƒœμŠ€ν‚Ήμ€ 또 λ‹€λ₯Έ 지연을 λ°œμƒμ‹œν‚¨λ‹€

  • 전톡적인 κ³„νšλ²•μ΄ μ‹€νŒ¨ν•œ 이유둜 λ©€ν‹° νƒœμŠ€ν‚Ήμ΄ μžˆλ‹€.
  • μœ„μ˜ 그림은, 각 개인이 κ°€μΉ˜ μ°½μ‘°λ₯Ό μœ„ν•΄ μ“°λŠ” μ‹œκ°„μ˜ 양이 μ„Έ 가지 μ΄μƒμ˜ μž‘μ—…μ„ ν•  λ•Œ κΈ‰κ°ν•˜λŠ” 것을 보여쀀닀.
  • 즉, μ„œλ‘œ μƒμ΄ν•œ μ„±κ²©μ˜ μž‘μ—…μ„ μ™”λ‹€ κ°”λ‹€ν•˜λŠ”λ°μ„œ μ˜€λŠ” Overheadκ°€ μžˆλ‹€. (Context Switching)

ν”„λ‘œμ νŠΈκ°€ μ§€μ—°λ˜κ³ , μ˜μ‘΄μ„±μ΄ μ§™κ²Œ κΉ”λ €μžˆμœΌλ©°, 일정이 λ‹€κ°€μ˜€λŠ” 상황일 λ•Œ, 어떀일이 λ²Œμ–΄μ§€λŠ”μ§€ ν™•μΈν•΄λ³΄μž. μœ„μ˜ 상황은 정상적인 κ³„νšμ„ λ§ν•œλ‹€. DB, API, UI 개발이 순차적으둜 μ΄λ£¨μ–΄μ§ˆ 것이라 μ˜ˆμƒν•œ ν™œλ™ κ³„νšμ΄λ‹€. ν•œ κ°œλ°œμžλŠ” 각 κΈ°λŠ₯에 λŒ€ν•΄ 10일을 μ‚°μ •ν•˜μ—¬ μž‘μ—…μ„ ν•˜κ³  μžˆλ‹€.

  1. 10일 λ™μ•ˆ DB κ°œλ°œμ„ ν•΄μ•Όν•˜λŠ” 상황인데, B κ°œλ°œμžκ°€ μ—°λ½μ΄μ™€μ„œ APIλ₯Ό λš«μ–΄λ‹¬λΌκ³  λΆ€νƒν•œλ‹€.
  2. API μž‘μ—…μ„ κ·Έλž˜μ„œ ν•΄μ£Όκ³  μžˆλŠ”λ°, ν…ŒμŠ€ν„°κ°€ UIλ₯Ό κ΅¬ν˜„ν•΄λ‹¬λΌκ³  λΆ€νƒν•œλ‹€.
  3. UI μž‘μ—…μ„ 마치고 DB둜 λŒμ•„μ™”λ”λ‹ˆ 1, 2κ°€ λ°˜λ³΅λœλ‹€.

즉, 3개의 μž‘μ—…μ„ λ©€ν‹° νƒœμŠ€ν‚Ήν•˜κ³  μžˆλ‹€. μœ„μ˜ 그림을 보면, κ·Έ λ©€ν‹°νƒœμŠ€ν‚Ήμ˜ 결과둜 DBμž‘μ—…μ€ 결과적으둜 20일이 μ†Œμš”λœ 후에야 μ™„λ£Œλ  수 μžˆμ—ˆλ‹€. API, UI도 λ§ˆμ°¬κ°€μ§€λ‹€. 이 λ‹¨κ³„μ—μ„œ Context Switching λΉ„μš©μ€ 생각도 μ•ˆν–ˆλ‹€λŠ” 것을 κΈ°μ–΅ν•˜μž.

μš°μ„ μˆœμœ„μ— λ”°λ₯Έ κΈ°λŠ₯ 개발이 이루어지지 μ•ŠλŠ”λ‹€

  • 전톡적인 κ³„νšλ²•μ€ κ³ κ°μ—κ²Œ 전달될 κ°€μΉ˜μ— λ”°λ₯Έ μš°μ„ μˆœμœ„λŒ€λ‘œ μž‘μ—…μ„ μ§„ν–‰ν•˜μ§€ λͺ»ν•œλ‹€.
  • ν•˜κΈ°λ‘œν•œ λͺ¨λ“  ν™œλ™λ“€μ΄ μ œλ•Œ λλ‚˜λŠ” 것을 μ€‘μš”ν•˜κ²Œ μ—¬κΈ°κΈ° λ•Œλ¬Έμ΄λ‹€.
  • μ‹€μ œ μ œν’ˆμ„ λ§Œλ“œλŠ” κ°œλ°œμžλ“€μ˜ νŽΈμ˜λŒ€λ‘œ κ³„νšμ€ μž¬μ‘°μ •λ˜κ³ , κ²°μ •λœλ‹€.
  • μ΄λŸ¬ν•œ 싀상에, β€œν™œλ™λ§Œ λ‹€ 마치면 λ˜λŠ”κ±° μ•„λ‹˜? μˆœμ„œλŠ” 고객이 별 μ‹ κ²½μ•ˆμ“Έκ±°μ•Ό~β€œλΌκ³  μƒκ°ν•˜κΈ° λ§ˆλ ¨μ΄λ‹€.
  • ν•˜μ§€λ§Œ 고객 μž…μž₯μ—μ„œλŠ” β€œκ³„νšμ„±μ΄ μ—†μ–΄λ³΄μ΄λŠ” μˆœμ„œβ€λ‘œ μž‘μ—…μ΄ μ§„ν–‰λ˜λŠ” 것을 보게 λœλ‹€.
  • κ·ΈλŸ¬λ‹€κ°€ 일정이 μž„λ°•ν•˜λ©΄ 일정을 λ§žμΆ”κΈ° μœ„ν•΄ κΈ°λŠ₯을 μ œκ±°ν•œλ‹€.
  • 그리고 κ·Έ μ™€μ€‘μ—λŠ” ν•„μˆ˜μ μœΌλ‘œ λ“€μ–΄κ°€μ•Όν•˜λŠ” κΈ°λŠ₯도 μžˆλ‹€.
  • 즉, κΈ°λŠ₯ κΈ°μ€€μœΌλ‘œ μƒκ°ν•˜μ§€ μ•ŠκΈ° λ•Œλ¬Έμ—, μš°μ„ μˆœμœ„λŒ€λ‘œ κΈ°λŠ₯ 개발 μ—­μ‹œ μ΄λ£¨μ–΄μ§ˆ 수 μ—†λ‹€.

λΆˆν™•μ‹€μ„±μ„ λ¬΄μ‹œν•œλ‹€

  • μ• μ΄ˆμ— κ³„νšμ„ 지 λ•Œ, λΆˆν™•μ‹€μ„±μ„ μΈμ •ν•˜μ§€ μ•Šκ³  λ§Œλ“ λ‹€.
  • 진행도쀑 고객이 λ§ˆμŒμ„ λ°”κΎΈκ±°λ‚˜, 더 μ„Έλ°€ν•œ μ˜κ²¬μ„ λ‚΄λ†“κ±°λ‚˜ ν•˜λŠ” 일이 λ°œμƒν•˜μ§€ μ•Šμ„ 것이라고 κ°€μ •ν•œλ‹€.
  • μ‹€μ œλ‘œ 진행도 μ•ˆν•΄λ³΄κ³ μ„œ β€œ2μ£Ό μ†Œμš”β€μ™€ 같은 딱지λ₯Ό 뢙여놓고 진행될 거라고 λ§‰μ—°νžˆ λ―ΏλŠ” 것은 μƒλ‹Ήνžˆ 비합리적이닀.
  • 1μž₯μ—μ„œ λ³Έ β€œλΆˆν™•μ‹€μ„± μ›μΆ”β€μ²˜λŸΌ, μ‹€μ œλ‘œ μ§„ν–‰ν•˜λ©΄μ„œ, κ·Έ μ˜ˆμƒμΉ˜μ˜ νŽΈμ°¨κ°€ μ€„μ–΄λ“€κ²Œ λ˜λŠ” 것이닀.
  • λΆˆν™•μ‹€μ„±μ„ μ œμ–΄ν•˜λŠ” κ°€μž₯ 쒋은 방법은 **반볡(Iteration)**이닀.
    • 이λ₯Ό λ„μž…ν•˜κ²Œ 되면, λΉ„λ‘œμ†Œ β€œκ³„νšβ€μžμ²΄λ³΄λ‹€, μ–΄λ–»κ²Œ κ³„νš 과정을 μˆ˜λ¦½ν• μ§€μ— λŒ€ν•΄ μƒκ°ν•˜κ²Œ λœλ‹€. (κ³„νš system)

μΆ”μ •μΉ˜κ°€ μ„œμ•½μœΌλ‘œ λ³€ν•œλ‹€

  • κ³„νšμ‹œ μž‘μ„±ν•œ μ‹œκ°„μ€ μΆ”μ •μΉ˜μ΄λ‹€. μ ˆλŒ€κ°’μ΄ μ•„λ‹ˆλ‹€.
  • κ·ΈλŸΌμ—λ„ λΆˆκ΅¬ν•˜κ³ , 이 μΆ”μ •μΉ˜λ₯Ό μ±…μž„μžκ°€ μ•½μ†μœΌλ‘œ λ°›μ•„λ“€μ΄λŠ” μˆœκ°„ λ¬Έμ œκ°€ λ°œμƒν•œλ‹€.
  • μΆ”μ •μΉ˜λŠ” ν™•λ₯ μ μΈ 값이닀. 약속은 μ ˆλŒ€μ μΈ 값이닀. 이 λ‘˜μ€ μ—„μ—°νžˆ λ‹€λ₯΄λ‹€.

μš”μ•½

전톡적인 κ³„νšλ²•μ΄ μ‹€νŒ¨ν•˜λŠ” μ΄μœ λŠ” λ‹€μŒκ³Ό κ°™λ‹€.

  • μ˜ˆμ •λœ 일정을 μ–΄κΈ°κ²Œ λ˜λŠ” 일이 빈번히 λ°œμƒν•œλ‹€.
  • λ©€ν‹°νƒœμŠ€ν‚Ήμ€ 또 λ‹€λ₯Έ 지연을 λ°œμƒμ‹œν‚¨λ‹€.
  • μš°μ„ μˆœμœ„μ— λ”°λ₯Έ κΈ°λŠ₯ 개발이 이루어지지 μ•ŠλŠ”λ‹€.
  • λΆˆν™•μ‹€μ„±μ„ λ¬΄μ‹œν•œλ‹€.
  • μΆ”μ •μΉ˜κ°€ μ„œμ•½μœΌλ‘œ λ³€ν•œλ‹€.

전톡적인 κ³„νšλ²•μ€, μ™„λ²½ν•  것이라 κ°€μ •ν•˜λŠ” β€œκ³„νšβ€μ— μ§€λ‚˜μΉ˜κ²Œ μΉ˜μ€‘ν•˜μ—¬ 고객의 β€œλ§Œμ‘±λ„β€μ™€ ν”„λ‘œμ νŠΈ β€œμ™„μ„±λ„β€λ₯Ό ν•΄μΉœλ‹€. ν”„λ‘œμ νŠΈλ₯Ό μˆ˜ν–‰ν•˜λŠ” μ΄μœ λŠ”, λˆ„κ΅°κ°€μ—κ²Œ κ°€μΉ˜λ₯Ό 전달해주기 μœ„ν•¨μ΄λ‹€. 그것에 μ§‘μ€‘ν•˜κΈ° μœ„ν•΄μ„œλŠ” 인사(δΊΊδΊ‹)κ°€ 가진 본성인 β€œλΆˆν™•μ‹€μ„±β€μ— λŒ€ν•΄ μΈμ •ν•˜κ³ , 이λ₯Ό λ‹€λ£° 수 μžˆλŠ” 방법에 λŒ€ν•΄ κ³ λ―Όν•˜λŠ” 것이 μ˜³λ‹€. 그리고 μ΄λŠ” Iterationμ΄λΌλŠ” λ°˜λ³΅κ³Όμ •μ„ 톡해 효과적으둜 μ œμ–΄ν•  수 있으며, 이λ₯Ό 톡해 κΈ°λ―Όν•œ κ³„νš μˆ˜μ •μ„ 톡해 고객 μ€‘μ‹¬μœΌλ‘œ ν”„λ‘œμ νŠΈλ₯Ό 관리할 수 μž‡λ‹€.

토둠거리

  1. κ³ κ°μ—κ²Œ 전달할 κΈ°λŠ₯ λŒ€μ‹  ν™œλ™μ— μ§‘μ€‘ν•˜λŠ” κ³„νšμ„ λ”°λ₯΄λ©΄ μ–΄λ–€ λ¬Έμ œκ°€ λ°œμƒν•  수 μžˆμ„κΉŒ?
  2. μ§€κΈˆ μ—…λ¬΄ν™˜κ²½μ—μ„œ μΆ”μ •μΉ˜ == 약속 인가? κ·Έλž¬λ‹€λ©΄ μ–΄λ–€ λ¬Έμ œκ°€ λ°œμƒν•˜λŠ”κ°€?
  3. 2번의 잘λͺ»λœ 이해λ₯Ό λ°”λ‘œ 작으렀면 μ–΄λ–€ 일을 ν•  수 μžˆμ„κΉŒ?
  4. λ³ΈμΈμ—κ²Œ λ©€ν‹° νƒœμŠ€ν‚Ήμ€ μ–΄λ–€ 영ν–₯을 λ―Έμ³€λŠ”κ°€?
  5. λ©€ν‹° νƒœμŠ€ν‚Ήμ΄ μ£ΌλŠ” μ•…μ˜ν–₯을 μ–΄λ–»κ²Œ κ°μ†Œμ‹œν‚¬ 수 μžˆμ„κΉŒ?

Reference