본문으둜 κ±΄λ„ˆλ›°κΈ°

🍭 Chapter 1: κΉ¨λ—ν•œ μ½”λ“œ

πŸŽƒ μ½”λ“œκ°€ μ‘΄μž¬ν•˜λ¦¬λΌβ€‹

μ½”λ“œλŠ” μš”κ΅¬μ‚¬ν•­μ„ μƒμ„Ένžˆ ν‘œν˜„ν•˜λŠ” μˆ˜λ‹¨μ΄λ‹€. μ–΄λŠ μˆ˜μ€€μ— 이λ₯΄λ©΄ μ½”λ“œμ˜ 도움 없이 μš”κ΅¬μ‚¬ν•­μ„ μƒμ„Έν•˜κ²Œ ν‘œν˜„ν•˜κΈ°λž€ λΆˆκ°€λŠ₯ν•˜λ‹€. 좔상화도 λΆˆκ°€λŠ₯ν•˜λ‹€. μ •ν™•νžˆ λͺ…μ‹œν•˜λŠ” μˆ˜λ°–μ— μ—†λ‹€.

ꢁ극적으둜 μ½”λ“œλŠ” μš”κ΅¬μ‚¬ν•­μ„ ν‘œν˜„ν•˜λŠ” μ–Έμ–΄λΌλŠ” 사싀을 λͺ…μ‹¬ν•œλ‹€. μš”κ΅¬μ‚¬ν•­μ— λ”μš± κ°€κΉŒμš΄ μ–Έμ–΄λ₯Ό λ§Œλ“€ μˆ˜λ„ 있고, μš”κ΅¬μ‚¬ν•­μ—μ„œ μ •ν˜• ꡬ쑰λ₯Ό λ½‘μ•„λ‚΄λŠ” 도ꡬλ₯Ό λ§Œλ“€ μˆ˜λ„ μžˆλ‹€. ν•˜μ§€λ§Œ μ–΄λŠ μˆœκ°„μ—λŠ” μ •λ°€ν•œ ν‘œν˜„μ΄ ν•„μš”ν•˜λ‹€. κ·Έ ν•„μš”μ„±μ„ 없앨 방법은 μ—†λ‹€. κ·ΈλŸ¬λ―€λ‘œ μ½”λ“œλŠ” 항상 μ‘΄μž¬ν•˜λ¦¬λΌ.

πŸŽƒ λ‚˜μœ μ½”λ“œβ€‹

λ‚˜μœ μ½”λ“œμ— 발λͺ©μ΄ μž‘ν˜€ κ³ μƒν•œ 기얡이 μžˆλŠ”κ°€? μ‘°κΈˆμ΄λΌλ„ ν”„λ‘œκ·Έλž¨μ„ μ§œλ΄€λ‹€λ©΄ ν•„κ²½ μˆ˜μ—†μ΄ κ²½ν—˜ν–ˆμœΌλ¦¬λΌ. 심지어 이름도 μžˆλ‹€. κ³ ν–‰(wading)이라 λΆ€λ₯Έλ‹€. μš°λ¦¬λŠ” λ‚˜μœ μ½”λ“œλ₯Ό 헀쳐 λ‚˜κ°„λ‹€. λ‹¨μ„œλ‚˜ μ‹€λ§ˆλ¦¬λ₯Ό 찾으렀 λ°œλ²„λ‘₯ μΉ˜μ§€λ§Œ μ†Œμš©μ΄ μ—†λ‹€. λˆˆμ•žμ—λŠ” λ¬΄μ˜λ―Έν•œ μ½”λ“œλ§Œ 끝없이 νŽΌμ³μ§„λ‹€.

μ–΄μ§Έμ„œ λ‚˜μœ μ½”λ“œλ₯Ό μ§°λŠ”κ°€?

κΈ‰ν•΄μ„œ? μ„œλ‘λ₯΄λŠλΌ? μ•„λ§ˆ 그랬으리라. μ œλŒ€λ‘œ 지 μ‹œκ°„μ΄ μ—†λ‹€κ³  μƒκ°ν•΄μ„œ, μ½”λ“œλ₯Ό λ‹€λ“¬λŠλΌ μ‹œκ°„μ„ λ³΄λƒˆλ‹€κ°€ μƒμ‚¬ν•œν…Œ μš• λ¨Ήμ„κΉŒ 봐, μ§€κ²¨μ›Œμ„œ 빨리 끝내고, λ‹€λ₯Έ 업무가 λ„ˆλ¬΄ λ°€λ € ν›„λ”± ν•΄μΉ˜μš°κ³  λ°€λ¦° μ—…λ¬΄λ‘œ λ„˜μ–΄κ°€λ €κ³ ... λͺ¨λ‘κ°€ κ²ͺμ–΄λ³Έ 상황이닀.

우리 λͺ¨λ‘λŠ” μžμ‹ μ΄ μ§  μ“°λ ˆκΈ° μ½”λ“œλ₯Ό 쳐닀보며 λ‚˜μ€‘μ— 손보겠닀고 μƒκ°ν•œ κ²½ν—˜μ΄ μžˆλ‹€. 우리 λͺ¨λ“œλŠ” λŒ€μΆ© μ§  ν”„λ‘œκ·Έλž¨μ΄ λŒμ•„κ°„λ‹€λŠ” 사싀에 μ•ˆλ„κ°μ„ 느끼며 κ·Έλž˜λ„ μ•ˆ λŒμ•„κ°€λŠ” ν”„λ‘œκ·Έλž¨λ³΄λ‹€ λŒμ•„κ°€λŠ” μ“°λ ˆκΈ°κ°€ μ’‹λ‹€κ³  슀슀둜 μœ„λ‘œν•œ κ²½ν—˜μ΄ μžˆλ‹€. λ‹€μ‹œ λŒμ•„μ™€ λ‚˜μ€‘μ— μ •λ¦¬ν•˜κ² λ‹€κ³  λ‹€μ§ν–ˆμ—ˆλ‹€. λ¬Όλ‘  κ·Έλ•Œ κ·Έ μ‹œμ ˆ μš°λ¦¬λŠ” λ₯΄λΈ”λž‘μ˜ 법칙을 λͺ°λžλ‹€. λ‚˜μ€‘μ€ κ²°μ½” μ˜€μ§€ μ•ŠλŠ”λ‹€.

πŸŽƒ λ‚˜μœ μ½”λ“œλ‘œ 치λ₯΄λŠ” λŒ€κ°€β€‹

λ‚˜μœ μ½”λ“œλŠ” 개발 속도λ₯Ό 크게 λ–¨μ–΄λœ¨λ¦°λ‹€. ν”„λ‘œμ νŠΈ μ΄ˆλ°˜μ—λŠ” 번개처럼 λ‚˜μ•„κ°€λ‹€ 1-2λ…„ λ§Œμ— ꡼벡이처럼 κΈ°μ–΄κ°€λŠ” νŒ€λ„ λ§Žλ‹€. μ½”λ“œλ₯Ό κ³ μΉ  λ•Œλ§ˆλ‹€ μ—‰λš±ν•œ κ³³μ—μ„œ λ¬Έμ œκ°€ 생긴닀. κ°„λ‹¨ν•œ 변경은 μ—†λ‹€. μ‹œκ°„μ΄ μ§€λ‚˜λ©΄μ„œ μ“°λ ˆκΈ° λ”λ―ΈλŠ” 점점 높아지고 κΉŠμ–΄μ§€κ³  컀진닀. μ²­μ†Œν•  방법이 μ—†λ‹€. λΆˆκ°€ν•­λ ₯이닀.

λ‚˜μœ μ½”λ“œκ°€ μŒ“μΌμˆ˜λ‘ νŒ€ 생산성은 떨어진닀. κ·ΈλŸ¬λ‹€κ°€ λ§ˆμΉ¨λ‚΄ 0에 κ·Όμ ‘ν•œλ‹€. 생산성이 떨어지면 관리측은 λ‚˜λ¦„λŒ€λ‘œ 볡ꡬλ₯Ό μ‹œλ„ν•œλ‹€. 생산성을 μ¦κ°€μ‹œν‚€λ €λŠ” 희망을 ν’ˆκ³  ν”„λ‘œμ νŠΈμ— 인λ ₯을 μΆ”κ°€λ‘œ νˆ¬μž…ν•œλ‹€. ν•˜μ§€λ§Œ μƒˆ 인λ ₯은 μ‹œμŠ€ν…œ 섀계에 λŒ€ν•œ μ‘°μ˜ˆκ°€ κΉŠμ§€ μ•Šλ‹€. 섀계 μ˜λ„μ— λ§žλŠ” λ³€κ²½κ³Ό 섀계 μ˜λ„μ— λ°˜ν•˜λŠ” 변경을 κ΅¬λΆ„ν•˜μ§€ λͺ»ν•œλ‹€. κ²Œλ‹€κ°€ μƒˆ 인λ ₯κ³Ό νŒ€μ€ 생산성을 λ†’μ—¬μ•Ό ν•œλ‹€λŠ” κ·Ήμ‹¬ν•œ 압박에 μ‹œλ‹¬λ¦°λ‹€. κ·Έλž˜μ„œ 결ꡭ은 λ‚˜μœ μ½”λ“œλ₯Ό 더 많이 μ–‘μ‚°ν•œλ‹€. 덕택에 생산성은 λ”λ”μš± λ–¨μ–΄μ Έ 0이 λœλ‹€.

🎈 μ›λŒ€ν•œ μž¬μ„€κ³„μ˜ κΏˆβ€‹

λ§ˆμΉ¨λ‚΄ νŒ€μ΄ 반기λ₯Ό λ“ λ‹€. 그듀은 이처럼 혐였슀러운 μ½”λ“œλ‘œλŠ” 더 이상 μΌν•˜μ§€ λͺ»ν•˜κ² λ‹€λ©° κ΄€λ¦¬μΈ΅μ—κ²Œ μž¬μ„€κ³„λ₯Ό μš”κ΅¬ν•œλ‹€. 관리측은 μž¬μ„€κ³„μ— μžμ›μ„ μŸμ•„λΆ“κΈ° μ‹«μ§€λ§Œ, 생산성이 λ°”λ‹₯μ΄λΌλŠ” 사싀을 뢀인할 도리가 μ—†λ‹€. κ²°κ΅­ νŒ€μ΄ μš”κ΅¬ν•˜λŠ” λŒ€λ‘œ μ›λŒ€ν•œ μž¬μ„€κ³„λ₯Ό ν—ˆλ½ν•œλ‹€.

μƒˆλ‘œμš΄ 타이거 νŒ€μ΄ κ΅¬μ„±λœλ‹€. 타이거 νŒ€μ€ κΈ°μ‘΄ μ‹œμŠ€ν…œ κΈ°λŠ₯을 λͺ¨λ‘ μ œκ³΅ν•˜λŠ” μƒˆ μ‹œμŠ€ν…œμ„ 내놓아야 ν•œλ‹€. κ·Έλ™μ•ˆ κΈ°μ‘΄ μ‹œμŠ€ν…œμ— κ°€ν•΄μ§€λŠ” 변경도 λͺ¨λ‘ λ”°λΌμž‘μ•„μ•Ό ν•œλ‹€. μƒˆ μ‹œμŠ€ν…œμ΄ κΈ°μ‘΄ μ‹œμŠ€ν…œ κΈ°λŠ₯을 100% μ œκ³΅ν•˜μ§€ μ•ŠλŠ” ν•œ 관리측은 κΈ°μ‘΄ μ‹œμŠ€ν…œμ„ λŒ€μ²΄ν•˜μ§€ μ•Šμ„ ν…Œλ‹ˆκΉŒ.

방금 ν•œ 이야기λ₯Ό 일뢀라도 κ²ͺμ—ˆλ‹€λ©΄ μ‹œκ°„μ„ λ“€μ—¬ κΉ¨λ—ν•œ μ½”λ“œλ₯Ό λ§Œλ“œλŠ” λ…Έλ ₯이 λΉ„μš©μ„ μ ˆκ°ν•˜λŠ” 방법일 뿐만 μ•„λ‹ˆλΌ μ „λ¬Έκ°€λ‘œμ„œ μ‚΄μ•„λ‚¨λŠ” κΈΈμ΄λΌλŠ” 사싀을 μΈμ •ν–ˆμœΌλ¦¬λΌ.

🎈 νƒœλ„β€‹

μ½”λ“œκ°€ λ„ˆλ¬΄λ„ 엉망이라 λͺ‡ μ‹œκ°„μœΌλ‘œ μ˜ˆμƒν•œ 업무가 λͺ‡ 주둜 λŠ˜μ–΄μ§„ κ²½ν—˜μ΄ μžˆλŠ”κ°€? ν•œ μ€„λ§Œ 고치면 되리라 μ˜ˆμƒν–ˆλ‹€κ°€ λͺ¨λ“ˆμ„ 수백 개λ₯Ό κ±΄λ“œλ¦° κ²½ν—˜μ΄ μžˆλŠ”κ°€?

μ½”λ“œκ°€ μ™œ κ·Έλ ‡κ²Œ λ˜μ—ˆμ„κΉŒ? μ›λž˜ 섀계λ₯Ό λ’€μ§‘λŠ” λ°©ν–₯으둜 μš”κ΅¬μ‚¬ν•­μ΄ λ³€ν–ˆλ‹€κ³  λΆˆν‰ν•œλ‹€. 일정이 촉박해 μ œλŒ€λ‘œ ν•  μ‹œκ°„μ΄ μ—†λ‹€κ³  ν•œνƒ„ν•œλ‹€. 일정이 촉박해 μ œλŒ€λ‘œ ν•  μ‹œκ°„μ΄ μ—†μ—ˆλ‹€κ³  ν•œνƒ„ν•œλ‹€.

κ΄€λ¦¬μžμ™€ λ§ˆμΌ€νŒ…μ€ 약속과 곡약을 λ‚΄κ±Έλ©° μš°λ¦¬μ—κ²Œ 정보λ₯Ό κ΅¬ν•œλ‹€. μš°λ¦¬μ—κ²Œ 정보λ₯Ό κ΅¬ν•˜μ§€ μ•Šλ”λΌλ„ μš°λ¦¬κ°€ 적극적으둜 정보λ₯Ό μ œκ³΅ν•΄μ•Ό λ§ˆλ•…ν•˜λ‹€. μ‚¬μš©μžλŠ” μš”κ΅¬μ‚¬ν•­μ„ λ‚΄λ†“μœΌλ©° μš°λ¦¬μ—κ²Œ ν˜„μ‹€μ„±μ„ μžλ¬Έν•œλ‹€. ν”„λ‘œμ νŠΈ κ΄€λ¦¬μžλŠ” 일정을 작으며 μš°λ¦¬μ—κ²Œ 도움을 μ²­ν•œλ‹€. κ·ΈλŸ¬λ―€λ‘œ ν”„λ‘œμ νŠΈ μ‹€νŒ¨λŠ” μš°λ¦¬μ—κ²Œλ„ μ»€λ‹€λž€ μ±…μž„μ΄ μžˆλ‹€. 특히 λ‚˜μœ μ½”λ“œκ°€ μ΄ˆλž˜ν•˜λŠ” μ‹€νŒ¨μ—λŠ” λ”λ”μš± μ±…μž„μ΄ 크닀.

일정에 쫒기더라도 λŒ€λ‹€μˆ˜ κ΄€λ¦¬μžλŠ” 쒋은 μ½”λ“œλ₯Ό μ›ν•œλ‹€. 그듀이 일정과 μš”κ΅¬μ‚¬ν•­μ„ κ°•λ ₯ν•˜κ²Œ λ°€μ–΄λΆ™μ΄λŠ” μ΄μœ λŠ” 그것이 κ·Έλ“€μ˜ μ±…μž„μ΄κΈ° λ•Œλ¬Έμ΄λ‹€. 쒋은 μ½”λ“œλ₯Ό μ‚¬μˆ˜ν•˜λŠ” 일은 λ°”λ‘œ 우리 ν”„λ‘œκ·Έλž˜λ¨Έλ“€μ˜ μ±…μž„μ΄λ‹€.

λ‚˜μœ μ½”λ“œμ˜ μœ„ν—˜μ„ μ΄ν•΄ν•˜μ§€ λͺ»ν•˜λŠ” κ΄€λ¦¬μž 말을 κ·ΈλŒ€λ‘œ λ”°λ₯΄λŠ” 행동은 전문가닡지 λͺ»ν•˜λ‹€.

🎈 μ›μ΄ˆμ  λ‚œμ œβ€‹

ν”„λ‘œκ·Έλž˜λ¨ΈλŠ” 근본적인 κ°€μΉ˜μ—μ„œ λ‚œμ œμ— λ΄‰μ°©ν•œλ‹€. ν”„λ‘œκ·Έλž˜λ¨ΈλΌλ©΄ λˆ„κ΅¬λ‚˜ λ‚˜μœ μ½”λ“œκ°€ 업무 속도λ₯Ό λŠ¦μΆ˜λ‹€λŠ” 사싀을 읡히 μ•ˆλ‹€. κ·ΈλŸΌμ—λ„ λͺ¨λ“  ν”„λ‘œκ·Έλž˜λ¨Έκ°€ κΈ°ν•œμ„ λ§žμΆ”λ €λ©΄ λ‚˜μœ μ½”λ“œλ₯Ό μ–‘μ‚°ν•  μˆ˜λ°–μ— μ—†λ‹€κ³  λŠλ‚€λ‹€. κ°„λ‹¨νžˆ 말해, 그듀은 빨리 κ°€λ €κ³  μ‹œκ°„μ„ 듀이지 μ•ŠλŠ”λ‹€.

λ‚˜μœ μ½”λ“œλ₯Ό μ–‘μ‚°ν•˜λ©΄ κΈ°ν•œμ„ λ§žμΆ”μ§€ λͺ»ν•œλ‹€. 였히렀 엉망진창인 μƒνƒœλ‘œ 인해 속도가 κ³§λ°”λ‘œ λŠ¦μ–΄μ§€κ³ , κ²°κ΅­ κΈ°ν•œμ„ λ†“μΉœλ‹€. κΈ°ν•œμ„ λ§žμΆ”λŠ” μœ μΌν•œ 방법은, κ·ΈλŸ¬λ‹ˆκΉŒ 빨리 κ°€λŠ” μœ μΌν•œ 방법은, μ–Έμ œλ‚˜ μ½”λ“œλ₯Ό μ΅œλŒ€ν•œ κΉ¨λ—ν•˜κ²Œ μœ μ§€ν•˜λŠ” μŠ΅κ΄€μ΄λ‹€.

🎈 κΉ¨λ—ν•œ μ½”λ“œλΌλŠ” 예술?​

κΉ¨λ—ν•œ μ½”λ“œλ₯Ό μ–΄λ–»κ²Œ μž‘μ„±ν• κΉŒ? κΉ¨λ—ν•œ μ½”λ“œκ°€ 무엇인지 λͺ¨λ₯΄λ©΄ κΉ¨λ—ν•œ μ½”λ“œλ₯Ό λ§Œλ“€λ €κ³  μ• μ¨λ΄€μž μ†Œμš©μ΄ μ—†λ‹€.

κΉ¨λ—ν•œ μ½”λ“œμ™€ λ‚˜μœ μ½”λ“œλ₯Ό ꡬ뢄할 쀄 μ•ˆλ‹€κ³  κΉ¨λ—ν•œ μ½”λ“œλ₯Ό μž‘μ„±ν•  쀄 μ•ˆλ‹€λŠ” λœ»μ€ μ•„λ‹ˆλ‹€. κΉ¨λ—ν•œ μ½”λ“œλ₯Ό μž‘μ„±ν•˜λ €λ©΄ μ²­κ²°μ΄λΌλŠ” 힘겹게 μŠ΅λ“ν•œ 감각을 ν™œμš©ν•΄ μžμž˜ν•œ 기법듀을 μ μš©ν•˜λŠ” μ ˆμ œμ™€ 규율이 ν•„μš”ν•˜λ‹€. μ—΄μ‡ λŠ” μ½”λ“œ 감각이닀. μ–΄λ–€ μ‚¬λžŒμ€ μ½”λ“œ 감각을 νƒ€κ³ λ‚œλ‹€. μ–΄λ–€ μ‚¬λžŒμ€ νˆ¬μŸν•΄μ„œ μ–»μ–΄μ•Ό ν•œλ‹€. μ½”λ“œ 감각이 있으면 쒋은 μ½”λ“œμ™€ λ‚˜μœ μ½”λ“œλ₯Ό κ΅¬λΆ„ν•œλ‹€. 그뿐만이 μ•„λ‹ˆλ‹€. μ ˆμ œμ™€ κ·œμœ¨μ„ μ μš©ν•΄ λ‚˜μœ μ½”λ“œλ₯Ό 쒋은 μ½”λ“œλ‘œ λ°”κΎΈλŠ” μ „λž΅λ„ νŒŒμ•…ν•œλ‹€.

μ½”λ“œ 감각이 μ—†λŠ” ν”„λ‘œκ·Έλž˜λ¨Έλ„ λ•Œλ‘œλŠ” λ‚˜μœ λͺ¨λ“ˆμ„ μ•Œμ•„λ³Έλ‹€. ν•˜μ§€λ§Œ κ·Έκ²ƒμœΌλ‘œ 끝이닀. μ½”λ“œ 감각이 μžˆλŠ” ν”„λ‘œκ·Έλž˜λ¨ΈλŠ” λ‚˜μœ λͺ¨λ“ˆμ„ 보면 쒋은 λͺ¨λ“ˆλ‘œ κ°œμ„ ν•  λ°©μ•ˆμ„ λ– μ˜¬λ¦°λ‹€. μ½”λ“œ 감각으둜 졜고 λ°©μ•ˆμ„ μ„ νƒν•œ ν›„ μ—¬κΈ°μ„œ κ±°κΈ°κΉŒμ§€ μ΄λ™ν•˜λŠ” 경둜λ₯Ό κ³„νšν•œλ‹€.

🎈 κΉ¨λ—ν•œ μ½”λ“œλž€?​

μ•„λ§ˆ ν”„λ‘œκ·Έλž˜λ¨Έ μˆ˜λ§ŒνΌμ΄λ‚˜ μ •μ˜λ„ λ‹€μ–‘ν•˜λ¦¬λΌ. 우리 λΆ„μ•Όμ—μ„œ μ•„μ£Ό 유λͺ…ν•˜κ³  λ…Έλ ¨ν•œ ν”„λ‘œκ·Έλž˜λ¨Έλ“€μ—κ²Œ μ˜κ²¬μ„ λ¬Όμ—ˆλ‹€.

λΉ„μ•Όλ„€ 슀트둭슀트룹 (C++ μ°½μ‹œμž)
λ‚˜λŠ” μš°μ•„ν•˜κ³  효율적인 μ½”λ“œλ₯Ό μ’‹μ•„ν•œλ‹€. 논리가 간단해야 버그가 μˆ¨μ–΄λ“€μ§€ λͺ»ν•œλ‹€. μ˜μ‘΄μ„±μ„ μ΅œλŒ€ν•œ 쀄여야 μœ μ§€λ³΄μˆ˜κ°€ μ‰¬μ›Œμ§„λ‹€. 였λ₯˜λŠ” λͺ…λ°±ν•œ μ „λž΅μ— μ˜κ±°ν•΄ μ² μ €νžˆ μ²˜λ¦¬ν•œλ‹€. μ„±λŠ₯을 졜적으둜 μœ μ§€ν•΄μ•Ό μ‚¬λžŒλ“€μ΄ 원칙 μ—†λŠ” μ΅œμ ν™”λ‘œ μ½”λ“œλ₯Ό λ§μΉ˜λ €λŠ” μœ ν˜Ήμ— 빠지지 μ•ŠλŠ”λ‹€. κΉ¨λ—ν•œ μ½”λ“œλŠ” ν•œ 가지λ₯Ό μ œλŒ€λ‘œ ν•œλ‹€.

비야넀에 λ”°λ₯΄λ©΄ κΉ¨λ—ν•œ μ½”λ“œλŠ” 보기에 즐거운 μ½”λ“œλ‹€. λΉ„μ•Όλ„€λŠ” νš¨μœ¨λ„ μ–ΈκΈ‰ν•œλ‹€. λΉ„μ•Όλ„€λŠ” μœ ν˜Ήμ΄λΌλŠ” λ‹¨μ–΄λ‘œ κ·Έ κ²°κ³Όλ₯Ό ν‘œν˜„ν•œλ‹€. λ‚˜μœ μ½”λ“œλŠ” λ‚˜μœ μ½”λ“œλ₯Ό μœ ν˜Ήν•œλ‹€. λ‚˜μœ μ½”λ“œλ₯Ό κ³ μΉ˜λ©΄μ„œ 였히렀 더 λ‚˜μœ μ½”λ“œλ₯Ό λ§Œλ“ λ‹€λŠ” λœ»μ΄λ‹€.

λΉ„μ•Όλ„€λŠ” μ² μ €ν•œ 였λ₯˜ μ²˜λ¦¬λ„ μ–ΈκΈ‰ν•œλ‹€. μ„Έμ„Έν•œ μ‚¬ν•­κΉŒμ§€ κΌΌκΌΌν•˜κ²Œ μ‹ κ²½ μ“°λΌλŠ” 말이닀. λ©”λͺ¨λ¦¬ λˆ„μˆ˜, 경쟁 μƒνƒœ(race condition), 일관성 μ—†λŠ” λͺ…λͺ…법이 또 λ‹€λ₯Έ μ˜ˆλ‹€. ν•œ λ§ˆλ””λ‘œ μš”μ•½ν•˜λ©΄, κΉ¨λ—ν•œ μ½”λ“œλŠ” μ„Έμ„Έν•œ μ‚¬ν•­κΉŒμ§€ κΌΌκΌΌν•˜κ²Œ μ²˜λ¦¬ν•˜λŠ” μ½”λ“œλ‹€.

κΉ¨λ—ν•œ μ½”λ“œλŠ” ν•œ 가지에 μ§‘μ€‘ν•œλ‹€. 각 ν•¨μˆ˜μ™€ ν΄λž˜μŠ€μ™€ λͺ¨λ“ˆμ€ μ£Όλ³€ 상황에 ν˜„ν˜Ήλ˜κ±°λ‚˜ μ˜€μ—Όλ˜μ§€ μ•Šμ€ 채 ν•œκΈΈλ§Œ κ±·λŠ”λ‹€.

κ·Έλž˜λ”” λΆ€μΉ˜ (Object Oriented Analysis and Design with Application μ €μž)
κΉ¨λ—ν•œ μ½”λ“œλŠ” λ‹¨μˆœν•˜κ³  직접적이닀. κΉ¨λ—ν•œ μ½”λ“œλŠ” 잘 μ“΄ λ¬Έμž₯처럼 μ½νžŒλ‹€. κΉ¨λ—ν•œ μ½”λ“œλŠ” κ²°μ½” μ„€κ³„μžμ˜ μ˜λ„λ₯Ό μˆ¨κΈ°μ§€ μ•ŠλŠ”λ‹€. 였히렀 λͺ…μΎŒν•œ 좔상화와 λ‹¨μˆœν•œ μ œμ–΄λ¬ΈμœΌλ‘œ κ°€λ“ν•˜λ‹€.

κ·Έλž˜λ””λŠ” 가독성을 κ°•μ‘°ν•œλ‹€. κΉ¨λ—ν•œ μ½”λ“œλŠ” ν•΄κ²°ν•  문제의 κΈ°μž₯을 λͺ…ν™•νžˆ λ“œλŸ¬λ‚΄μ•Ό ν•œλ‹€. μ½”λ“œλŠ” 좔츑이 μ•„λ‹ˆλΌ 사싀에 κΈ°λ°˜ν•΄μ•Ό ν•œλ‹€. λ°˜λ“œμ‹œ ν•„μš”ν•œ λ‚΄μš©λ§Œ λ‹΄μ•„μ•Ό ν•œλ‹€. μ½”λ“œλ₯Ό μ½λŠ” μ‚¬λžŒμ—κ²Œ ν”„λ‘œκ·Έλž˜λ¨Έκ°€ λ‹¨ν˜Έν•˜λ‹€λŠ” 인상을 μ€˜μ•Ό ν•œλ‹€.

큰(big) 데이브 ν† λ§ˆμŠ€ (OTI 창립자이자 이클립슀 μ „λž΅μ˜ λŒ€λΆ€)
κΉ¨λ—ν•œ μ½”λ“œλŠ” μž‘μ„±μžκ°€ μ•„λ‹Œ μ‚¬λžŒλ„ 읽기 쉽고 고치기 쉽닀. λ‹¨μœ„ ν…ŒμŠ€νŠΈ μΌ€μ΄μŠ€μ™€ 인수 ν…ŒμŠ€νŠΈ μΌ€μ΄μŠ€κ°€ μ‘΄μž¬ν•œλ‹€. κΉ¨λ—ν•œ μ½”λ“œμ—λŠ” 의미 μžˆλŠ” 이름이 λΆ™λŠ”λ‹€. νŠΉμ • λͺ©μ μ„ λ‹¬μ„±ν•˜λŠ” 방법은 (μ—¬λŸ¬ 가지가 μ•„λ‹ˆλΌ) ν•˜λ‚˜λ§Œ μ œκ³΅ν•œλ‹€. μ˜μ‘΄μ„±μ€ μ΅œμ†Œμ΄λ©° 각 μ˜μ‘΄μ„±μ€ λͺ…ν™•νžˆ μ •μ˜ν•œλ‹€. APIλŠ” λͺ…ν™•ν•˜λ©° μ΅œμ†Œλ‘œ μ€„μ˜€λ‹€. 언어에 따라 ν•„μš”ν•œ λͺ¨λ“  정보λ₯Ό μ½”λ“œλ§ŒμœΌλ‘œ λͺ…ν™•νžˆ ν‘œν˜„ν•  수 없기에 μ½”λ“œλŠ” λ¬Έν•™μ μœΌλ‘œ ν‘œν˜„ν•΄μ•Ό λ§ˆλ•…ν•˜λ‹€.

λ°μ΄λΈŒλŠ” κΉ¨λ—ν•œ μ½”λ“œλž€ λ‹€λ₯Έ μ‚¬λžŒμ΄ 고치기 쉽닀고 λ‹¨μ–Έν•œλ‹€. λ°μ΄λΈŒλŠ” κΉ¨λ—ν•œ μ½”λ“œλ₯Ό ν…ŒμŠ€νŠΈ μΌ€μ΄μŠ€μ™€ μ—°κ΄€ μ§“λŠ”λ‹€. μ‹­μ—¬ λ…„ 전이라면 물의λ₯Ό μΌμœΌν‚¬ λ§Œν•œ λ°œμ–Έμ΄λ‹€. ν•˜μ§€λ§Œ ν…ŒμŠ€νŠΈ 주도 개발(Test Driven Development)μ΄λΌλŠ” λΆ„μ•ΌλŠ” 우리 업계에 μ‹¬μ˜€ν•œ 영ν–₯을 λ―ΈμΉ˜λ©΄μ„œ μ˜€λŠ˜λ‚  κ°€μž₯ 근본적인 원칙 쀑 ν•˜λ‚˜κ°€ λ˜μ—ˆλ‹€. ν…ŒμŠ€νŠΈ μΌ€μ΄μŠ€κ°€ μ—†λŠ” μ½”λ“œλŠ” κΉ¨λ—ν•œ μ½”λ“œκ°€ μ•„λ‹ˆλ‹€. 아무리 μ½”λ“œκ°€ μš°μ•„ν•΄λ„, 아무리 가독성이 높아도, ν…ŒμŠ€νŠΈ μΌ€μ΄μŠ€κ°€ μ—†μœΌλ©΄ κΉ¨λ—ν•˜μ§€ μ•Šλ‹€.

마이클 νŽ˜λ”μŠ€ (Working Effectively with Legacy Code μ €μž) κΉ¨λ—ν•œ μ½”λ“œμ˜ νŠΉμ§•μ€ λ§Žμ§€λ§Œ κ·Έ μ€‘μ—μ„œλ„ λͺ¨λ‘λ₯Ό μ•„μš°λ₯΄λŠ” νŠΉμ§•μ΄ ν•˜λ‚˜ μžˆλ‹€. κΉ¨λ—ν•œ μ½”λ“œλŠ” μ–Έμ œλ‚˜ λˆ„κ΅°κ°€ 주의 깊게 μ§°λ‹€λŠ” λŠλ‚Œμ„ μ€€λ‹€. 고치렀고 μ‚΄νŽ΄λ΄λ„ λ”±νžˆ 손 댈 곳이 μ—†λ‹€. κ³ μΉ  ꢁ리λ₯Ό ν•˜λ‹€λ³΄λ©΄ μ–Έμ œλ‚˜ 제자리둜 λŒμ•„μ˜¨λ‹€. κ·Έλ¦¬κ³ λŠ” λˆ„κ΅°κ°€ 남겨쀀 μ½”λ“œ, λˆ„κ΅°κ°€ 주의 깊게 μ§œλ†“μ€ μž‘ν’ˆμ— 감사λ₯Ό λŠλ‚€λ‹€.

κΉ¨λ—ν•œ μ½”λ“œλŠ” 주의 깊게 μž‘μ„±ν•œ μ½”λ“œκ°€. λŠκ·Όκ°€ μ‹œκ°„μ„ λ“€μ—¬ κΉ”λ”ν•˜κ³  λ‹¨μ •ν•˜κ²Œ μ •λ¦¬ν•œ μ½”λ“œλ‹€. μ„Έμ„Έν•œ μ‚¬ν•­κΉŒμ§€ κΌΌκΌΌν•˜κ²Œ μ‹ κ²½ μ“΄ μ½”λ“œλ‹€. 주의λ₯Ό 기울인 μ½”λ“œλ‹€.

λ‘  μ œν”„λ¦¬μŠ€ (Extreme Programming Installed와 Extreme Programming Adventure in C# μ €μž)

  • λͺ¨λ“  ν…ŒμŠ€νŠΈλ₯Ό ν†΅κ³Όν•œλ‹€.
  • 쀑볡이 μ—†λ‹€.
  • μ‹œμŠ€ν…œ λ‚΄ λͺ¨λ“  섀계 아이디어λ₯Ό ν‘œν˜„ν•œλ‹€.
  • 클래슀, λ©”μ„œλ“œ, ν•¨μˆ˜ 등을 μ΅œλŒ€ν•œ 쀄인닀.

λ¬Όλ‘  λ‚˜λŠ” 주둜 쀑볡에 μ§‘μ€‘ν•œλ‹€. 같은 μž‘μ—…μ„ μ—¬λŸ¬ μ°¨λ‘€ λ°˜λ³΅ν•œλ‹€λ©΄ μ½”λ“œκ°€ 아이디어λ₯Ό μ œλŒ€λ‘œ ν‘œν˜„ν•˜μ§€ λͺ»ν•œλ‹€λŠ” 증거닀. λ‚˜λŠ” 문제의 아이디어λ₯Ό μ°Ύμ•„λ‚΄ μ’€ 더 λͺ…ν™•ν•˜κ²Œ ν‘œν˜„ν•˜λ € μ• μ“΄λ‹€.
λ‚΄κ²Œ μžˆμ–΄ ν‘œν˜„λ ₯은 의미 μžˆλŠ” 이름을 ν¬ν•¨ν•œλ‹€. 보톡 λ‚˜λŠ” ν™•μ •ν•˜κΈ° 전에 이름을 μ—¬λŸ¬ μ°¨λ‘€ λ°”κΎΌλ‹€. ν‘œν˜„λ ₯은 μ΄λ¦„μ—λ§Œ κ΅­ν•œλ˜μ§€ μ•ŠλŠ”λ‹€. λ‚˜λŠ” μ—¬λŸ¬ κΈ°λŠ₯을 μˆ˜ν–‰ν•˜λŠ” κ°μ²΄λ‚˜ λ©”μ„œλ“œλ„ μ°ΎλŠ”λ‹€. 객체가 μ—¬λŸ¬ κΈ°λŠ₯을 μˆ˜ν–‰ν•œλ‹€λ©΄ μ—¬λŸ¬ 객체둜 λ‚˜λˆˆλ‹€. λ©”μ„œλ“œκ°€ μ—¬λŸ¬ κΈ°λŠ₯을 μˆ˜ν–‰ν•œλ‹€λ©΄ λ©”μ„œλ“œ μΆ”μΆœ λ¦¬νŒ©ν„°λ§ 기법을 μ μš©ν•΄ κΈ°λŠ₯을 λͺ…ν™•νžˆ κΈ°μˆ ν•˜λŠ” λ©”μ„œλ“œ ν•˜λ‚˜μ™€ κΈ°λŠ₯을 μ‹€μ œλ‘œ μˆ˜ν–‰ν•˜λŠ” λ©”μ„œλ“œ μ—¬λŸ¬ 개둜 λ‚˜λˆˆλ‹€.
쀑볡과 ν‘œν˜„λ ₯만 μ‹ κ²½ 써도 κΉ¨λ—ν•œ μ½”λ“œλΌλŠ” λͺ©ν‘œμ— 성큼 λ‹€κ°€μ„ λ‹€. ν•˜μ§€λ§Œ λ‚˜λŠ” ν•œ 가지λ₯Ό 더 κ³ λ €ν•œλ‹€. μ΄λŠ” μ„€λͺ…ν•˜κΈ° 쑰금 κΉŒλ‹€λ‘­λ‹€.
였랜 κ²½ν—˜ 끝에 λ‚˜λŠ” λͺ¨λ“  ν”„λ‘œκ·Έλž¨μ΄ μ•„μ£Ό μœ μ‚¬ν•œ μš”μ†Œλ‘œ μ΄λ€„μ§„λ‹€λŠ” 사싀을 κΉ¨λ‹¬μ•˜λ‹€. 이런 상황이 λ°œμƒν•˜λ©΄ λ‚˜λŠ” 좔상 λ©”μ„œλ“œλ‚˜ 좔상 클래슀λ₯Ό λ§Œλ“€μ–΄ μ‹€μ œ κ΅¬ν˜„μ„ 감싼닀. 그러면 μ—¬λŸ¬ 가지 μž₯점이 생긴닀.
쀑볡 쀄이기, ν‘œν˜„λ ₯ 높이기, μ΄ˆλ°˜λΆ€ν„° κ°„λ‹¨ν•œ 좔상화 κ³ λ €ν•˜κΈ°. λ‚΄κ²ŒλŠ” 이 μ„Έ 가지가 κΉ¨λ—ν•œ μ½”λ“œλ₯Ό λ§Œλ“œλŠ” 비결이닀.

쀑볡을 ν”Όν•˜λΌ. ν•œ κΈ°λŠ₯만 μˆ˜ν–‰ν•˜λΌ. μ œλŒ€λ‘œ ν‘œν˜„ν•˜λΌ. μž‘κ²Œ μΆ”μƒν•˜λΌ.

μ›Œλ“œ 컀닝햄 (μœ„ν‚€ μ°½μ‹œμž, ν”ΌνŠΈ μ°½μ‹œμž, 읡슀트림 ν”„λ‘œκ·Έλž˜λ° 곡동 μ°½μ‹œμž, λ””μžμΈ νŒ¨ν„΄μ„ λ’€μ—μ„œ μ›€μ§μ΄λŠ” μ „λ¬Έκ°€, 슀λͺ°ν† ν°μ™€ 객체 지ν–₯의 정신적 μ§€λ„μž, μ½”λ“œλ₯Ό μ‚¬λž‘ν•˜λŠ” ν”„λ‘œκ·Έλž˜λ¨Έλ“€μ˜ λŒ€λΆ€)
μ½”λ“œλ₯Ό μ½μœΌλ©΄μ„œ μ§μž‘ν–ˆλ˜ κΈ°λŠ₯을 각 루틴이 κ·ΈλŒ€λ‘œ μˆ˜ν–‰ν•œλ‹€λ©΄ κΉ¨λ—ν•œ μ½”λ“œλΌ λΆˆλŸ¬λ„ λ˜κ² λ‹€. μ½”λ“œκ°€ κ·Έ 문제λ₯Ό ν’€κΈ° μœ„ν•œ μ–Έμ–΄μ²˜λŸΌ 보인닀면 μ•„λ¦„λ‹€μš΄ μ½”λ“œλΌ λΆˆλŸ¬λ„ λ˜κ² λ‹€.

κΉ¨λ—ν•œ μ½”λ“œλŠ” μ½μœΌλ©΄μ„œ λ†€λž„ 일이 μ—†μ–΄μ•Ό ν•œλ‹€κ³  μ›Œλ“œλŠ” λ§ν•œλ‹€. μ½”λ“œλ₯Ό λ…ν•΄ν•˜λŠλΌ 머리λ₯Ό μ₯μ–΄μ§€ ν•„μš”κ°€ μ—†μ–΄μ•Ό ν•œλ‹€. λͺ¨λ“ˆμ„ 읽으면 λ‹€μŒμ— λ²Œμ–΄μ§ˆ 상황이 보인닀. μ–Έμ–΄λ₯Ό λ‹¨μˆœν•˜κ²Œ 보이도둝 λ§Œλ“œλŠ” μ±…μž„μ΄ μš°λ¦¬μ—κ²Œ μžˆλ‹€.

πŸŽƒ μš°λ¦¬λ“€ 생각​

κ·Έλ ‡λ‹€λ©΄ λ‚΄(λ°₯ 아저씨) 생각은 μ–΄λ–»λŠλƒκ³ ? 이 μ±…μ—μ„œ κΉ¨λ—ν•œ λ³€μˆ˜ 이름, κΉ¨λ—ν•œ ν•¨μˆ˜, κΉ¨λ—ν•œ 클래슀λ₯Ό λ§Œλ“œλŠ” 방법을 μ†Œκ°œν•œλ‹€. 이 책은 λ‚˜μ™€ λ‚΄ λ™λ£Œλ“€μ΄ μƒκ°ν•˜λŠ” κΉ¨λ—ν•œ μ½”λ“œλ₯Ό μ •μ˜ν•œλ‹€.

이 책은 우리 였브젝트 λ©˜ν†  μ§„μ˜μ΄ μƒκ°ν•˜λŠ” κΉ¨λ—ν•œ μ½”λ“œλ₯Ό μ„€λͺ…ν•œλ‹€. μš°λ¦¬κ°€ κ°€λ₯΄μΉ˜λŠ” 기법을 λ”°λ₯Έλ‹€λ©΄ κΉ¨λ—ν•˜κ³  μˆ˜μ€€ 높은 μ½”λ“œλ₯Ό μž‘μ„±ν•˜λ¦¬λΌ 감히 μž₯λ‹΄ν•œλ‹€. ν•˜μ§€λ§Œ 우리 생각이 μ ˆλŒ€μ μœΌλ‘œ μ˜³λ‹€λΌλŠ” 단정을 κΈˆλ¬Όμ΄λ‹€. μš°λ¦¬λ“€ λͺ»μ§€μ•Šκ²Œ κ²½ν—˜ λ§Žμ€ 집단과 μ „λ¬Έκ°€κ°€ μ‘΄μž¬ν•œλ‹€. λ§ˆλ•…νžˆ κ·Έλ“€μ—κ²Œμ„œλ„ 배우라고 κΆŒν•œλ‹€.

πŸŽƒ μš°λ¦¬λŠ” μ €μžλ‹€β€‹

μ½”λ“œλ₯Ό μ½λŠ” μ‹œκ°„ λŒ€ μ½”λ“œλ₯Ό μ§œλŠ” μ‹œκ°„ λΉ„μœ¨μ΄ 10 λŒ€ 1을 ν›Œμ© λ„˜λŠ”λ‹€. μƒˆ μ½”λ“œλ₯Ό μ§œλ©΄μ„œ μš°λ¦¬λŠ” λŠμž„μ—†μ΄ κΈ°μ‘΄ μ½”λ“œλ₯Ό μ½λŠ”λ‹€. λΉ„μœ¨μ΄ μ΄λ ‡κ²Œ λ†’μœΌλ―€λ‘œ 읽기 μ‰¬μš΄ μ½”λ“œκ°€ 맀우 μ€‘μš”ν•˜λ‹€. 이 λ…Όλ¦¬μ—μ„œ λΉ μ Έλ‚˜κ°ˆ 방법은 μ—†λ‹€. μ£Όλ³€ μ½”λ“œλ₯Ό 읽지 μ•ŠμœΌλ©΄ μƒˆ μ½”λ“œλ₯Ό μ§œμ§€ λͺ»ν•œλ‹€. μ£Όλ³€ μ½”λ“œκ°€ 읽기 μ‰¬μš°λ©΄ μƒˆ μ½”λ“œλ₯Ό μ§œκΈ°λ„ 쉽닀. μ£Όλ³€ μ½”λ“œλ₯Ό 읽기가 μ–΄λ €μš°λ©΄ μƒˆ μ½”λ“œλ₯Ό μ§œκΈ°λ„ μ–΄λ ΅λ‹€. κ·ΈλŸ¬λ―€λ‘œ κΈ‰ν•˜λ‹€λ©΄, μ„œλ‘˜λŸ¬ 끝내렀면, μ‰½κ²Œ 짜렀면, 읽기 μ‰½κ²Œ λ§Œλ“€λ©΄ λœλ‹€.

πŸŽƒ 보이슀카우트 κ·œμΉ™β€‹

잘 μ§  μ½”λ“œκ°€ μ „λΆ€λŠ” μ•„λ‹ˆλ‹€. μ‹œκ°„μ΄ μ§€λ‚˜λ„ μ–Έμ œλ‚˜ κΉ¨λ—ν•˜κ²Œ μœ μ§€ν•΄μ•Ό ν•œλ‹€. μ‹œκ°„μ΄ μ§€λ‚˜λ©΄μ„œ μ—‰λ§μœΌλ‘œ μ „λ½ν•˜λŠ” μ½”λ“œκ°€ ν•œλ‘˜μ΄ μ•„λ‹ˆλ‹€. κ·ΈλŸ¬λ―€λ‘œ μš°λ¦¬λŠ” 적극적으둜 μ½”λ“œμ˜ 퇴보λ₯Ό 막아야 ν•œλ‹€.

μΊ ν”„μž₯을 처음 왔을 λ•Œλ³΄λ‹€ 더 κΉ¨λ—ν•˜κ²Œ 해놓고 λ– λ‚˜λΌ.

체크아웃할 λ•Œλ³΄λ‹€ μ’€ 더 κΉ¨λ—ν•œ μ½”λ“œλ₯Ό μ²΄ν¬μΈν•œλ‹€λ©΄ μ½”λ“œλŠ” μ ˆλŒ€ λ‚˜λΉ μ§€μ§€ μ•ŠλŠ”λ‹€. ν•œκΊΌλ²ˆμ— λ§Žμ€ μ‹œκ°„κ³Ό λ…Έλ ₯을 νˆ¬μžν•΄ μ½”λ“œλ₯Ό 정리할 ν•„μš”κ°€ μ—†λ‹€. λ³€μˆ˜ 이름 ν•˜λ‚˜λ₯Ό κ°œμ„ ν•˜κ³ , 쑰금 κΈ΄ ν•¨μˆ˜ ν•˜λ‚˜λ₯Ό λΆ„ν• ν•˜κ³ , μ•½κ°„μ˜ 쀑볡을 μ œκ±°ν•˜κ³ , λ³΅μž‘ν•œ ifλ¬Έ ν•˜λ‚˜λ₯Ό μ •λ¦¬ν•˜λ©΄ μΆ©λΆ„ν•˜λ‹€.

πŸŽƒ 프리퀄과 원칙​

λ§Žμ€ λ©΄μ—μ„œ 이 책은 λ‚΄κ°€ 2002λ…„ μΆœνŒν•œ Agile Software Development: Principles, Patterns, and Practices(PPP)의 프리퀄이닀. 이 책을 λ¨Όμ € 읽은 ν›„ λ‚˜μ€‘μ— 읽어보길 λ°”λž€λ‹€.

πŸŽƒ 결둠​

책은 단지 λ‹€λ₯Έ μ˜ˆμˆ κ°€κ°€ μ‚¬μš©ν•˜λŠ” 도ꡬ와 기법, 그리고 μƒκ°ν•˜λŠ” 방식을 μ†Œκ°œν•  뿐이닀. 이 μ±… μ—­μ‹œ λ§ˆμ°¬κ°€μ§€λ‹€. 이 책을 μ½λŠ”λ‹€κ³  λ›°μ–΄λ‚œ ν”„λ‘œκ·Έλž˜λ¨Έκ°€ λœλ‹€λŠ” 보μž₯은 μ—†λ‹€. μ½”λ“œ 감각을 ν™•μ‹€νžˆ μ–»λŠ”λ‹€λŠ” 보μž₯도 μ—†λ‹€. 단지 λ›°μ–΄λ‚œ ν”„λ‘œκ·Έλž˜λ¨Έκ°€ μƒκ°ν•˜λŠ” 방식과 그듀이 μ‚¬μš©ν•˜λŠ” 기술과 기ꡐ와 도ꡬλ₯Ό μ†Œκ°œν•  뿐이닀. λ‚˜λ¨Έμ§€λŠ” μ—¬λŸ¬λΆ„μ—κ²Œ 달렸닀.