ThoughtWorks์— ์ž…์‚ฌํ•œ ๋ฐฉ๋ฒ•์ด๋‚˜ ์ƒ˜ํ”Œ ์ธํ„ฐ๋ทฐ

ThoughtWorks์— ์ž…์‚ฌํ•œ ๋ฐฉ๋ฒ•์ด๋‚˜ ์ƒ˜ํ”Œ ์ธํ„ฐ๋ทฐ

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

๊ทธ๋Ÿฐ๋ฐ ์™œ ํ˜„์žฌ ์ง์—…๊ณผ ๊ด€๋ จ ์—†๋Š” ๊ธฐ์ˆ ์„ ํ…Œ์ŠคํŠธํ•ฉ๋‹ˆ๊นŒ? ๋‹จ์ง€ ์œ ํ–‰์ด ๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์—? ๊ตฌ๊ธ€์ด ์ด๋Ÿฐ ์ผ์„ ํ•˜๊ธฐ ๋•Œ๋ฌธ์—? ๋˜๋Š” ๋ฏธ๋ž˜์˜ ํŒ€ ๋ฆฌ๋”๊ฐ€ ์ธํ„ฐ๋ทฐ ์ „์— ๋ชจ๋“  ์ •๋ ฌ ๋ฐฉ๋ฒ•์„ ๋ฐฐ์›Œ์•ผ ํ–ˆ๊ณ  ์ด์ œ ๊ทธ๋Š” "๋ชจ๋“  ํ›Œ๋ฅญํ•œ ํ”„๋กœ๊ทธ๋ž˜๋จธ๋Š” ๋ฌธ์ž์—ด์—์„œ ํšŒ๋ฌธ์„ ์ฐพ๋Š” ๊ตฌํ˜„์„ ์•”๊ธฐํ•ด์•ผ ํ•œ๋‹ค"๊ณ  ๋ฏฟ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

๊ธ€์Ž„, ๋‹น์‹ ์€ Google์ด ์•„๋‹™๋‹ˆ๋‹ค (c). Google์ด ๊ฐ๋‹นํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์„ ์ผ๋ฐ˜ ๊ธฐ์—…์€ ๊ฐ๋‹นํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์ง์›์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ถ„์„ํ•œ Google์€ ์˜ฌ๋ฆผํ”ผ์•„๋“œ ๋ฐฐ๊ฒฝ์„ ๊ฐ€์ง„ ์—”์ง€๋‹ˆ์–ด๊ฐ€ ํŠน์ • ์ž‘์—…์„ ์ž˜ ์ฒ˜๋ฆฌํ•œ๋‹ค๋Š” ๊ฒฐ๋ก ์— ๋„๋‹ฌํ–ˆ์Šต๋‹ˆ๋‹ค. ๋”์šฑ์ด, ์„ ํƒ ํ”„๋กœ์„ธ์Šค๋ฅผ ์„ค๊ณ„ํ•จ์œผ๋กœ์จ ์ˆ˜ํ•™ ๋ฌธ์ œ๋ฅผ ์‰ฝ๊ฒŒ ํ’€ ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— ์ข‹์€ ์—”์ง€๋‹ˆ์–ด ๋ช‡ ๋ช…์„ ๊ณ ์šฉํ•˜์ง€ ๋ชปํ•  ์ˆ˜๋„ ์žˆ๋Š” ์œ„ํ—˜์„ ๊ฐ์ˆ˜ํ•  ์—ฌ์œ ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ด๊ฒƒ์€ ๊ทธ๋“ค์—๊ฒŒ๋Š” ๋ฌธ์ œ๊ฐ€ ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. Google์—์„œ ์ผํ•˜๊ณ  ์‹ถ์–ดํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์ด ๋งŽ๊ธฐ ๋•Œ๋ฌธ์— ํ•ด๋‹น ์ง์œ„๋Š” ์ข…๋ฃŒ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์ด์ œ ์ฐฝ๋ฐ–์„ ๋‚ด๋‹ค๋ด…์‹œ๋‹ค. ์‚ฌ๋ฌด์‹ค ์•ž์— ๋‹น์‹ ์„ ์œ„ํ•ด ์ผํ•˜๊ณ  ์‹ถ์€ ์—”์ง€๋‹ˆ์–ด๊ฐ€ ์•„์ง ํ…ํŠธ ์บ ํ”„๋ฅผ ์„ค์น˜ํ•˜์ง€ ์•Š์•˜๊ณ  ๊ฐœ๋ฐœ์ž๊ฐ€ ๋‹ค์Œ Spring ์ฃผ์„์„ ์„ค์น˜ํ•ด์•ผ ํ•  ๊ฒƒ์ด ๋ฌด์—‡์ธ์ง€ stackoverflow์—์„œ ๋” ์ž์ฃผ ์ฐพ๊ณ  ์žˆ๋‹ค๋ฉด, ์ˆœ์œ„ ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ๋ณต์žกํ•จ๋ณด๋‹ค๋Š” ๊ทธ๋ ‡๋‹ค๋ฉด ์ด์ œ Google์„ ๋ณต์‚ฌํ•ด์•ผ ํ•˜๋Š”์ง€ ์ƒ๊ฐํ•ด ๋ณผ ๋•Œ์ž…๋‹ˆ๋‹ค.

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

ThoughtWorks

ThoughtWorks๋Š” ์ด๊ฒƒ๊ณผ ์–ด๋–ค ๊ด€๋ จ์ด ์žˆ์Šต๋‹ˆ๊นŒ? ์—ฌ๊ธฐ์—์„œ ์ œ๊ฐ€ ์ง์ ‘ ๋ชจ๋ธ ์ธํ„ฐ๋ทฐ์˜ ์˜ˆ๋ฅผ ์ฐพ์•˜์Šต๋‹ˆ๋‹ค. ThoughtWorks๋Š” ๋ˆ„๊ตฌ์ธ๊ฐ€์š”? ํ•œ๋งˆ๋””๋กœ ์ค‘๊ตญ, ์‹ฑ๊ฐ€ํด๋ถ€ํ„ฐ ๋ฏธ์ฃผ๋Œ€๋ฅ™๊นŒ์ง€ ์ „ ์„ธ๊ณ„์— ์ง€์‚ฌ๋ฅผ ๋‘๊ณ  ์žˆ๋Š” ํ•˜์ด์—”๋“œ ์ปจ์„คํŒ… ํšŒ์‚ฌ๋กœ, ์•ฝ 25๋…„ ๋™์•ˆ ๊ฐœ๋ฐœ ๋ถ„์•ผ ์ปจ์„คํŒ…์„ ์ง„ํ–‰ํ•ด ์™”์œผ๋ฉฐ, ๋งˆํ‹ด์„ ํ•„๋‘๋กœ ํ•˜๋Š” ์ž์ฒด ์‚ฌ์ด์–ธ์Šค ์‚ฌ์—…๋ถ€๋ฅผ ๋‘๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ํŒŒ์šธ๋Ÿฌ. ์†Œํ”„ํŠธ์›จ์–ด ์—”์ง€๋‹ˆ์–ด๊ฐ€ ๊ผญ ์ฝ์–ด์•ผ ํ•  10๊ถŒ์˜ ์ฑ… ๋ชฉ๋ก์„ ์ฐพ๋Š”๋‹ค๋ฉด ์•„๋งˆ๋„ ๊ทธ ์ค‘ 2~3๊ถŒ์€ ThoughtWorks ์ง์›์ด ์“ด ๊ฒƒ์ž…๋‹ˆ๋‹ค(์˜ˆ: Martin Fowler์˜ Refactoring ๋ฐ Sam์˜ Building Microservices: Designing Fine-Grained Systems) ๋‰ด๋จผ ๋˜๋Š” ํ˜์‹ ์ ์ธ ์•„ํ‚คํ…์ฒ˜ ๊ตฌ์ถ•
ํŒจํŠธ๋ฆญ ์ฟ ์•„, ๋ ˆ๋ฒ ์นด ํŒŒ์Šจ์Šค, ๋‹ ํฌ๋“œ ์ง€์Œ.

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

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

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

0๋‹จ๊ณ„. HR

ํ”ํžˆ ๊ทธ๋ ‡๋“ฏ์ด HR๊ณผ์˜ 20๋ถ„ ์ธํ„ฐ๋ทฐ์ž…๋‹ˆ๋‹ค. ๋” ์ด์ƒ ๊นŠ์ด ์ƒ๊ฐํ•˜์ง€ ์•Š๊ณ  ํšŒ์‚ฌ์˜ ๊ฐœ๋ฐœ ๋ฌธํ™”, ์™œ TDD๋ฅผ ์‚ฌ์šฉํ•˜๋Š”์ง€, ์™œ ์Œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ์‚ฌ์šฉํ•˜๋Š”์ง€์— ๋Œ€ํ•ด 15๋ถ„ ๋™์•ˆ ์ด์•ผ๊ธฐํ•  ์ˆ˜ ์žˆ๋Š” HR ๋‹ด๋‹น์ž๋ฅผ ๋งŒ๋‚œ ์ ์ด ์—†๋‹ค๋Š” ์ ๋งŒ ๋ง์”€๋“œ๋ฆฌ๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ HR์€ ์ด ์งˆ๋ฌธ์— ์‹œ๋“ค๊ณ  ๊ฐœ๋ฐœ์ž๊ฐ€ ๊ฐœ๋ฐœํ•˜๊ณ , ํ…Œ์Šคํ„ฐ๊ฐ€ ํ…Œ์ŠคํŠธํ•˜๊ณ , ๊ด€๋ฆฌ์ž๊ฐ€ ์šด์ „ํ•˜๋Š” ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ •์ƒ์ด๋ผ๊ณ  ๋งํ•ฉ๋‹ˆ๋‹ค.

1๋‹จ๊ณ„. OOP, TDD์— ์–ผ๋งˆ๋‚˜ ๋Šฅ์ˆ™ํ•ฉ๋‹ˆ๊นŒ?

์ธํ„ฐ๋ทฐ ์‹œ์ž‘ 1.5์‹œ๊ฐ„ XNUMX๋ถ„ ์ „์— ํ™”์„ฑํƒ์‚ฌ์ฐจ ์‹œ๋ฎฌ๋ ˆ์ดํ„ฐ๋ฅผ ๋งŒ๋“œ๋Š” ์ž„๋ฌด๋ฅผ ๋งก๊ฒŒ ๋๋‹ค.

ํ™”์„ฑ ํƒ์‚ฌ์„  ์ž„๋ฌดNASA๋Š” ๋กœ๋ด‡ ๋กœ๋ฒ„ ํŒ€์„ ํ™”์„ฑ ๊ณ ์›์— ์ฐฉ๋ฅ™์‹œํ‚ฌ ์˜ˆ์ •์ž…๋‹ˆ๋‹ค. ๋ฌ˜ํ•˜๊ฒŒ ์ง์‚ฌ๊ฐํ˜•์ธ ์ด ๊ณ ์›์€ ํƒ‘์žฌ๋œ ์นด๋ฉ”๋ผ๊ฐ€ ์ฃผ๋ณ€ ์ง€ํ˜•์„ ์™„์ „ํžˆ ๋ณผ ์ˆ˜ ์žˆ๋„๋ก ๋กœ๋ฒ„๊ฐ€ ํƒ์ƒ‰ํ•˜์—ฌ ์ง€๊ตฌ๋กœ ๋‹ค์‹œ ๋ณด๋‚ผ ์ˆ˜ ์žˆ๋„๋ก ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋กœ๋ฒ„์˜ ์œ„์น˜์™€ ์œ„์น˜๋Š” x ๋ฐ y ์ขŒํ‘œ์˜ ์กฐํ•ฉ๊ณผ ๋„ค ๊ฐœ์˜ ๊ธฐ๋ณธ ๋‚˜์นจ๋ฐ˜ ์ง€์  ์ค‘ ํ•˜๋‚˜๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๋ฌธ์ž๋กœ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ๊ณ ์›์€ ํƒ์ƒ‰์„ ๋‹จ์ˆœํ™”ํ•˜๊ธฐ ์œ„ํ•ด ๊ทธ๋ฆฌ๋“œ๋กœ ๋‚˜๋ˆ„์–ด์ ธ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ์‹œ ์œ„์น˜๋Š” 0, 0, N์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ๋กœ๋ฒ„๊ฐ€ ์™ผ์ชฝ ํ•˜๋‹จ์— ์žˆ๊ณ  ๋ถ์ชฝ์„ ํ–ฅํ•˜๊ณ  ์žˆ์Œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. NASA๋Š” ๋กœ๋ฒ„๋ฅผ ์ œ์–ดํ•˜๊ธฐ ์œ„ํ•ด ๊ฐ„๋‹จํ•œ ๋ฌธ์ž ๋ฌธ์ž์—ด์„ ๋ณด๋ƒ…๋‹ˆ๋‹ค. ๊ฐ€๋Šฅํ•œ ๋ฌธ์ž๋Š” 'L', 'R', 'M'์ž…๋‹ˆ๋‹ค. 'L'๊ณผ 'R'์€ ๋กœ๋ฒ„๋ฅผ ํ˜„์žฌ ์ง€์ ์—์„œ ์›€์ง์ด์ง€ ์•Š๊ณ  ๊ฐ๊ฐ ์™ผ์ชฝ์ด๋‚˜ ์˜ค๋ฅธ์ชฝ์œผ๋กœ 90๋„ ํšŒ์ „์‹œํ‚ต๋‹ˆ๋‹ค. 'M'์€ ํ•œ ๊ทธ๋ฆฌ๋“œ ํฌ์ธํŠธ ์•ž์œผ๋กœ ์ด๋™ํ•˜๊ณ  ๋™์ผํ•œ ๋ฐฉํ–ฅ์„ ์œ ์ง€ํ•œ๋‹ค๋Š” ์˜๋ฏธ์ž…๋‹ˆ๋‹ค.
(x, y)์—์„œ ๋ฐ”๋กœ ๋ถ์ชฝ์— ์žˆ๋Š” ์ •์‚ฌ๊ฐํ˜•์ด (x, y+1)์ด๋ผ๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค.
์ž…๋ ฅ:
์ž…๋ ฅ์˜ ์ฒซ ๋ฒˆ์งธ ์ค„์€ ๊ณ ์›์˜ ์˜ค๋ฅธ์ชฝ ์œ„ ์ขŒํ‘œ์ด๊ณ , ์™ผ์ชฝ ์•„๋ž˜ ์ขŒํ‘œ๋Š” 0,0์œผ๋กœ ๊ฐ€์ •๋ฉ๋‹ˆ๋‹ค.
์ž…๋ ฅ์˜ ๋‚˜๋จธ์ง€ ๋ถ€๋ถ„์€ ๋ฐฐ์น˜๋œ ๋กœ๋ฒ„์™€ ๊ด€๋ จ๋œ ์ •๋ณด์ž…๋‹ˆ๋‹ค. ๊ฐ ๋กœ๋ฒ„์—๋Š” ๋‘ ๊ฐœ์˜ ์ž…๋ ฅ ๋ผ์ธ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ฒซ ๋ฒˆ์งธ ์ค„์€ ํƒ์‚ฌ์„ ์˜ ์œ„์น˜๋ฅผ โ€‹โ€‹์•Œ๋ ค์ฃผ๊ณ , ๋‘ ๋ฒˆ์งธ ์ค„์€ ํƒ์‚ฌ์„ ์—๊ฒŒ ๊ณ ์›์„ ํƒ์ƒ‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ๋ ค์ฃผ๋Š” ์ผ๋ จ์˜ ์ง€์นจ์ž…๋‹ˆ๋‹ค. ์œ„์น˜๋Š” x ๋ฐ y ์ขŒํ‘œ์™€ ๋กœ๋ฒ„์˜ ๋ฐฉํ–ฅ์— ํ•ด๋‹นํ•˜๋Š” ๋‘ ๊ฐœ์˜ ์ •์ˆ˜์™€ ๊ณต๋ฐฑ์œผ๋กœ ๊ตฌ๋ถ„๋œ ๋ฌธ์ž๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค.
๊ฐ ๋กœ๋ฒ„๋Š” ์ˆœ์ฐจ์ ์œผ๋กœ ์™„๋ฃŒ๋ฉ๋‹ˆ๋‹ค. ์ฆ‰, ์ฒซ ๋ฒˆ์งธ ๋กœ๋ฒ„๊ฐ€ ์ด๋™์„ ์™„๋ฃŒํ•  ๋•Œ๊นŒ์ง€ ๋‘ ๋ฒˆ์งธ ๋กœ๋ฒ„๋Š” ์ด๋™์„ ์‹œ์ž‘ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
์‚ฐ์ถœ:
๊ฐ ๋กœ๋ฒ„์˜ ์ถœ๋ ฅ์€ ์ตœ์ข… ์ขŒํ‘œ์™€ ๋ฐฉํ–ฅ์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
์ฐธ๊ณ  ์‚ฌํ•ญ :
์œ„์˜ ์š”๊ตฌ ์‚ฌํ•ญ์„ ๊ตฌํ˜„ํ•˜๊ณ  ๋‹จ์œ„ ํ…Œ์ŠคํŠธ๋ฅผ ์ž‘์„ฑํ•˜์—ฌ ์ง„๊ณต ์ฒญ์†Œ๊ธฐ๊ฐ€ ์ž‘๋™ํ•˜๋Š”์ง€ ์ฆ๋ช…ํ•˜์„ธ์š”.
์–ด๋–ค ํ˜•ํƒœ๋กœ๋“  ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒƒ์€ ๋ฒ”์œ„๋ฅผ ๋ฒ—์–ด๋‚ฉ๋‹ˆ๋‹ค.
TDD(Test Driven Development) ์ ‘๊ทผ ๋ฐฉ์‹์„ ๋”ฐ๋ผ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.
์งง์€ ์‹œ๊ฐ„์— ์™„์„ฑ๋„๋ณด๋‹ค๋Š” ํ’ˆ์งˆ์„ ๋” ์ค‘์š”ํ•˜๊ฒŒ ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.
*์ €์—๊ฒŒ ๋ณด๋‚ด์ฃผ์‹  ๊ณผ์ œ๋Š” ๊ฒŒ์‹œํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋ช‡ ๋…„ ์ „์— ๋ฐ›์€ ์˜ค๋ž˜๋œ ๊ณผ์ œ์ž…๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ €๋ฅผ ๋ฏฟ์œผ์„ธ์š”. ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ชจ๋“  ๊ฒƒ์ด ๋™์ผํ•˜๊ฒŒ ์œ ์ง€๋ฉ๋‹ˆ๋‹ค.

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

  • TDD;
  • OOP๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์œ ์ง€ ๊ด€๋ฆฌ ๊ฐ€๋Šฅํ•œ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๋Šฅ๋ ฅ
  • ํŽ˜์–ด ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋Šฅ๋ ฅ

๊ทธ๋ž˜์„œ ์ €๋Š” ๊ทธ 1.5์‹œ๊ฐ„ ๋™์•ˆ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ์ž‘์—…์„ ์–ด๋–ป๊ฒŒ ์ˆ˜ํ–‰ํ•  ๊ฒƒ์ธ์ง€ ์ƒ๊ฐํ•˜๋Š” ๋ฐ ์‹œ๊ฐ„์„ ๋ณด๋‚ด๋ผ๋Š” ๊ฒฝ๊ณ ๋ฅผ ๋ฐ›์•˜์Šต๋‹ˆ๋‹ค. ์ฝ”๋“œ๋ฅผ ํ•จ๊ป˜ ์ž‘์„ฑํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๊ฐ€ ์ „ํ™”๋ฅผ ๋ฐ›์•˜์„ ๋•Œ ์‚ฌ๋žŒ๋“ค์€ ์ž์‹ ์ด ๋ˆ„๊ตฌ์ธ์ง€, ๋ฌด์—‡์„ ํ•˜๋Š”์ง€ ๊ฐ„๋žตํ•˜๊ฒŒ ์„ค๋ช…ํ•˜๊ณ  ๊ฐœ๋ฐœ์„ ์‹œ์ž‘ํ•˜๊ฒ ๋‹ค๊ณ  ์ œ์•ˆํ–ˆ์Šต๋‹ˆ๋‹ค.

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

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

2๋‹จ๊ณ„: ์•Œ๋ ค์ฃผ์„ธ์š”

์ธํ„ฐ๋ทฐ ์ผ์ฃผ์ผ ์ „์— ๋‚˜๋Š” ๊ด€์‹ฌ ์žˆ๋Š” ์ฃผ์ œ์— ๋Œ€ํ•œ ํ”„๋ ˆ์  ํ…Œ์ด์…˜์„ ์ค€๋น„ํ•˜๋ผ๋Š” ์š”์ฒญ์„ ๋ฐ›์•˜์Šต๋‹ˆ๋‹ค. ํ˜•์‹์€ ๊ฐ„๋‹จํ•˜๊ณ  ์นœ์ˆ™ํ•ฉ๋‹ˆ๋‹ค. ํ”„๋ ˆ์  ํ…Œ์ด์…˜ 15๋ถ„, ์งˆ๋ฌธ ๋‹ต๋ณ€ 15๋ถ„์ž…๋‹ˆ๋‹ค.
์ €๋Š” Bob ์‚ผ์ดŒ์˜ Clean Architecture๋ฅผ ์„ ํƒํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋‹ค์‹œ ํ•œ๋‘ ๋ช…๊ณผ ์ธํ„ฐ๋ทฐ๋ฅผ ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ๋‚˜์˜ ์ฒซ ์˜์–ด ๋ฐœํ‘œ ๊ฒฝํ—˜์ด์—ˆ๊ณ , ์•„๋งˆ๋„ ์ŠคํŠธ๋ ˆ์Šค๊ฐ€ ๋งŽ์€ ์ƒํ™ฉ์— ์žˆ์—ˆ๋‹ค๋ฉด ๋Œ€์ฒ˜ํ•˜์ง€ ๋ชปํ–ˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ๋˜ ํ•œ ๋ฒˆ๋„ ๋ฉด์ ‘์— ์™€ ์žˆ๋‹ค๋Š” ๋Š๋‚Œ์„ ๋ฐ›์€ ์ ์ด ์—†์–ด์š”. ๋ชจ๋“  ๊ฒƒ์ด ํ‰์†Œ์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ๊ทธ๋“ค์—๊ฒŒ ๋งํ•˜๋ฉด ๊ทธ๋“ค์€์ฃผ์˜ ๊นŠ๊ฒŒ ๋“ฃ์Šต๋‹ˆ๋‹ค. ์ „ํ†ต์ ์ธ ์งˆ๋ฌธ ๋ฐ ๋‹ต๋ณ€ ์„ธ์…˜์กฐ์ฐจ๋„ ์ธํ„ฐ๋ทฐ์™€ ๊ฐ™์ง€ ์•Š์•˜์œผ๋ฉฐ ์งˆ๋ฌธ์ด "๊ฐ€๋ผ์•‰๋Š”" ์งˆ๋ฌธ์ด ์•„๋‹ˆ๋ผ ๋‚ด ํ”„๋ ˆ์  ํ…Œ์ด์…˜์— ์ •๋ง๋กœ ๊ด€์‹ฌ์ด ์žˆ๋Š” ์งˆ๋ฌธ์ด๋ผ๋Š” ๊ฒƒ์ด ๋ถ„๋ช…ํ–ˆ์Šต๋‹ˆ๋‹ค.

์ธํ„ฐ๋ทฐ ํ›„ ๋ช‡ ์‹œ๊ฐ„ ํ›„์— ํ”ผ๋“œ๋ฐฑ์„ ๋ฐ›์•˜์Šต๋‹ˆ๋‹ค. ํ”„๋ ˆ์  ํ…Œ์ด์…˜์€ ๋งค์šฐ ์œ ์šฉํ–ˆ๊ณ  ๊ทธ๋“ค์€ ์ •๋ง ์ฆ๊ฒ๊ฒŒ ๋“ฃ๊ณ  ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

3๋‹จ๊ณ„. ์ƒ์‚ฐ ํ’ˆ์งˆ ์ฝ”๋“œ

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

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

๋”ฐ๋ผ์„œ ์ฝ”๋“œ๋ฅผ ์–ผ๋งˆ๋‚˜ ์ž˜ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋Š”์ง€๋Š” ์ฒ˜์Œ๋ถ€ํ„ฐ ์–ด๋–ค ๋””์ž์ธ์„ ์—ผ๋‘์— ๋‘๊ณ  ์žˆ๋Š”์ง€, ์–ผ๋งˆ๋‚˜ ๋‹จ์ˆœํ•œ์ง€, ํ…Œ์ŠคํŠธ๊ฐ€ ์–ผ๋งˆ๋‚˜ ์ข‹์€์ง€์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง‘๋‹ˆ๋‹ค.

์ธํ„ฐ๋ทฐ๊ฐ€ ๋๋‚œ ํ›„ ๋ช‡ ์‹œ๊ฐ„ ์•ˆ์— ํ”ผ๋“œ๋ฐฑ์„ ๋ฐ›์•˜์Šต๋‹ˆ๋‹ค. ์ด ๋‹จ๊ณ„์—์„œ ๋‚˜๋Š” ๊ฑฐ์˜ ๋๋‚ฌ๊ณ  "ํŒŒ์šธ๋Ÿฌ๋ฅผ ๋งŒ๋‚˜๊ธฐ" ์ „๊นŒ์ง€๋Š” ๊ฑฐ์˜ ๋‚จ์ง€ ์•Š์•˜๋‹ค๋Š” ๊ฒƒ์„ ๊นจ๋‹ฌ์•˜์Šต๋‹ˆ๋‹ค.

4๋‹จ๊ณ„. ์ตœ์ข…. ๊ธฐ์ˆ ์ ์ธ ์งˆ๋ฌธ์€ ์ถฉ๋ถ„ํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๋‹น์‹ ์ด ๋ˆ„๊ตฌ์ธ์ง€ ์•Œ๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค!

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

Thoughtworks ๋ฌธํ™”์— ๋Œ€ํ•ด Google์—์„œ ์กฐ๊ธˆ ๊ฒ€์ƒ‰ํ•˜๋ฉด ์ง€์† ๊ฐ€๋Šฅํ•œ ๋น„์ฆˆ๋‹ˆ์Šค, ์†Œํ”„ํŠธ์›จ์–ด ์šฐ์ˆ˜์„ฑ ๋ฐ ์‚ฌํšŒ ์ •์˜์˜ 3๊ฐ€์ง€ ์›์น™์„ ์„ค๋ช…ํ•˜๋Š” Martin Fowler์˜ ๊ธฐ์‚ฌ [https://martinfowler.com/bliki/ThreePillars.html]๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Software Excellence๊ฐ€ ์ด๋ฏธ ํ™•์ธ๋˜์—ˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์ง€์† ๊ฐ€๋Šฅํ•œ ๋น„์ฆˆ๋‹ˆ์Šค์™€ ์‚ฌํšŒ ์ •์˜๋ฅผ ๋ณด์—ฌ์ฃผ๋Š” ๊ฒƒ์ด ๋‚จ์•„ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฒŒ๋‹ค๊ฐ€ ๋‚˜๋Š” ํ›„์ž์— ์ง‘์ค‘ํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ๋‹ค.

์šฐ์„  ๋‚˜๋Š” ThoughtWorks๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ ๋ฅผ ๊ทธ์—๊ฒŒ ๋งํ–ˆ์Šต๋‹ˆ๋‹ค. ๋Œ€ํ•™ ์‹œ์ ˆ Martin Fowler์˜ ๋ธ”๋กœ๊ทธ๋ฅผ ์ฝ์—ˆ๊ธฐ ๋•Œ๋ฌธ์— Clean ์ฝ”๋“œ๋ฅผ ์ข‹์•„ํ•ฉ๋‹ˆ๋‹ค.

ํ”„๋กœ์ ํŠธ๋Š” ๋‹ค์–‘ํ•œ ๊ฐ๋„์—์„œ ๋ฐœํ‘œ๋  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Š” ๋˜ํ•œ ํ™˜์ž์˜ ์‚ถ์„ ๋‹จ์ˆœํ™”ํ•˜๊ณ  ์‹ฌ์ง€์–ด ํ•œ ๋ช…์˜ ์ƒ๋ช…์„ ๊ตฌํ–ˆ๋‹ค๋Š” ์†Œ๋ฌธ์ด ์žˆ๋Š” ์˜ํ•™์šฉ ์†Œํ”„ํŠธ์›จ์–ด๋„ ๊ฐœ๋ฐœํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋˜ํ•œ ์‹œ๋ฏผ๋“ค์˜ ์‚ถ์„ ๋”์šฑ ํŽธ๋ฆฌํ•˜๊ฒŒ ํ•ด์ฃผ๋Š” ์€ํ–‰์šฉ ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ๊ฐœ๋ฐœํ–ˆ์Šต๋‹ˆ๋‹ค. ํŠนํžˆ ์ด ์€ํ–‰์„ ์ „๊ตญ ์ธ๊ตฌ์˜ 70%๊ฐ€ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด ๋”์šฑ ๊ทธ๋ ‡์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ Sberbank์— ๊ด€ํ•œ ๊ฒƒ์ด ์•„๋‹ˆ๋ฉฐ ๋Ÿฌ์‹œ์•„์— ๊ด€ํ•œ ๊ฒƒ๋„ ์•„๋‹™๋‹ˆ๋‹ค.

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

๊ฒฐ๊ตญ ๋‚ด ๋ฐœํ‘œ์˜ 80%๋Š” ๊ณ ์–‘์ด๋กœ ์ฑ„์›Œ์กŒ๋‹ค.

ํ”„๋ ˆ์  ํ…Œ์ด์…˜ ์งํ›„ HR์—์„œ๋Š” ์ธํ„ฐ๋ทฐ ๊ฒฐ๊ณผ๋ฅผ ์•„์ง ์•Œ์ง€ ๋ชปํ–ˆ์ง€๋งŒ ์‚ฌ๋ฌด์‹ค ์ „์ฒด๊ฐ€ ์ด๋ฏธ ๊ณ ์–‘์ด์— ๊นŠ์€ ์ธ์ƒ์„ ๋ฐ›์•˜๋‹ค๊ณ  ๋‚˜์—๊ฒŒ ํŽธ์ง€๋ฅผ ๋ณด๋ƒˆ์Šต๋‹ˆ๋‹ค.

๊ฒฐ๊ตญ ํ”ผ๋“œ๋ฐฑ์„ ๊ธฐ๋‹ค๋ ธ์Šต๋‹ˆ๋‹ค. ์ธ๊ฐ„์œผ๋กœ์„œ ๋ชจ๋‘๋ฅผ ๋งŒ์กฑ์‹œ์ผฐ์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ๋งˆ์ง€๋ง‰ ๋Œ€ํ™”์—์„œ HR์€ ์‚ฌํšŒ ์ •์˜๊ฐ€ ๋งค์šฐ ์ข‹๊ณ  ํ•„์š”ํ•˜์ง€๋งŒ ๋ชจ๋“  ํ”„๋กœ์ ํŠธ๊ฐ€ ์ด๋ ‡์ง€๋Š” ์•Š๋‹ค๊ณ  ์žฌ์น˜ ์žˆ๊ฒŒ ๋งํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ทธ๋Š” ๊ทธ๊ฒƒ์ด ๋‚˜์—๊ฒŒ ๊ฒ์ด ๋‚ฌ๋Š”์ง€ ๋ฌผ์—ˆ์Šต๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ๋‚˜๋Š” ์‚ฌํšŒ ์ •์˜์— ๋Œ€ํ•ด ์•ฝ๊ฐ„ ์ง€๋‚˜์ณค์Šต๋‹ˆ๋‹ค. :)

ํ•ฉ๊ณ„

๊ทธ ๊ฒฐ๊ณผ, ๋‚˜๋Š” ๋ช‡ ๋‹ฌ ๋™์•ˆ ์‹ฑ๊ฐ€ํฌ๋ฅด์˜ Thoughtworks์—์„œ ์ผํ•˜๊ณ  ์žˆ๋Š”๋ฐ ์—ฌ๊ธฐ ๋„ˆ๋ฌด ๋งŽ์€ ํšŒ์‚ฌ๋“ค์ด Spring๋ณด๋‹ค ๋” ๋งŽ์€ ์ง€์‹์„ ๊ฐ–๊ณ  ์žˆ์Œ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ์ฝ”๋”ฉ์„ ์œ„ํ•ด Leave์™€ Whiteboard๋ฅผ ์‚ฌ์šฉํ•˜๋Š” Google์˜ "๋ชจ๋ฒ” ๋ฉด์ ‘ ๊ด€ํ–‰"์„ ์ฑ„ํƒํ•˜๊ณ  ์žˆ์Œ์„ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค. Symfony, RubyOnRails(ํ•„์š”ํ•œ ๋ถ€๋ถ„์— ๋ฐ‘์ค„ ํ‘œ์‹œ)๋Š” ์ž‘์—…์— ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์—”์ง€๋‹ˆ์–ด๋“ค์€ ์ธํ„ฐ๋ทฐ๋ฅผ ํ•˜๊ธฐ ์ „์— ์ผ์ฃผ์ผ ๋™์•ˆ '์ค€๋น„'๋ฅผ ํ•ฉ๋‹ˆ๋‹ค.

Thoughtworks์—์„œ๋Š” ํ›„๋ณด์ž์— ๋Œ€ํ•œ ์ ์ ˆํ•œ ์š”๊ตฌ ์‚ฌํ•ญ ์™ธ์—๋„ ๋‹ค์Œ ์›์น™์ด ์ตœ์šฐ์„ ์ž…๋‹ˆ๋‹ค.
์ธํ„ฐ๋ทฐ์˜ ์ฆ๊ฑฐ์›€. ๊ฒŒ๋‹ค๊ฐ€ ์–‘์ธก ๋ชจ๋‘์—๊ฒŒ. ์‹ค์ œ๋กœ ์ตœ๊ณ ์˜ ์ธ๋ ฅ์„ ํ™•๋ณดํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด (๋ˆ„๊ฐ€ ๊ทธ๋ ‡์ง€ ์•Š์Šต๋‹ˆ๊นŒ?) ์ธํ„ฐ๋ทฐ๋Š” ๋…ธ์˜ˆ๋ฅผ ์„ ํƒํ•˜๋Š” ์‹œ์žฅ์ด ์•„๋‹ˆ๋ผ ๊ณ ์šฉ์ฃผ์™€ ํ›„๋ณด์ž๊ฐ€ ์„œ๋กœ๋ฅผ ํ‰๊ฐ€ํ•˜๋Š” ์‡ผ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ํ›„๋ณด์ž๊ฐ€ ํšŒ์‚ฌ์— ๋Œ€ํ•ด ์œ ์พŒํ•œ ๊ฐ์ •์„ ์—ฐ๊ด€์‹œํ‚จ๋‹ค๋ฉด ๊ทธ๋Š” ์ด ํŠน์ • ํšŒ์‚ฌ๋ฅผ ์„ ํƒํ•  ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์Šต๋‹ˆ๋‹ค.

ํŽธ๊ฒฌ์„ ์™„ํ™”ํ•˜๊ธฐ ์œ„ํ•ด ์—ฌ๋Ÿฌ ๋ฉด์ ‘๊ด€. Thoughtworks์—์„œ๋Š” ํŽ˜์–ด ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ด ์‚ฌ์‹ค์ƒ์˜ ํ‘œ์ค€์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด ๊ด€ํ–‰์ด ๋‹ค๋ฅธ ๋ถ„์•ผ์—๋„ ์ ์šฉ๋  ์ˆ˜ ์žˆ๋‹ค๋ฉด TW๋Š” ๊ทธ๋ ‡๊ฒŒ ํ•˜๋ ค๊ณ  ๋…ธ๋ ฅํ•ฉ๋‹ˆ๋‹ค. ๊ฐ ๋‹จ๊ณ„๋งˆ๋‹ค 2๋ช…์ด ๋ฉด์ ‘์„ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ํ•œ ์‚ฌ๋žŒ๋‹น ์ตœ์†Œ 8๋ช…์ด ํ‰๊ฐ€ํ•˜๋ฉฐ, TW๋Š” ๋‹ค์–‘ํ•œ ๋ฐฐ๊ฒฝ, ๋‹ค์–‘ํ•œ ๋ฐฉํ–ฅ(๊ธฐ์ˆ ์ž๋ฟ๋งŒ ์•„๋‹ˆ๋ผ), ์„ฑ๋ณ„์„ ๊ฐ€์ง„ ๋ฉด์ ‘๊ด€์„ ์„ ๋ฐœํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

์ตœ์ข…์ ์œผ๋กœ ์ฑ„์šฉ ๊ฒฐ์ •์€ ์ตœ์†Œ 8๋ช… ์ด์ƒ์˜ ์˜๊ฒฌ์„ ๋ฐ”ํƒ•์œผ๋กœ ์ด๋ฃจ์–ด์ง€๋ฉฐ, ๋ˆ„๊ตฌ๋„ ์บ์ŠคํŒ… ํˆฌํ‘œ๊ถŒ์„ ๊ฐ–์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

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

๊ต์œก ์ˆ˜๋ฃŒ์ฆ์ด ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. TW๋Š” ์ปดํ“จํ„ฐ ๊ณผํ•™์— ๋Œ€ํ•œ ์ž๊ฒฉ์ฆ์ด๋‚˜ ๊ต์œก์„ ์š”๊ตฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์‹ค๋ ฅ๋งŒ ํ‰๊ฐ€๋ฉ๋‹ˆ๋‹ค.

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

๋ช‡ ๋‹ฌ์ด ์ง€๋‚˜์ž ๋‚ด ๊ธฐ๋Œ€๊ฐ€ ์™„์ „ํžˆ ์ถฉ์กฑ๋˜์—ˆ๋‹ค๊ณ  ๋งํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ThoughtWorks๋Š” ์ผ๋ฐ˜ ํšŒ์‚ฌ์™€ ์–ด๋–ป๊ฒŒ ๋‹ค๋ฅธ๊ฐ€์š”? ์ผ๋ฐ˜ ํšŒ์‚ฌ์—์„œ๋Š” ์ข‹์€ ๊ฐœ๋ฐœ์ž์™€ ์ข‹์€ ์‚ฌ๋žŒ๋“ค์„ ์ฐพ์„ ์ˆ˜ ์žˆ์ง€๋งŒ TW์—์„œ๋Š” ๊ทธ๋“ค์˜ ์ง‘์ค‘๋ ฅ์ด ์ฐจํŠธ์—์„œ ๋ฒ—์–ด๋‚ฌ์Šต๋‹ˆ๋‹ค.

ThoughtWorks ํ•ฉ๋ฅ˜์— ๊ด€์‹ฌ์ด ์žˆ๋‹ค๋ฉด ์ฑ„์šฉ ๊ณต๊ณ ๋ฅผ ํ™•์ธํ•˜์„ธ์š”. ์—ฌ๊ธฐ์—
๋˜ํ•œ ํฅ๋ฏธ๋กœ์šด ๊ณต์„์— ์ฃผ๋ชฉํ•  ๊ฒƒ์„ ์ œ์•ˆํ•ฉ๋‹ˆ๋‹ค.
์ˆ˜์„ ์†Œํ”„ํŠธ์›จ์–ด ์—”์ง€๋‹ˆ์–ด: ๋…์ผ, ๋Ÿฐ๋˜, ๋งˆ๋“œ๋ฆฌ๋“œ, ์‹ฑ๊ฐ€ํฌ๋ฅด
์ˆ˜์„ ์†Œํ”„ํŠธ์›จ์–ด ์—”์ง€๋‹ˆ์–ด: ์‹œ๋“œ๋‹ˆ, ๋…์ผ, ๋งจ์ฒด์Šคํ„ฐ, ๋ฐฉ์ฝ•
์†Œํ”„ํŠธ์›จ์–ด ์—”์ง€๋‹ˆ์–ด: ์‹œ๋“œ๋‹ˆ, ๋ฐ”๋ฅด์…€๋กœ๋‚˜, ๋ฐ€๋ผ๋…ธ
์ˆ˜์„ ๋ฐ์ดํ„ฐ ์—”์ง€๋‹ˆ์–ด: ๋ฐ€๋ผ๋…ธ
ํ’ˆ์งˆ ๋ถ„์„๊ฐ€: ๋…์ผ ์ค‘๊ตญ
ํ•˜๋ถ€ ๊ตฌ์กฐ: ๋…์ผ, ๋Ÿฐ๋˜, ์น ๋ ˆ
(ํ•ด๋‹น ๋งํฌ๋Š” ์ถ”์ฒœ๋งํฌ์ž„์„ ์†”์งํžˆ ๋ง์”€๋“œ๋ฆฌ๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. TW์— ๊ฐ€์‹œ๋ฉด ์ข‹์€ ๋ณด๋„ˆ์Šค๋ฅผ ๋ฐ›์œผ์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.) ์›ํ•˜๋Š” ์‚ฌ๋ฌด์‹ค์„ ์„ ํƒํ•˜์„ธ์š”. ์œ ๋Ÿฝ์—๋งŒ ๊ตญํ•œํ•  ํ•„์š”๋Š” ์—†์Šต๋‹ˆ๋‹ค. ๊ฒฐ๊ตญ 2๋…„๋งˆ๋‹ค TW๊ฐ€ ๊ธฐ๊บผ์ด ๊ท€ํ•˜๋ฅผ ๋‹ค๋ฅธ ๊ตญ๊ฐ€๋กœ ์ด์ „ํ•ด ๋“œ๋ฆด ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด... ์ด๋Š” ThoughtWorks ์ •์ฑ…์˜ ์ผ๋ถ€์ด๋ฏ€๋กœ ๋ฌธํ™”๊ฐ€ ํ™•์‚ฐ๋˜๊ณ  ๊ท ์งˆํ™”๋ฉ๋‹ˆ๋‹ค.

๋Œ“๊ธ€๋กœ ๊ถ๊ธˆํ•œ ์ ์„ ์งˆ๋ฌธํ•˜์‹œ๊ฑฐ๋‚˜ ์ถ”์ฒœ์„ ์š”์ฒญํ•ด ์ฃผ์„ธ์š”.
์ฃผ์ œ๊ฐ€ ํฅ๋ฏธ๋กœ์›Œ ๋ณด์ธ๋‹ค๋ฉด ThoughtWorks์—์„œ ์ผํ•˜๋Š” ๊ฒƒ์ด ์–ด๋–ค ๊ฒƒ์ธ์ง€, ์‹ฑ๊ฐ€ํฌ๋ฅด์—์„œ์˜ ์ƒํ™œ์ด ์–ด๋–ค ๊ฒƒ์ธ์ง€์— ๋Œ€ํ•ด ๊ธ€์„ ์“ธ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : habr.com

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€