๋‹ค์‹œ ํ•ต์‹ฌ๋งŒ ๊ฐ„๊ฒฐํ•˜๊ฒŒ ๋ณต๊ธฐํ•˜๊ธฐ ์œ„ํ•œ ๋ชฉ์ ์œผ๋กœ ์ •๋ฆฌํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ์š”์•ฝํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ๊ธ€์„ ์ž‘์„ฑํ•œ๋‹ค.

์—ญ/์‹์ž์˜ ๋ง

  • ์ ˆ๋Œ€์ ์ด๋ผ ๋ฏฟ์œผ๋ฉด ์•ˆ๋œ๋‹ค ๊ฐœ์„ ์˜ ์—ฌ์ง€๊ฐ€ ์žˆ์„ ๊ฒƒ์ด๋ผ ์ƒ๊ฐํ•ด์•ผ ํ•œ๋‹ค.
  • ์ด ์š”์†Œ๋“ค์„ ์†Œ๊ฐœํ•˜๋Š” ์ด์œ ๋Š” ํŒ€/๊ณต๋™์ฒด์—์„œ ์„œ๋กœ ๋™์˜ํ•˜๋Š” ํ•ฉ๋ฆฌ์ ์ธ ์›์น™์„ ์„ธ์šฐ๊ธฐ ์œ„ํ•จ์ด๋‹ค. ์ฆ‰, ๊ต์–‘ ์„œ์ ์ด๋ผ ๋ณด๋Š” ๊ฒƒ์ด ๋ณด๋‹ค ํ•ฉ๋‹นํ•˜๋‹ค.
  • ์œ ์ง€๋ณด์ˆ˜ ์ž‘์—…์œผ๋กœ ์‹ ๊ฒฝ ์‡ ์•ฝ์— ๊ฑธ๋ฆฌ๊ณ  ์žˆ๋‹ค๋ฉด, ์ฑ…์—์„œ ์†Œ๊ฐœํ•˜๋Š” ๋‚ด์šฉ์ด ๋งˆ์Œ์— ์™€๋‹ฟ์„ ๊ฒƒ์ด๋‹ค.
  • ์•ž๋ถ€๋ถ„์—์„œ๋Š” ํŒจํ„ด๊ณผ ๊ทœ์น™์„ ์ตํžˆ๊ณ , ์‹ค์ œ ์ฝ”๋“œ๋ฅผ ์ •๋ฆฌํ•˜๋Š” ๋ถ€๋ถ„์€ ํ›„๋ฐ˜๋ถ€์ด๋‹ค. ํ›„๋ฐ˜๋ถ€์— ์ง‘์ค‘ํ•˜์ž.
  • ๊ฐœ๋ฐœ์ž์—๊ฒŒ โ€œ์ˆ˜ํ•™์˜ ์ •์„โ€๊ณผ ๊ฐ™์€ ์ฑ…์ด๋‹ค. ๋ฐฉ์‹์„ ์ดํ•ดํ•ด์•ผ ์†Œํ™”ํ•  ์ˆ˜ ์žˆ๋Š” ์ฑ…์ด๋‹ค.
  • ํ•ญ์ƒ ๋‚˜๋ผ๋ฉด ์–ด๋–ป๊ฒŒ ํ–ˆ์„๊นŒ๋ฅผ ๊ธฐ์–ตํ•˜์ž.
  • ์„ธ์„ธํ•จ์— ์ฃผ์˜๋ฅผ ๊ธฐ์šธ์ด๋Š” ํƒœ๋„๋Š” ํ˜„์žฌ ์ „๋ฌธ๊ฐ€์—๊ฒŒ ํ•„์ˆ˜์ ์ธ ์ž์งˆ์ด๋‹ค. Clean code๊ฐ€ ์ค‘์š”ํ•œ ์ด์œ ๋Š” ์—ฌ๊ธฐ์— ์žˆ๋‹ค.
  • ์†Œํ”„ํŠธ์›จ์–ด์€ ์ œ์กฐ์—…์—์„œ ์˜ํ–ฅ์„ ๋ฐ›์•˜๋‹ค. ๋‹ค๋งŒ ์œ ์ง€๋ณด์ˆ˜์˜ ๋น„์œจ์ด ๊ทน๋‹จ์ ์œผ๋กœ ๋†’์€ ์—…๊ณ„์ด๋‹ค.
    • Scrum: ์ผ๋ณธ ์ž๋™์ฐจ ์ œ์กฐ์—… ์˜ํ–ฅ
    • Agile: ๋น ๋ฅธ Delivery๋ฅผ ์œ„ํ•œ ๋ฐฉ๋ฒ•๋ก 
    • Lean: TPM(Total Productive Management: ์œ ์ง€๋ณด์ˆ˜์— ์ดˆ์ ์„ ๋งž์ถ˜ ํ’ˆ์งˆ ๊ด€๋ฆฌ๋ก )์— ์˜ํ–ฅ์„ ๋ฐ›์€ ์›์น™
  • ์ฑ…์ž„์žˆ๋Š” ๊ฐœ๋ฐœ์ž๋ผ๋ฉด ์ œํ’ˆ ์ƒ๋ช… ์ฃผ๊ธฐ๊นŒ์ง€ ๊ณ ๋ คํ•ด์•ผ ํ•œ๋‹ค.
  • ์ œ์กฐ์—…์—์„œ ์žฌ์ž‘์—…์€ ๋น„์šฉ์ด๋‚˜, ์†Œํ”„ํŠธ์›จ์–ด์—์„œ ์žฌ์ž‘์—…์€ ๊ฐ€์น˜๋ฅผ ๊ฐ€์ ธ์˜จ๋‹ค.
  • ์–ด๋–ป๊ฒŒ ๋ณด๋ฉด ์ด ์ฑ…์€ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์ด์•ผ๊ธฐ๊ฐ€ ์•„๋‹ˆ๋ผ, ์‚ถ์˜ ํƒœ๋„์— ๋Œ€ํ•ด ์ง๊ฐ„์ ‘์ ์œผ๋กœ ์ „ํ•˜๊ธฐ ์œ„ํ•ด ๋งŒ๋“ค์–ด์กŒ๋Š”์ง€๋„ ๋ชจ๋ฅด๊ฒ ๋‹ค.

Introduction

์ฝ”๋“œ ํ’ˆ์งˆ์„ ์ธก์ •ํ•˜๋Š” ์œ ์ผํ•œ ์ฒ™๋„๋Š” WTF ํšŸ์ˆ˜/minute ์ด๋‹ค.

๋‚˜๋Š” ์–ด๋–ป๊ฒŒ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๊ณ  ์žˆ๋Š”๊ฐ€? ๋‚ฎ์€ ์ฒ™๋„๋ฅผ ๊ฐ€์ง€๋Š”๊ฐ€, ๋†’์€ ์ฒ™๋„๋ฅผ ๊ฐ€์ง€๋Š”๊ฐ€? ํŒ€์ด๋‚˜ ํšŒ์‚ฌ๋Š” ์–ด๋–ค๊ฐ€. ์–ด๋–ป๊ฒŒ ๋†’์€ ์ˆ˜์น˜๋ฅผ ๊ฐ€์ง€๋Š” ๋งˆ์Œ์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋Š”๊ฐ€? ๋‹ต์€ ์žฅ์ธ ์ •์‹ ์ด๋‹ค. ์žฅ์ธ ์ •์‹ ์„ ์ตํžˆ๊ธฐ ์œ„ํ•œ ๊ณผ์ •์€ ๋‘ ๋‹จ๊ณ„๋กœ ๋‚˜๋‰œ๋‹ค.

  • ์ด๋ก : ์›์น™, ํŒจํ„ด, ๊ธฐ๋ฒ•, ๊ฒฝํ—˜์ด๋ผ๋Š” ์ง€์‹์„ ์Šต๋“ํ•œ๋‹ค.
  • ์‹ค์ „: ์ง€์‹์„ ์‹ค์ฒœํ•˜์—ฌ ์ฒด๋“ํ•œ๋‹ค.

์•„๋Š” ๊ฒƒ๊ณผ ํ•˜๋Š” ๊ฒƒ์€ ์ฐจ์›์ด ๋‹ค๋ฅด๋‹ค. ์ด ์ฑ…์€ ๊ณ ์ƒํ•˜๋ฉด์„œ ์ฝ๋Š” ์ฑ…์ž„์„ ๋ช…์‹ฌํ•ด์•ผ ํ•œ๋‹ค. ์ฑ…์˜ ๊ตฌ์„ฑ์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

  1. ๊นจ๋—ํ•œ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ์›์น™, ํŒจํ„ด, ์‹ค๊ธฐ๋ฅผ ์„ค๋ช…ํ•œ๋‹ค. ์—ฌ๊ธฐ์„œ ๊ทธ๋งŒ๋‘๋ฉด good luck์ด๋‹ค.
  2. ์—ฌ๋Ÿฌ ์‚ฌ๋ก€ ์—ฐ๊ตฌ๋ฅผ ์†Œ๊ฐœํ•œ๋‹ค. ์ง‘์ค‘๋ ฅ์„ ์š”๊ตฌํ•˜๋Š” ์žฅ์ด๋‹ค. ์ฝ”๋“œ์™€ ์„ค๋ช…์„ ๋ฒˆ๊ฐˆ์•„๊ฐ€๋ฉฐ ๋ณด๋ฉด์„œ ๊ทธ ํŒ๋‹จ์˜ ์ด์œ ๋ฅผ ์ถ”์ ํ•ด์•ผ ํ•œ๋‹ค.
  3. ๊ฒฐ๋ง์ด๋‹ค. ๊ท€๋‚ฉ์ ์œผ๋กœ ๋„์ถœ๋œ ๊ฒฐ๋ก ์„ ์ •๋ฆฌํ•œ๋‹ค. ํœด๋ฆฌ์Šคํ‹ฑ์ ์œผ๋กœ ๋Š๋ผ๋Š” ๊ฒƒ๋“ค์„ ๋ช…๋ฃŒํ•˜๊ฒŒ ์ •๋ฆฌํ•˜๋ ค ์• ์ผ๋‹ค.

๊ฐ๊ฐ์˜ ์ฑ•ํ„ฐ๋Š” ์ข…์†๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์—, ์•ž ๋ถ€๋ถ„๋ถ€ํ„ฐ ์ œ๋Œ€๋กœ ์ฝ๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ด ๋ณด์ธ๋‹ค. ๊ฒฐ๊ตญ์€ ๋จธ๋ฆฌ์— ๋ฒ•๋ฅ  ์‚ฌ๋ก€์ง‘์ฒ˜๋Ÿผ ๊ธฐ์–ตํ•˜๊ณ  ์žˆ๋Š” ๊ฒƒ์ด ์ข‹์•„๋ณด์ธ๋‹ค.

Clean Code

์ด ์ฑ…์„ ์™œ ์ฝ๋Š”๊ฐ€? ํ”„๋กœ๊ทธ๋ž˜๋จธ๋ผ์„œ? ๋” ๋‚˜์€ ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ๋˜๋ ค๊ณ ? ๊ทธ๋ ‡๋‹ค๋ฉด ์ž˜ ์ฐพ์•„์™”๋‹ค.

ํ•˜๋‚˜์˜ ์ฝ”๋“œ๋ฅผ ๋‘๊ณ  ๋‹ค๊ฐ๋„๋กœ ๊ฒ€์ฆํ•˜๋ฉด์„œ ๊บ ๋‹ฌ์Œ์„ ๊ฐˆ๊ตฌํ•˜๋Š” ์ฑ…์ด๋‹ค. ๋˜ํ•œ ๊ทธ ๊ณผ์ •์—์„œ ์ข‹์€ ์ฝ”๋“œ, ๋‚˜์œ ์ฝ”๋“œ๋ฅผ ๊ตฌ๋ถ„ํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋‹ค. ๋งˆ์ง€๋ง‰์œผ๋กœ ๋‚˜์œ ์ฝ”๋“œ๋ฅผ ์ข‹์€ ์ฝ”๋“œ๋กœ ๋ฐ”๊พธ๋Š” ์‹ค๋ ฅ๋„ ์ฑ™๊ธธ ์ˆ˜ ์žˆ๋‹ค.

์ฝ”๋“œ๊ฐ€ ์กด์žฌํ•˜๋ฆฌ๋ผ

๋ฏธ๋ž˜์—๋Š” ์ฝ”๋“œ๋ฅผ ์ž๋™์œผ๋กœ ์ƒ์„ฑํ•ด์ฃผ์ง€ ์•Š์„๊นŒ? ์ด ์ฑ…์„ ์ฝ๋Š” ์‹œ๊ธฐ ์ƒ์กฐ๊ฐ€ ์•„๋‹™๋‹ˆ๊นŒ?

๊ทธ๋Ÿด๋ฆฌ๊ฐ€ ์—†๋‹ค. ์ฝ”๋“œ๋Š” ์š”๊ตฌ ์‚ฌํ•ญ์„ ์ƒ์„ธํžˆ ํ‘œํ˜„ํ•˜๋Š” ์ˆ˜๋‹จ์ด๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ์–ด๋Š ์ˆ˜์ค€์— ์ด๋ฅด๋ฉด, ์ฝ”๋“œ์˜ ๋„์›€ ์—†์ด ์š”๊ตฌ์‚ฌํ•ญ์„ ํ‘œํ˜„ํ•˜๋Š” ๊ฒƒ์€ ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค. ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์˜ ์ถ”์ƒํ™” ์ˆ˜์ค€์ด ๋Š˜์–ด๋‚˜๊ณ , DSL(Domain-specific language)๊ฐ€ ๋งŽ์•„์ง์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ๊ฒฐ๊ตญ์€ ๊ธฐ๊ณ„๊ฐ€ ์ดํ•ดํ•˜๊ณ  ์‹คํ–‰ํ•  ์ •๋„๋กœ ์—„๋ฐ€ํ•˜๊ณ  ์ •ํ™•ํ•˜๋ฉฐ ์ƒ์„ธํ•œ ์ฝ”๋“œ๊ฐ€ ๋“ฑ์žฅํ•ด์•ผ ํ•œ๋‹ค.

์œ„์˜ ๋ฐœ์–ธ์„ ํ•œ ์‚ฌ๋žŒ์€, ์ฝ”๋“œ๊ฐ€ ๋งˆ๋ฒ•์ด๋ผ ์ƒ๊ฐํ•˜๋Š” ์ฐฉ๊ฐ ๋•Œ๋ฌธ์— ๋ฐœ์ƒํ•œ ์˜ค๋ฅ˜๋กœ ๋ณด์ธ๋‹ค. ์ฝ”๋“œ๋Š” ์š”๊ตฌ์‚ฌํ•ญ์„ ํ‘œํ˜„ํ•˜๋Š” ์–ธ์–ด์ด๋‹ค. ๊ทธ ๊ณผ์ •์—์„œ ์š”๊ตฌ์‚ฌํ•ญ์— ๊ฐ€๊นŒ์šด ์–ธ์–ด๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์œผ๋‚˜ ๊ฒฐ๊ตญ์€ ์ •๋ฐ€ํ•œ ํ‘œํ˜„์ด ํ•„์š”ํ•˜๋‹ค. ์ฝ”๋“œ๋Š” ํ•ญ์ƒ ์กด์žฌํ•œ๋‹ค.

๋‚˜์œ ์ฝ”๋“œ

์ถœ์‹œ์— ๋ฐ”๋น  ๋งˆ๊ตฌ ์ง  ์ฝ”๋“œ โ†’ ์ถœ์‹œ์ผ ์ง€์—ฐ โ†’ ํšŒ์‚ฌ ํŒŒ์‚ฐ

๋ณธ์งˆ์ ์ธ ์›์ธ์€ ๋‚˜์œ ์ฝ”๋“œ ํƒ“์ด์—ˆ๋‹ค. ์™œ ๋‚˜์œ ์ฝ”๋“œ๋ฅผ ์งœ๋Š”๊ฐ€? ๋ฐ”๋น ์„œ? ๊ธ‰ํ•ด์„œ? ์ง€๊ฒจ์›Œ์„œ? ์ƒ์‚ฌ์—๊ฒŒ ์š•๋จน์„๊นŒ๋ด? ์ด๋ ‡๊ฒŒ ๋„˜์–ด๊ฐ€๊ณ  ๋‚˜์ค‘์— ์†๋ณด๊ฒ ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๊ฒฝํ—˜์ด ์žˆ์„ ๊ฒƒ์ด๋‹ค. ์•ˆ๋Œ์•„๊ฐ€๋Š” ์“ฐ๋ ˆ๊ธฐ๋ณด๋‹ค ๋Œ์•„๊ฐ€๋Š” ์“ฐ๋ ˆ๊ธฐ๊ฐ€ ์ข‹๋‹ค๊ณ  ์ž์œ„ํ•œ ๊ฒฝ์šฐ๊ฐ€ ์žˆ์„ ๊ฒƒ์ด๋‹ค. ๊ผญ ๊ณ ์น˜๊ฒ ๋‹ค๊ณ  ๋‹ค์งํ–ˆ์—ˆ๋‹ค. ํ•˜์ง€๋งŒ ๊ทธ ๋•Œ๋Š” ์˜ค์ง€ ์•Š๋Š”๋‹ค.

๋ฅด๋ธ”๋ž‘์˜ ๋ฒ•์น™(Leblancโ€™s Law) = ๋‚˜์ค‘์€ ๊ฒฐ์ฝ” ์˜ค์ง€ ์•Š๋Š”๋‹ค. ๋‚˜์ค‘์— ์†๋ณด๊ฒ ๋‹ค๊ณ  ํ•œ ์ฝ”๋“œ + ๋Œ์•„๊ฐ„๋‹ค๋Š” ์‚ฌ์‹ค์— ์•ˆ๋„๊ฐ์„ ๋Š๋ผ๋ฉฐ ์œ„๋กœํ•จ โ†’ ๊ณ ์น˜์ง€ ์•Š๋Š”๋‹ค.

๋‚˜์œ ์ฝ”๋“œ๋กœ ์น˜๋ฅด๋Š” ๋Œ€๊ฐ€

์ด ๊ทธ๋ฆผ์ด ์ •๋‹ต์ด๋‹ค. ์ดˆ๊ธฐ์—๋Š” ๊ฐœ๋ฐœ ์†๋„๊ฐ€ ๋น ๋ฅผ์ง€ ๋ชจ๋ฅธ๋‹ค. ํ•˜์ง€๋งŒ ์‹œ๊ฐ„์ด ์ง€๋‚จ์— ๋”ฐ๋ผ ๋‚˜์œ ์ฝ”๋“œ๋Š” ๋ฐœ๋ชฉ์„ ์žก๋Š”๋‹ค. side effect๊ฐ€ ๊ณ„์† ๋ฐœ์ƒํ•œ๋‹ค. ์ด๋Ÿฌํ•œ ์ƒํ™ฉ์— ํ•ด๊ฒฐ์ฑ…์œผ๋กœ ์ œ์‹œํ•˜๋Š” ๊ฒƒ์€ ๊ฒฐ๊ตญ man power๋ฅผ ๋Š˜๋ฆฌ๋Š” ๊ฒƒ์ด๋‹ค. ํ•˜์ง€๋งŒ ์ƒˆ ์ธ๋ ฅ์€ ์‹œ์Šคํ…œ ์„ค๊ณ„์— ๋Œ€ํ•ด ๋ชจ๋ฅด๊ธฐ ๋•Œ๋ฌธ์— ์˜๋„์— ๋งž๋Š” ๋ณ€๊ฒฝ๊ณผ ๊ทธ์— ๋ฐ˜ํ•˜๋Š” ๋ณ€๊ฒฝ์„ ์•Œ์ง€ ๋ชปํ•œ๋‹ค. ๊ทธ ๋ฟ์ด ์•„๋‹ˆ๋‹ค. ์ƒ์‚ฐ์„ฑ์˜ ์••๋ฐ•์„ ๋ฐ›๊ณ  ์žˆ๋Š” ์‹œ์ ์— ํˆฌ์ž…๋œ ์ธ๋ ฅ์€ ๋” ํฐ ์••๋ฐ•์„ ๋ฐ›๋Š”๋‹ค. ๊ฒฐ๊ณผ๋Š” ๋” ๋งŽ์€ ๋‚˜์œ ์ฝ”๋“œ์˜ ๋ฐœ์ƒ์œผ๋กœ ์ด์–ด์ง„๋‹ค.

์›๋Œ€ํ•œ ์žฌ์„ค๊ณ„์˜ ๊ฟˆ

๋” ์ด์ƒ ๋ชปํ•˜๊ฒ ์–ด์š”.

ํŒ€์€ ์ด ์ฝ”๋“œ๋กœ๋Š” ์ผ์„ ๋ชปํ•˜๊ฒ ๋‹ค๋Š” ๋ฐ˜๊ธฐ๋ฅผ ๋“ ๋‹ค. ๊ด€๋ฆฌ์ธต์€ ์–ด์ฉ” ์ˆ˜ ์—†์ด ์ด ์ œ์•ˆ์„ ๋ฐ›์•„๋“ค์ธ๋‹ค. TFํŒ€์ด ๊ตฌ์„ฑ๋˜๊ณ , ์ƒˆ๋กœ์šด product๋ฅผ ๋งŒ๋“ ๋‹ค. ๋‚˜๋จธ์ง€๋Š” ์œ ์ง€ ๋ณด์ˆ˜๋ฅผ ๊ณ„์†ํ•œ๋‹ค. TFํŒ€์€ ๊ธฐ์กด ๊ธฐ๋Šฅ์„ ๋ชจ๋‘ ์ƒํšŒํ•˜๋Š” ์‹œ์Šคํ…œ์„ ๋‚ด๋†“์•„์•ผ ํ•œ๋‹ค. ์–ผ๋งˆ๊ฐ€ ๊ฑธ๋ฆด๊นŒ? ๋•Œ๋–„๋กœ 10๋…„์˜ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆด ์ˆ˜๋„ ์žˆ๋‹ค. ๋ฌด์—‡์„ ์„ ํƒํ•˜๊ฒ ๋Š”๊ฐ€? ์‹œ๊ฐ„์„ ๋“ค์—ฌ Clean Code๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ์€ ๊ถ๊ทน์ ์œผ๋กœ ๋น„์šฉ ์ ˆ๊ฐ, ์ „๋ฌธ๊ฐ€๋กœ์„œ ์‚ด์•„๋‚จ๋Š” ๊ธธ์ด๋ผ๋Š” ๊ฒƒ์„ ๋ช…์‹ฌํ•ด์•ผ ํ•œ๋‹ค.

ํƒœ๋„

๋ถ„๋ช… 3์‹œ๊ฐ„ ์ž‘์—…์ด๋ผ ์ƒ๊ฐํ–ˆ๋Š”๋ฐ ๊ฑด๋“œ๋Š” ์†Œ์ŠคํŒŒ์ผ์ด 30๊ฐœ๋„ค? ใ…Ž..

์ด ์นœ๊ตฌ๋Š” ์™œ ํ•œ์ˆœ๊ฐ„์— ๋‚˜์œ ์ฝ”๋“œ๋กœ ์ „๋ฝํ–ˆ์„๊นŒ?

  • ์›๋ž˜ ์„ค๊ณ„๋ฅผ ๋’ค์ง‘๋Š” ๋ฐฉํ–ฅ์œผ๋กœ ์š”๊ตฌ์‚ฌํ•ญ์ด ๋ณ€๊ฒฝ๋˜์–ด์„œ
  • ์ผ์ •์ด ์ด‰๋ฐ•ํ•ด์„œ
  • ๊ด€๋ฆฌ์ž์˜ ํƒ“

ํ•˜์ง€๋งŒ ์ด ๊ฒƒ์€ ์ „์ ์œผ๋กœ ํ”„๋กœ๊ทธ๋ž˜๋จธ์˜ ์ž˜๋ชป์ด๋‹ค. ์šฐ๋ฆฌ๊ฐ€ ์ „๋ฌธ๊ฐ€๋‹ต์ง€ ๋ชปํ–ˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ์ž˜๋ชป์ด ์ฝ”๋“œ์— ์žˆ๋‹ค๋ฉด, ์ด๋Š” ํ”„๋กœ๊ทธ๋ž˜๋จธ์˜ ์ฑ…์ž„์ด๋‹ค. ์˜คํžˆ๋ ค ์ด ์ข‹์€ ์ฝ”๋“œ๋ฅผ ์‚ฌ์ˆ˜ํ•˜์ง€ ๋ชปํ•˜์—ฌ ๋ฐœ์ƒํ•˜๋Š” ์ผ์ • ์ง€์—ฐ์„ ๊ด€๋ฆฌ์ž์—๊ฒŒ ์†”์งํ•˜๊ฒŒ ๋งํ•˜๋Š” ๊ฒƒ์ด ๋ณด๋‹ค ์ค‘์š”ํ•˜๋‹ค. ํ™˜์ž๊ฐ€ ์ˆ˜์ˆ ์ „์— ์˜์‚ฌ๋ณด๊ณ  ์†์”ป์ง€ ๋ง๋ผ๊ณ  ํ•˜๋ฉด ์† ์•ˆ์”ป์„ ๊ฑด๊ฐ€? ๊ฐ‘์˜ ์œ„์น˜์— ์žˆ๋‹คํ•˜๋”๋ผ๋„, ์‚ฌ์ˆ˜ํ•ด์•ผ ํ•˜๋Š” ์˜์—ญ์€ ๋ช…ํ™•ํžˆ ๋งํ•ด์•ผ ํ•œ๋‹ค. ๊ทธ๊ฒƒ์ด ์ „๋ฌธ๊ฐ€๋‹ค.

์›์ดˆ์  ๋‚œ์ œ

์•„ ์—ฌ๊ธฐ์„œ ๊ทธ๋ƒฅ ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ๊ธฐํ•œ์€ ๋งž์ถ”๋Š”๋ฐ ์–ด๋–กํ•˜์ง€..

ํ•˜์ง€๋งŒ ์ง„์งœ ์ „๋ฌธ๊ฐ€๋Š” ์ด๊ฒŒ ์˜คํžˆ๋ ค ๋Š๋ฆฐ ๋ฐฉ์‹์ด๋ผ๋Š” ๊ฒƒ์„ ์•ˆ๋‹ค. ๊ธฐํ•œ์„ ๋งž์ถ”๋Š” ์œ ์ผํ•œ ๋ฐฉ๋ฒ•์€, ์ฆ‰ ๋นจ๋ฆฌ๊ฐ€๋Š” ์œ ์ผํ•œ ๋ฐฉ๋ฒ•์€ ์–ธ์ œ๋‚˜ ์ฝ”๋“œ๋ฅผ ์ตœ๋Œ€ํ•œ ๊นจ๋—ํ•˜๊ฒŒ ์œ ์ง€ํ•˜๋Š” ์Šต๊ด€์„ ๊ฐ€์ง€๋Š” ๊ฒƒ์ด๋‹ค.

๊นจ๋—ํ•œ ์ฝ”๋“œ๋ผ๋Š” ์˜ˆ์ˆ ?

๊ทธ๋ž˜์„œ ์–ด๋–ป๊ฒŒ ์งœ๋Š”๊ฑด๋ฐ?

์ด ๋ชจ๋“  ์‚ฌ์‹ค์„ ๋‚ฉ๋“ํ–ˆ๋‹ค๊ณ  ํ•ด๋ณด์ž. ์ด์ œ ์–ด๋–ป๊ฒŒ ์ž‘์„ฑํ•˜๋Š”์ง€์— ๋Œ€ํ•ด ๊ณ ๋ฏผํ•  ์ฐจ๋ก€๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ์•ˆํƒ€๊น๊ฒŒ๋„ ๊นจ๋—ํ•œ ์ฝ”๋“œ๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ํ–‰์œ„๋Š” ๊ทธ๋ฆผ์„ ๊ทธ๋ฆฌ๋Š” ํ–‰์œ„์™€ ๋น„์Šทํ•˜๋‹ค. ๊ทธ๋ฆผ์˜ ๋ฏธ์ ์ธ ํŒ๋‹จ์„ ํ•˜๋Š” ๊ฒƒ์€ ๋Œ€๋ถ€๋ถ„์˜ ์‚ฌ๋žŒ์ด ๊ฐ€๋Šฅํ•˜์ง€๋งŒ, ๊ทธ๋ ‡๋‹ค๊ณ  ํ•ด์„œ ๋ชจ๋‘๊ฐ€ ์ž˜ ๊ทธ๋ฆฌ๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๋‹ค. ์ฆ‰, ์ฝ”๋“œ์˜ ํ’ˆ์งˆ ํŒ๋‹จ ๊ฐ€๋Šฅ ์—ฌ๋ถ€์™€ ํ’ˆ์งˆ์ด ์ข‹์€ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๋Šฅ๋ ฅ์€ ๋ณ„๊ฐœ์ด๋‹ค.

์ด๋ฅผ ์œ„ํ•ด์„œ๋Š” โ€œ์ฝ”๋“œ ๊ฐ๊ฐโ€์„ ์ผ๋‹จ ์–ป๊ณ , ์ตœ๊ณ  ๋ฐฉ์‹์œผ๋กœ ์ด๋ฅผ ์ ์šฉํ•ด์•ผ ํ•œ๋‹ค. ์ •๋ง ์ถ”์ƒ์ ์ด๊ณ  ์–ด๋ ต๋‹ค ใ… 

๊นจ๋—ํ•œ ์ฝ”๋“œ๋ž€?

๊ฐ ํ”„๋กœ๊ทธ๋ž˜๋จธ๋‹ค ์ƒ๊ฐ์ด ๋‹ค๋ฅด๊ธฐ ๋•Œ๋ฌธ์—, ๋‹ค์–‘ํ•œ ๋Œ€๊ฐ€๋“ค๋กœ๋ถ€ํ„ฐ ์˜๊ฒฌ์„ ๊ตฌํ–ˆ๋‹ค.

๋น„์•ผ๋„ค ์ŠคํŠธ๋กญ์ŠคํŠธ๋ฃน

C++ ์ฐฝ์‹œ์ž, The C++ Programming Laungague ์ €์ž

  • ์šฐ์•„ํ•œ ์ฝ”๋“œ๊ฐ€ ์ข‹๋‹ค. (๋ณด๊ธฐ์— ์ฆ๊ฑฐ์šด ์ฝ”๋“œ๊ฐ€ ์ข‹๋‹ค.)
  • ๊ฐ„๋‹จํ•œ ๋…ผ๋ฆฌ, ์˜์กด์„ฑ์„ ์ค„์ธ๋‹ค. ๊ทธ๊ฒƒ์ด ์œ ์ง€๋ณด์ˆ˜๋ฅผ ์‰ฝ๊ฒŒ ๋งŒ๋“ ๋‹ค.
  • ์˜ค๋ฅ˜๋Š” ๋ช…๋ฐฑํ•œ ์ „๋žต์— ์˜๊ฑฐํ•ด ์ฒ ์ €ํžˆ ์ฒ˜๋ฆฌํ•œ๋‹ค. (์„ธ์„ธํ•œ ์‚ฌํ•ญ๊นŒ์ง€ ๊ผผ๊ผผํ•˜๊ฒŒ ์‹ ๊ฒฝ์จ๋ผ)
  • ์„ฑ๋Šฅ์„ ์ตœ์ ์œผ๋กœ ์œ ์ง€ํ•œ๋‹ค. ๊ทธ๋ž˜์•ผ ์‚ฌ๋žŒ๋“ค์ด ํ—›์ง“๊ฑฐ๋ฆฌ ์•ˆํ•œ๋‹ค. (์—ญ์‹œ C++ ์ฐฝ์‹œ์ž)
  • ๊นจ๋—ํ•œ ์ฝ”๋“œ๋ฅผ ํ•˜๋‚˜๋ฅผ ์ œ๋Œ€๋กœ ํ•œ๋‹ค.

๊ทธ๋ž˜๋”” ๋ถ€์น˜

Object Oriented Analysis, Design with Application ์ €์ž

  • ๋‹จ์ˆœํ•˜๊ณ  ์ง์ ‘์ ์ธ ์ฝ”๋“œ๊ฐ€ ๊นจ๋—ํ•œ ์ฝ”๋“œ์ด๋‹ค.
  • ์ž˜ ์“ด ๋ฌธ์žฅ์ฒ˜๋Ÿผ ์ฝํžŒ๋‹ค. (๊ฐ€๋…์„ฑ์„ ๊ฐ•์กฐ)
  • ์„ค๊ณ„์ž์˜ ์˜๋„๋ฅผ ์ˆจ๊ธฐ์ง€ ์•Š๋Š”๋‹ค.
  • ๋ช…์พŒํ•œ ์ถ”์ƒํ™”์™€ ๋‹จ์ˆœํ•œ ์ œ์–ด๋ฌธ์œผ๋กœ ๊ฐ€๋“ํ•˜๋‹ค. (๋ถˆํ•„์š”ํ•œ ์‚ฌ์‹ค์— ์–ฝ๋งค์ด์ง€ ์•Š๋Š”, ๋‹จํ˜ธํ•˜๋‹ค๋Š” ์ธ์ƒ์„ ์ค˜์•ผ ํ•œ๋‹ค.)

ํฐ ๋ฐ์ด๋ธŒ ํ† ๋งˆ์Šค

OTI ์ฐฝ๋ฆฝ์ž, ์ดํด๋ฆฝ์Šค ์ „๋žต์˜ ๋Œ€๋ถ€

  • ์ž‘์„ฑ์ž๊ฐ€ ์•„๋‹Œ ์‚ฌ๋žŒ๋„ ์ฝ๊ธฐ ์‰ฝ๊ณ  ๊ณ ์น˜๊ธฐ ์‰ฌ์›Œ์•ผ ํ•œ๋‹ค. (๊ฐ€๋…์„ฑ ๊ฐ•์กฐ, ๊ณ ์น˜๊ธฐ ์‰ฌ์šด ์ฝ”๋“œ)
  • Unit Test, Acceptance Test๊ฐ€ ์กด์žฌํ•œ๋‹ค. (ํ…Œ์ŠคํŠธ ์ฝ”๋“œ)
  • ์˜๋ฏธ ์žˆ๋Š” ์ด๋ฆ„์ด ๋ถ™๋Š”๋‹ค.
  • ๋ชฉ์  ๋‹ฌ์„ฑ ๋ฐฉ๋ฒ•์„ ํ•˜๋‚˜๋งŒ ์ œ๊ณตํ•œ๋‹ค.
  • ์˜์กด์„ฑ์€ ์ตœ์†Œ์ด๋ฉฐ ๋ช…ํ™•ํ•˜๊ฒŒ ์ •์˜ํ•œ๋‹ค.
  • API๋Š” ๋ช…ํ™•ํ•˜๋ฉฐ ์ตœ์†Œ๋กœ ์ค„์ธ๋‹ค.
  • ์ฝ”๋“œ๋Š” ๋ฌธํ•™์ ์ด์–ด์•ผ ํ•œ๋‹ค. (์ธ๊ฐ„์ด ์ฝ๊ธฐ ์‰ฌ์›Œ์•ผ ํ•œ๋‹ค.)

๋งˆ์ดํด ํŽ˜๋”์Šค

Working Effectively with Legacy Code ์ €์ž

  • ์ฃผ์˜๊นŠ๊ฒŒ ์งฐ๋‹ค๋Š” ๋Š๋‚Œ์ด ์žˆ๋‹ค.
  • ๊ณ ์น˜๋ ค๊ณ  ๋ด๋„ ๋”ฑํžˆ ์† ๋Œˆ ๊ณณ์ด ์—†๋‹ค.
  • ๋ชจ๋“  ์‚ฌํ•ญ์„ ๊ณ ๋ คํ–ˆ๊ธฐ ๋•Œ๋ฌธ์—, ๊ฒฐ๊ตญ ์ œ์ž๋ฆฌ๋กœ ๋Œ์•„์˜จ๋‹ค.

๋ก  ์ œํ”„๋ฆฌ์Šค

Extreme Programming Installed, Exterme Programming Adventure in C# ์ €์ž

์ด ๋ถ„์€ fortran์œผ๋กœ ์‹œ์ž‘ํ•˜์—ฌ ๊ฑฐ์˜ ๋ชจ๋“  ์–ธ์–ด๋กœ ์ฝ”๋“œ๋ฅผ ๊ตฌํ˜„ํ•ด์™”๋‹ค. ์ฃผ์˜ ๊นŠ๊ฒŒ ์ฝ์–ด๋ณด์ž.

  • ๋ชจ๋“  ํ…Œ์ŠคํŠธ๋ฅผ ํ†ต๊ณผํ•œ๋‹ค.
  • ์ค‘๋ณต์ด ์—†๋‹ค. (๊ฐ™์€ ์ž‘์—…์ด ๋ฐ˜๋ณต๋œ๋‹ค๋ฉด ์•„์ด๋””์–ด๋ฅผ ์ œ๋Œ€๋กœ ํ‘œํ˜„ํ•˜์ง€ ๋ชปํ•œ๋‹ค๋Š” ์‚ฌ์‹ค์˜ ๋ฐ˜์ฆ์ด๋‹ค)
  • ์‹œ์Šคํ…œ ๋‚ด ๋ชจ๋“  ์„ค๊ณ„ ์•„์ด๋””์–ด๋ฅผ ํ‘œํ˜„ํ•œ๋‹ค.
  • class, method, function์„ ์ตœ๋Œ€ํ•œ ์ค„์ธ๋‹ค.
  • ์˜๋ฏธ ์žˆ๋Š” ์ด๋ฆ„์„ ์ ๋Š”๋‹ค.
  • ์—ฌ๋Ÿฌ ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฐ์ฒด๋ผ๋ฉด ๋‚˜๋ˆˆ๋‹ค.
  • ์ถ”์ƒ ํด๋ž˜์Šค๋ฅผ ๋งŒ๋“ค์–ด ๊ตฌํ˜„์„ ๊ฐ์‹ผ๋‹ค. (๊ฐ„๋‹จํ•œ ์ถ”์ƒํ™”๋ฅผ ๊ณ ๋ คํ•˜์—ฌ ์ž ์‹œ ๋ฌธ์ œ๋ฅผ ๋ฏธ๋ค„๋‘˜ ์ˆ˜ ์žˆ๋‹ค. ์ฆ‰ ํฌ๊ฒŒ ์„ค๊ณ„ํ•˜๊ณ  ์„ธ๋ถ€ ์‚ฌํ•ญ์„ ๋‚˜์ค‘์— ๋„ฃ๋Š”๋‹ค.)

์ค‘๋ณต ํ”ผํ•˜๊ธฐ, ํ•œ๊ธฐ๋Šฅ๋งŒ ์ˆ˜ํ–‰ํ•˜๊ธฐ, ์ œ๋Œ€๋กœ ํ‘œํ˜„ํ•˜๊ธฐ, ์ž‘๊ฒŒ ์ถ”์ƒํ™”ํ•˜๊ธฐ.

์›Œ๋“œ ์ปค๋‹ํ–„

Extreme Programming ๊ณต๋™ ์ฐฝ์‹œ์ž, ๋Œ€๋ถ€

  • ๊นจ๋—ํ•œ ์ฝ”๋“œ๋Š” ์ฝ์œผ๋ฉด์„œ ๋†€๋ž„ ์ผ์ด ์—†์–ด์•ผ ํ•œ๋‹ค.
  • ์ง์ž‘๋Œ€๋กœ ๋Œ์•„๊ฐ€๋Š” ์ฝ”๋“œ๊ฐ€ ๊นจ๋—ํ•œ ์ฝ”๋“œ๋‹ค. (๋‹จ์ˆœํ•˜๋Š” ๋ง)

์šฐ๋ฆฌ๋“ค ์ƒ๊ฐ

Object ๋ฌธํŒŒ์˜ ๊ตํ›ˆ์„ ๋”ฐ๋ฅธ๋‹ค๋ฉด ๋งŒ๋ฝํ•œ ์ด์ต์„ ๋„ˆ๋„ ๊ฐ€์งˆ์ˆ˜ ์žˆ์–ด!

๋ฌด์ˆ ์˜ ๊ตํŒŒ์ฒ˜๋Ÿผ ์ฝ”๋“œ ์ง„์˜๋„ ๋งˆ์ฐฌ๊ฐ€์ง€๋‹ค. ์–ด๋Š์ •๋„์˜ ์„ฑํ–ฅ์ด ์žˆ๋‹ค. ์ด ์ฑ…์—์„œ ์„ค๋ช…ํ•˜๋Š” ๊ฒƒ๋“ค์ด ๊ฒฐ๊ตญ ์ €์ž๋„ ์ง€์ง€ํ•˜๋Š” ์ƒ๊ฐ์ด๋‹ค. ์ด ๊ธฐ๋ฒ•์„ ์ตํžˆ๋ฉด ์ˆ˜์ค€ ๋†’์€ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์žฅ๋‹ดํ•œ๋‹ค. ๋ฏฟ๊ณ  ๊ฐ€์ž. ํ•˜์ง€๋งŒ ์ ˆ๋Œ€์ ์œผ๋กœ ์˜ณ์ง€๋Š” ์•Š์œผ๋‹ˆ, ์—ฌ๋Ÿฌ ๊ฒฝํ—˜์„ ํ† ๋Œ€๋กœ ๋ฐฐ์šฐ๋Š” ๊ฒƒ์„ ์ถ”์ฒœํ•œ๋‹ค.

์šฐ๋ฆฌ๋Š” ์ €์ž๋‹ค

์ฝ”๋“œ๋Š” ์งœ๋Š” ์‹œ๊ฐ„๋ณด๋‹ค ์ฝ๋Š” ์‹œ๊ฐ„์ด ๋ฐฐ๋กœ ๋งŽ์ด ๋“ ๋‹ค.

๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ์šฐ๋ฆฌ๋Š” ์ž˜ ์ฝํžˆ๋Š” ์ฝ”๋“œ๋ฅผ ์งœ๋Š” ๊ฒƒ์— ์ง‘์ค‘ํ•ด์•ผ ํ•œ๋‹ค. ์ž‘์—…ํ•˜๋Š” ๊ฒƒ์„ ์˜์ƒ์œผ๋กœ ์ฐ๊ณ  ๋น ๋ฅธ ๋ฐฐ์†์œผ๋กœ ๋Œ๋ ค๋ณด๋ฉด, ์‹ค์งˆ์ ์œผ๋กœ ์ฝ”๋“œ๋ฅผ ์น˜๋Š” ์‹œ๊ฐ„์€ ๋งŽ์ง€ ์•Š๋‹ค.

๋ณด์ด์Šค์นด์šฐํŠธ ๊ทœ์น™

์บ ํ”„์žฅ์€ ์ฒ˜์Œ ์™”์„ ๋•Œ ๋ณด๋‹ค ๋” ๊นจ๋—ํ•˜๊ฒŒ ํ•˜๊ณ  ๋– ๋‚˜๋ผ

๋‚จ์ž๋Š” ์ง€๋‚˜๊ฐ„ ์ž๋ฆฌ๊ฐ€ ๋” ์•„๋ฆ„๋‹ต์Šต๋‹ˆ๋‹ค

์ง€์†ํ•œ ๊ฐœ์„ ์ด์•ผ๋ง๋กœ ์ „๋ฌธ๊ฐ€ ์ •์‹ ์˜ ๋ณธ์งˆ์ด๋‹ค. ํ•œ๋ฒˆ์— ๋งŽ์€ ์‹œ๊ฐ„๊ณผ ๋…ธ๋ ฅ์„ ํˆฌ์žํ•ด ์ฝ”๋“œ๋ฅผ ์ •๋ฆฌํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค. ๋ณ€์ˆ˜ ์ด๋ฆ„์˜ ๊ฐœ์„ , if๋ฌธ ์ •๋ฆฌ, ๊ธด ํ•จ์ˆ˜ ๋ถ„ํ• ์ด๋ฉด ์ถฉ๋ถ„ํ•˜๋‹ค.

๊ฒฐ๋ก 

๋ฐฉ๋ฒ•์„ ์•ˆ๋‹ค๊ณ  ๋„์‚ฌ๊ฐ€ ๋˜๋Š” ๊ฑด ์•„๋‹ˆ๋‹ค.

์•ž์œผ๋กœ ๊ฒฝํ—˜์  ๊ตํ›ˆ๊ณผ ์ฒด๊ณ„, ์ ˆ์ฐจ, ๊ธฐ๋ฒ•๋“ค์ด ๋‚œ๋ฌดํ•  ๊ฒƒ์ด๋‹ค. ์ด๊ฑธ ์–ด๋–ป๊ฒŒ ์ฒดํ™”ํ•˜๋ƒ๋Š” ๊ฑธ๊ตญ ๋…์ž์˜ ๋ชซ์ด๋‹ค. โ€œ์—ฐ์Šตํ•ด, ์—ฐ์Šต!!โ€

Summary

  1. ๋‚˜์œ ์ฝ”๋“œ๋ฅผ ๊ฐ€๋งŒ๋‘์ง€ ๋ง์•„๋ผ.
  2. ์ค‘๋ณต์€ ์ œ๊ฑฐํ•˜๋ผ.
  3. ๋ฉ”์†Œ๋“œ์˜ ๊ธฐ๋Šฅ์€ ์ž˜๊ฐœ ์ชผ๊ฐœ๋ผ.
  4. ๋„ค์ด๋ฐ์€ ๋ช…ํ™•ํ•˜๊ฒŒ ์ง€์–ด๋ผ.
  5. ํ…Œ์ŠคํŠธ์ผ€์ด์Šค๋ฅผ ์ž‘์„ฑํ•˜๋ผ.
  6. ์˜ค๋ฅ˜ ์ฒ˜๋ฆฌ๋ฅผ ์ฒ ์ €ํ•˜๊ฒŒ ํ•˜๋ผ.
  7. ์žฅ์ธ ์ •์‹ ์„ ๊ฐ€์ง€๊ณ  ์Šต๊ด€์œผ๋กœ ๋งŒ๋“ค์–ด๋ผ

Reference