ο£Ώ Apple Lover Developer & Artist

μ˜μ†μ μΈ λ””μžμΈμ— ν˜„λŒ€μ˜ 곡감을 μ±„μ›Œλ„£λŠ” κ³΅λ°©μž…λ‹ˆλ‹€

🐢 Experience/Life Story

[연말 κ²°μ‚°] 2022λ…„ 3λΆ€μž‘ - 1λΆ€ 쒋은 방법

singularis7 2022. 12. 25. 23:37
λ°˜μ‘ν˜•

Overview

2022λ…„ ν•œ ν•΄λ₯Ό νšŒκ³ ν•΄λ³΄λ‹ˆ 좔상화 와 λ””μžμΈ 의 맀λ ₯에 λΉ μ Έμžˆμ—ˆλ‹€. κΈ°λŒ€κ°κ³Ό 두렀움을 느끼며 μΈμƒμ˜ 길을 μ°Ύμ•„κ°€λŠ” 과정을 μ±…κ³Ό κ²½ν—˜μ„ 톡해 μ†Œκ°œν•΄λ³΄κ³ μž ν•œλ‹€.


쒋은 방법 μ°ΎλŠ” κΈΈ

도ꡬ와 맀뉴얼에 κ΄€ν•œ κ²½ν—˜

μ‚¬λžŒλ“€μ€ 도ꡬλ₯Ό κ°œλ°œν•˜κ³  ν™œμš©ν•˜μ—¬ 일의 생산성을 λ†’μ—¬μ™”λ‹€. 도ꡬλ₯Ό 잘 ν™œμš©ν•˜κΈ° μœ„ν•΄μ„  κΈ°λ³Έ μˆ˜μ€€μ˜ μ‚¬μš©λ²•μ„ 잘 νŒŒμ•…ν•˜κ³  μžˆμ–΄μ•Ό ν•œλ‹€. 맀뉴얼은 이 μΈ‘λ©΄μ—μ„œ κ°€μ΄λ“œλ₯Ό μ œκ³΅ν•΄μ£Όμ–΄ 인λ₯˜μ˜ μ‹œκ°„μ„ λ²Œμ–΄μ£Όλ©° 우리 삢이 μœ€νƒν•΄μ§€λ„λ‘ 도와쀀닀. ν”„λ‘œκ·Έλž¨μ„ κ°œλ°œμ„ μœ„ν•΄ 맀뉴얼을 읽으며 μ½”λ”©ν•˜λ‹€ 도ꡬ와 인간 그리고 결과물에 κ΄€ν•œ 생각을 ν•˜κ²Œ λ˜μ—ˆλ‹€.

μ§€κ΄€μˆ˜ν–‰

항상 μ΅œμ„ μ˜ 도ꡬ와 방법을 μ‚¬μš©ν•˜μ—¬ ν”„λ‘œκ·Έλž¨μ„ λ§Œλ“€μ—ˆλ‹€κ³  μƒκ°ν–ˆλ‹€. κ·ΈλŸ¬λ‚˜ 결과물을 보면 말둜 ν‘œν˜„ν•˜κΈ° μ–΄λ €μš΄ 뢀쑱함이 λŠκ»΄μ‘Œλ‹€. μ œν’ˆμ„ κ°œλ°œν•˜λŠ” κ³Όμ •μ—λŠ” 도ꡬλ₯Ό 잘 ν™œμš©ν•˜λŠ” 것 이외에도 λ‹΄μ•„μ•Ό ν•  μš”μ†Œκ°€ μžˆμŒμ„ μΈμ‹ν•˜κ²Œ λ˜μ—ˆλ‹€.

ν•„μžκ°€ μ˜¬ν•΄ ν•˜κ³  μ‹Άμ—ˆλ˜ 것은 "쒋은 이유λ₯Ό μ„€λͺ…ν•  수 μžˆλŠ” 쒋은 μ œν’ˆμ„ 쒋은 λ°©λ²•μœΌλ‘œ λ§Œλ“œλŠ” 것" 이닀. λͺ©ν‘œλ“  μˆ˜λ‹¨μ΄λ“  쒋은 이유λ₯Ό μ„€λͺ…ν•˜κΈ° μœ„ν•΄μ„œλŠ” μ•Œμ•„μ•Όλ§Œ ν–ˆλ‹€. ν•„μžκ°€ κ²½ν—˜ν•œ 뢀쑱함은 무엇인지 μ‹λ³„ν•˜κ³  λ³΄μ™„ν•˜κΈ° μœ„ν•œ λ…μ„œ λͺ¨ν—˜μ„ λ– λ‚˜κ²Œ λ˜μ—ˆλ‹€.

μ•„λŠ” 것이 힘 λ°°μ›Œμ•Ό μ‚°λ‹€ - μ˜ν™” μƒλ‘μˆ˜(1961) 쀑

Agile Software Development

μ†Œν”„νŠΈμ›¨μ–΄ μ—”μ§€λ‹ˆμ–΄λ§ λΆ„μ•Όμ˜ ꡬ루이신 엉클 λ°₯ μ„ μƒλ‹˜κ»˜μ„œ μ“°μ‹  λͺ…저이닀. 쒋은 방법을 ν–₯ν•œ μ‹œμ•Όλ₯Ό μ œν’ˆ κ·Έ μžμ²΄λΆ€ν„° 인간 μ‚¬μ΄μ˜ ν˜‘μ—… κ³Όμ •κΉŒμ§€ κ³ λ―Όν•΄λ³Ό 수 μžˆλ„λ‘ ν™•μž₯μ‹œμΌœ μ£Όμ—ˆλ‹€.

고객 쀑심 κ°€μΉ˜κ΄€μœΌλ‘œμ˜ μ „ν™˜

Agile-manifesto 선언을 톡해 μ†Œν”„νŠΈμ›¨μ–΄ μ—”μ§€λ‹ˆμ–΄λ§ κ³Όμ •μ—μ„œ 인간(고객) μ€‘μ‹¬μ˜ κ°€μΉ˜κ΄€μ„ μ„€μ •ν•˜μ˜€λ‹€. 고객을 μ€‘μ‹¬μœΌλ‘œ λ³€ν™”λ₯Ό μˆ˜μš©ν•˜λ©° λ―Όμ²©ν•œ ν˜‘μ—…μ„ 지ν–₯ν•˜λŠ” XP (읡슀트림 ν”„λ‘œκ·Έλž˜λ°)을 톡해 λΉ λ₯΄κ²Œ λ³€ν™”ν•˜λŠ” λΉ„μ¦ˆλ‹ˆμŠ€μ— 적응할 수 μžˆλŠ” μ†Œν”„νŠΈμ›¨μ–΄λ₯Ό κ°œλ°œν•œλ‹€.

전톡적인 μ†Œν”„νŠΈμ›¨μ–΄ μ—”μ§€λ‹ˆμ–΄λ§ 방식은 계약을 기반으둜 μ†Œν”„νŠΈμ›¨μ–΄λ₯Ό κ³„νš 및 κ΅¬ν˜„ν•œ ν›„ λ‚©ν’ˆν•˜λŠ” λ°©μ‹μ΄μ—ˆλ‹€. 주둜 κ΅­κ°€ 기관을 μƒλŒ€λ‘œ μ‚¬μš©λœ 방식인데 변화에 λŒ€μ‘ν•˜κΈ° μ–΄λ €μ› κ³  고객의 μš”κ΅¬μ‚¬ν•­ 변경에 μ†Œκ·Ήμ μΈ νƒœλ„λ‘œ μ΄μ–΄μ‘Œλ‹€.

고객의 λΉ„μ¦ˆλ‹ˆμŠ€ μš”κ΅¬μ‚¬ν•­μ„ 잘 λ°˜μ˜ν•˜μ§€ λͺ»ν•œ λ„κ΅¬λŠ” 문제λ₯Ό 잘 해결해주지 λͺ»ν•œλ‹€. κ³Όμ—° 이런 λ§₯락의 λ„κ΅¬λŠ” μ–΄λ–€ 쑴재 κ°€μΉ˜λ₯Ό 찾을 수 μžˆμ„ 것인지 μƒκ°ν•΄λ³΄κ²Œ λœλ‹€.

좔상화와 κ²½ν—˜μ˜ 관계

μ½”λ“œμ— OOP κΈ°μˆ μ„ μ ‘λͺ©ν•˜μ—¬ 좔상화 μˆ˜μ€€μ„ λ†’μ΄λŠ” ν–‰μœ„μ—μ„œ λΉ„μ¦ˆλ‹ˆμŠ€, 쑰직 λ“±μ˜ μΈκ°„μ˜ μƒν˜Έμž‘μš© κ²½ν—˜μ˜ ν•„μš”μ„±μ„ 생각할 수 μžˆλ„λ‘ 도와쀀닀.

SOLID 원칙을 μ†Œκ°œν•˜λ©° 변화에 μœ μ—°ν•œ λ””μžμΈμ˜ μ½”λ“œλ‘œ λ¦¬νŒ©ν„°λ§ ν•˜λŠ” 과정을 μ†Œκ°œν•œλ‹€. μ½”λ“œ 섀계가 μƒν•˜λŠ” μ‹ ν˜Έλ‘œμ„œ Code Smells λ₯Ό μ†Œκ°œν•˜λ©° 문제λ₯Ό μ‹λ³„ν–ˆμ„ λ•Œ 객체지ν–₯ νŒ¨λŸ¬λ‹€μž„μ„ ν™œμš©ν•΄μ„œ ν•΄κ²°ν•˜λŠ”λ° ν•„μš”ν•œ 원칙과 과정을 μ†Œκ°œν•œλ‹€.

개발 μ΄ˆκΈ°μ— κ³Όλ„ν•œ λ””μžμΈμ„ μ μš©ν•˜λŠ” 것을 μ§€μ–‘ν•œλ‹€. λΉ„μ¦ˆλ‹ˆμŠ€μ  λ³€ν™”κ°€ λ°œμƒν–ˆμ„ λ•Œ μ μ ˆν•œ λ””μžμΈμ„ μ μš©ν•˜λŠ” μ½”λ“œ λ¦¬νŒ©ν† λ§μ„ μˆ˜ν–‰ν•œλ‹€. νŠΉμ • λ°©ν–₯으둜 λ””μžμΈν–ˆλŠ”λ° μ–΄λ₯Έμ˜ μ‚¬μ •μœΌλ‘œ λ‹€λ₯Έ λ°©ν–₯으둜 μˆ˜μ •ν•΄μ•Ό ν•œλ‹€λ©΄ μ΄ˆκΈ°λ³΄λ‹€ λ§Žμ€ λΉ„μš©μ΄ ν•„μš”ν•  것이닀.

ν—€λ“œνΌμŠ€νŠΈ λ””μžμΈ νŒ¨ν„΄

Gang of Fourκ°€ μ†Œκ°œν•œ λ””μžμΈ νŒ¨ν„΄ κ°œλ…μ„ 보톡 μ‚¬λžŒμ΄ μ‰½κ²Œ 이해할 수 μžˆλ„λ‘ μ„€λͺ…ν•œ λͺ…저이닀. μ‹€μš©μ„œλ‘œμ¨ λ””μžμΈμ˜ 쀑간 과정을 μ‚΄νŽ΄λ³΄λ©° μ½”λ“œμ— λŒ€ν•œ λ¬Έν•΄λ ₯을 높이고 μ†Œν†΅ν•  수 μžˆλŠ” μ‚¬λžŒμ΄ λ˜λ„λ‘ 도움을 μ£Όμ—ˆλ‹€.

λ””μžμΈ μ§€μ‹μ˜ ν™μˆ˜μ—μ„œ 살아남기

쒋은 객체지ν–₯ λ””μžμΈ 사둀λ₯Ό 문제 및 ν•΄κ²° κ³Όμ •κ³Ό ν•¨κ»˜ λ³Ό 수 μžˆλŠ” 점은 μ’‹μ•˜λ‹€. λ‹€λ§Œ, λ§Žμ€ λ””μžμΈ 원칙과 νŒ¨ν„΄ 지식듀을 λ³΄λ©΄μ„œ 빈번히 길을 μžƒμ—ˆλ‹€. 지도가 ν•„μš”ν•΄μ§„ μ‹œμ μ—μ„œ κ΅­λ―ΌλŒ€ κΉ€μΈκ·œ κ΅μˆ˜λ‹˜μ˜ κ°•μ’Œλ₯Ό 톡해 SOLID μ›μΉ™μ˜ μ€‘μš”ν•œ κΉ¨μš°μΉ¨μ„ μ–»κ²Œ λ˜μ—ˆλ‹€. λ””μžμΈ νŒ¨ν„΄μ€ λ‹€μŒμ˜ μ›λ¦¬λ‘œ high cohesion loose coupling을 μ€€μˆ˜ν•˜λŠ” λ””μžμΈμ„ λ§Œλ“€ 수 μžˆλ„λ‘ λ•λŠ”λ‹€.

OCPλŠ” Goal, DIPλŠ” Mechanism, LSPλŠ” OCP의 Insurance

κ²°κ³Όλ₯Ό λ¨Όμ € 맛보고 λ°œμƒν•œ 문제점

SOLID μ›μΉ™μ˜ κ΄€μ μœΌλ‘œ λ””μžμΈ νŒ¨ν„΄μ„ λ°”λΌλ³΄μ•˜λ‹€. λ‹€λ₯Έ μ’…λ₯˜μ˜ νŒ¨ν„΄λ“€μ˜ 원리가 λ™μΌν•˜κ²Œ 보인닀. 이 관점은 κ±°μ‹œμ μΈ 원리 이해λ₯Ό 도왔닀고 μƒκ°ν•˜μ§€λ§Œ 각 νŒ¨ν„΄μ˜ 세뢀적인 μš”μ†Œλ₯Ό μ΄ν•΄ν•˜λŠ”λ° λ°©ν•΄λ˜κΈ°λ„ ν•˜μ˜€λ‹€.

λΉ„μœ ν•˜μžλ©΄ λ‹€λ₯Έ λ¬Έν™”κΆŒ μ‚¬λžŒλ“€μ˜ 얼꡴을 λ³΄μ•˜μ„ λ•Œ, μ–Όκ΅΄ μ†μ˜ 눈, μ½”, μž…κ³Ό μ–Όκ΅΄ν˜•μ€ μ‚¬λžŒλ§ˆλ‹€ λͺ¨λ‘ λ‹€λ₯΄λ‹€. 그듀을 λ‹¨μˆœνžˆ 동양인 ν˜Ήμ€ μ„œμ–‘μΈ κ΄€μ μœΌλ‘œλ§Œ λ³Έλ‹€λ©΄ ν•΄λ‹Ή κ΄€μ μ—μ„œλŠ” λ§žμ„μ§€λΌλ„ 세뢀적인 μ–Όκ΅΄μ˜ λ―Έλ₯Ό 보지 λͺ»ν•œλ‹€κ³  μƒκ°ν•œλ‹€.

수련 μ˜μ—­μ˜ λ””μžμΈ

λ””μžμΈ νŒ¨ν„΄ κ°œλ…μ„ μ§€μ‹μ˜ μ˜μ—­μ—μ„œ 수련의 μ˜μ—­μœΌλ‘œ λ‹€λ£¨κ²Œ λ˜μ—ˆλ‹€. μ±… ν•œ ꢌ λ§Œμ„ μ½μ–΄μ„œ λͺ¨λ“  지식을 μ΄ν•΄ν•˜κ³  Production μ—­λŸ‰μ„ 극적으둜 끓어 올릴 수 μžˆλ‹€λ©΄ 쒋을 것이닀. ν•˜μ§€λ§Œ 지식을 μ‹€μ œλ‘œ ν™œμš©ν•˜λ €λ©΄ 지속적인 수련과 μ˜μ‹μ μΈ λ…Έλ ₯이 ν•„μš”ν•˜λ‹€.

책을 μ½μœΌλ©΄μ„œ λͺ©ν‘œν•œ 점은 νŠΉμ • μ½”λ“œλ₯Ό λ³Ό λ•Œ 적용된 λ””μžμΈ νŒ¨ν„΄μ„ 찾을 수 있고 μ‚¬λžŒκ³Ό μ†Œν†΅ν•  λ•Œ κ°œλ…μ„ 이해할 수 μžˆλ„λ‘ 지식을 μŒ“λŠ” κ²ƒμ΄μ—ˆλ‹€. 점차 λ””μžμΈ νŒ¨ν„΄μ„ ν•„μš”ν•œ μ‹œμ μ— μ μ ˆν•˜κ²Œ μ‚¬μš©ν•  수 μžˆλŠ” μ‚¬λžŒμ΄ 될 수 μžˆλ„λ‘ λ…Έλ ₯ν•  것이닀.

μˆ˜ν•™μœΌλ‘œ μƒκ°ν•˜κΈ°

κΈ°μˆ μ€ 문제λ₯Ό ν•΄κ²°ν•˜λŠ”λ° 도움 μ€€λ‹€. μ‚¬λžŒμ€ λ¬Έμ œκ°€ 효과적으둜 해결될 수 μžˆλ„λ‘ κΈ°μˆ μ„ μ°½μ‘°ν•˜κ±°λ‚˜ μ μš©ν•œλ‹€. 이 책은 μ‚¬λžŒμ΄ 문제의 λ³Έμ§ˆμ„ μ΄ν•΄ν•˜κ³  ν•΄κ²°ν•  수 μžˆλŠ” νž˜μ„ ν‚€μ›Œμ£Όμ—ˆλ‹€.

좔상화λ₯Ό κ°€λŠ₯ν•˜κ²Œ ν•˜λŠ” 힘

μˆ˜ν•™μ„ μž˜ν•˜λŠ” μ‚¬λžŒλ„ μ²˜μŒλΆ€ν„° 좔상적 κ°œλ…μ„ μƒκ°ν•΄μ„œ 문제λ₯Ό ν’€κΈ°λž€ 쉽지 μ•Šλ‹€. ꡬ체적 사둀λ₯Ό 톡해 μΌλ°˜ν™”μ‹œμΌœ 문제λ₯Ό ν•΄κ²°ν•˜λŠ” 귀납적 사고λ₯Ό ν•˜λ©΄ 문제λ₯Ό ν•΄κ²°ν•˜λŠ”λ° 도움받을 수 μžˆλ‹€.

특히 ν”„λ‘œκ·Έλž˜λ¨Έμ—κ²ŒλŠ” 도ꡬ가 문제λ₯Ό 직접 해결해주지 μ•ŠκΈ° λ•Œλ¬Έμ— 귀납적 사고가 근윑과 κ°™λ‹€κ³  μƒκ°ν•œλ‹€. 지식을 κ°€λŠ₯ν•˜κ²Œ ν•˜λŠ” 힘으둜써 μƒκ°ν•˜λŠ” 힘의 μ€‘μš”μ„±μ„ 느끼게 λ˜μ—ˆλ‹€.

μ°Έμ‘°

λ°˜μ‘ν˜•