Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

dingcodingco/rubber-duck-demo

Folders and files

NameName
Last commit message
Last commit date

Latest commit

History

2 Commits

Repository files navigation

๐Ÿฆ† ๋Ÿฌ๋ฒ„๋• ๋””๋ฒ„๊น… ์‹ค์Šต ํ”„๋กœ์ ํŠธ

"ChatGPTํ•œํ…Œ ๋‹ต ๋ฐ›์ง€ ๋งˆ์„ธ์š” โ€” AI ๋Ÿฌ๋ฒ„๋•์ด ๊ฐœ๋ฐœ ์‹ค๋ ฅ์„ ํ‚ค์›Œ์ค๋‹ˆ๋‹ค"

๐Ÿ“บ YouTube ์˜์ƒ

๐Ÿ‘‰ ๋”ฉ์ฝ”๋”ฉ์ฝ” ์ฑ„๋„์—์„œ ์‹œ์ฒญํ•˜๊ธฐ

๐ŸŽฏ ํ”„๋กœ์ ํŠธ ๊ฐœ์š”

์ด ํ”„๋กœ์ ํŠธ๋Š” ๋Ÿฌ๋ฒ„๋• ๋””๋ฒ„๊น…(Rubber Duck Debugging)์„ Claude Code๋กœ ๊ตฌํ˜„ํ•œ ์‹ค์Šต์šฉ ๋ ˆํฌ์ง€ํ† ๋ฆฌ์ž…๋‹ˆ๋‹ค.

์ผ๋ฐ˜ AI๋Š” ๋‹ต์„ ์ฃผ์ง€๋งŒ, ๋Ÿฌ๋ฒ„๋• AI๋Š” ์งˆ๋ฌธ์„ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ ์ฐจ์ด๊ฐ€ ์—ฌ๋Ÿฌ๋ถ„์˜ ๊ฐœ๋ฐœ ์‹ค๋ ฅ์„ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค.

โšก ๋น ๋ฅธ ์‹œ์ž‘

1๋‹จ๊ณ„: Clone

git clone https://github.com/dingcodingco/rubber-duck-demo
cd rubber-duck-demo

2๋‹จ๊ณ„: CLAUDE.md ํ™•์ธ

cat CLAUDE.md

์ด ํŒŒ์ผ ํ•˜๋‚˜๊ฐ€ Claude Code์˜ ํ–‰๋™์„ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

3๋‹จ๊ณ„: ๋ฐ๋ชจ ์‹คํ–‰

๐ŸŒฑ Spring Boot ์ˆœํ™˜ ์ฐธ์กฐ

cd 01-spring-circular
./mvnw spring-boot:run
# BeanCurrentlyInCreationException ๋ฐœ์ƒ ํ™•์ธ
# Claude Code ์‹คํ–‰
claude
# ๋Ÿฌ๋ฒ„๋•๊ณผ ๋Œ€ํ™”ํ•˜๋ฉฐ ํ•ด๊ฒฐ

๐Ÿงฎ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ตœ์ ํ™”

cd 02-algorithm
javac TwoSumBruteForce.java && java TwoSumBruteForce
javac TwoSumOptimal.java && java TwoSumOptimal
javac TwoSumTest.java && java TwoSumTest

๐Ÿ“ ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ

rubber-duck-demo/
โ”‚
โ”œโ”€โ”€ CLAUDE.md # โญ ๋Ÿฌ๋ฒ„๋• ์—์ด์ „ํŠธ ์„ค์ •
โ”‚
โ”œโ”€โ”€ 01-spring-circular/ # Spring Boot ์ˆœํ™˜ ์ฐธ์กฐ ๋ฐ๋ชจ
โ”‚ โ”œโ”€โ”€ service/
โ”‚ โ”‚ โ”œโ”€โ”€ UserService.java # โŒ ๋ฌธ์ œ ๋ฒ„์ „
โ”‚ โ”‚ โ””โ”€โ”€ OrderService.java # โŒ ๋ฌธ์ œ ๋ฒ„์ „
โ”‚ โ”œโ”€โ”€ service_fixed/
โ”‚ โ”‚ โ”œโ”€โ”€ *Lazy.java # โœ… @Lazy ํ•ด๊ฒฐ
โ”‚ โ”‚ โ””โ”€โ”€ *Setter.java # โœ… Setter ์ฃผ์ž… ํ•ด๊ฒฐ
โ”‚ โ””โ”€โ”€ README.md
โ”‚
โ”œโ”€โ”€ 02-algorithm/ # Two Sum ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฐ๋ชจ
โ”‚ โ”œโ”€โ”€ TwoSumBruteForce.java # โŒ O(n2) ๋ฒ„์ „
โ”‚ โ”œโ”€โ”€ TwoSumOptimal.java # โœ… O(n) HashMap ๋ฒ„์ „
โ”‚ โ”œโ”€โ”€ TwoSumTest.java # ์„ฑ๋Šฅ ๋น„๊ต
โ”‚ โ””โ”€โ”€ README.md
โ”‚
โ””โ”€โ”€ README.md # ์ด ํŒŒ์ผ

๐ŸŽ“ ๋Ÿฌ๋ฒ„๋• ๋ฐฉ์‹์˜ ํšจ๊ณผ

์ง€ํ‘œ ๋‹ต ๋ฐ›๊ธฐ (ChatGPT) ๋Ÿฌ๋ฒ„๋• (Claude Code)
ํ•ด๊ฒฐ ์‹œ๊ฐ„ 30์ดˆ 3๋ถ„
์ดํ•ด๋„ 20% 90%
๊ธฐ์–ต ์ง€์† 2์ผ 2์ฃผ
์‘์šฉ๋ ฅ โŒ ๋‹ค์Œ์— ๋˜ ๋ฌผ์–ด๋ด„ โœ… ์Šค์Šค๋กœ ํ•ด๊ฒฐ
๋ฉด์ ‘ ๋Œ€์‘ โŒ ์„ค๋ช… ๋ชป ํ•จ โœ… ๋…ผ๋ฆฌ์  ์„ค๋ช… ๊ฐ€๋Šฅ

๐Ÿ“Š ์—ฐ๊ตฌ ๊ฒฐ๊ณผ

  • Chi et al. (1989): Self-Explanation ํ•™์Šต์ž๋Š” ๋ฌธ์ œ ํ•ด๊ฒฐ๋ ฅ์ด 2๋ฐฐ ๋†’์Œ
  • Roediger & Karpicke (2006): Active Recall์€ ๊ธฐ์–ต๋ฅ ์„ 4๋ฐฐ ๋†’์ž„
  • Harvard CS50 (2023): 20๋งŒ ํ•™์ƒ์—๊ฒŒ AI ๋Ÿฌ๋ฒ„๋• ์ œ๊ณต, ์ผ๋ฐ˜ ChatGPT ์‚ฌ์šฉ ๊ธˆ์ง€

๐Ÿฆ† ๋Ÿฌ๋ฒ„๋•์ด ํ•˜๋Š” ์ผ

โŒ ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ (๊ฝฅ! ์•ˆ ๋ผ์š”!)

  • ์ง์ ‘์ ์ธ ์ฝ”๋“œ ์ œ๊ณต
  • "์ด๋ ‡๊ฒŒ ํ•˜์„ธ์š”" ์‹ ๋ช…๋ น
  • ๊ธด ์„ค๋ช… (์˜ค๋ฆฌ๋Š” ๊ฐ„๊ฒฐํ•ด์š”!)
  • ์—ฌ๋Ÿฌ ์งˆ๋ฌธ ๋™์‹œ์— ๋˜์ง€๊ธฐ
  • ๋”ฑ๋”ฑํ•˜๊ณ  ์ฐจ๊ฐ€์šด ๋งํˆฌ

โœ… ํ•˜๋Š” ๊ฒƒ (์˜ค๋ฆฌ์˜ค๋ฆฌ~ ์ด๊ฑด ์ข‹์•„์š”!)

  • ๐Ÿฆ† "์˜ค๋ฆฌ์˜ค๋ฆฌ~", "๊ฝฅ!", "์˜คํ˜ธ~" ๊ฐ™์€ ๊ท€์—ฌ์šด ๋ฐ˜์‘
  • ๋ฉ”ํƒ€ํฌ์™€ ๋น„์œ ๋กœ ์ด๋Œ๊ธฐ ("๋งˆ์น˜ ์—ฐ๋ชป์—์„œ...")
  • "๋งŒ์•ฝ ~๋ผ๋ฉด?" ๊ฐ€์ • ์งˆ๋ฌธ
  • ๋””๋ฒ„๊น… ์ „๋žต ํžŒํŠธ (๋‹ต์€ ์•„๋‹˜)
  • ๋ฐœ๊ฒฌ์˜ ์ˆœ๊ฐ„ ์ง„์‹ฌ ์–ด๋ฆฐ ์ถ•ํ•˜ ๐ŸŽ‰
  • ๊ฒฉ๋ ค์™€ ์‘์› ("์ž˜ํ•˜๊ณ  ์žˆ์–ด์š”!")

๐Ÿ’ฌ ๋Œ€ํ™” ์˜ˆ์‹œ

์ผ๋ฐ˜ AI (๋‹ต ์ฃผ๊ธฐ)

๋‚˜: BeanCurrentlyInCreationException์ด ๋‚˜์š”
AI: ์ˆœํ™˜ ์ฐธ์กฐ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. @Lazy๋ฅผ ์ถ”๊ฐ€ํ•˜์„ธ์š”:
 @Service
 public class UserService {
 public UserService(@Lazy OrderService orderService) {
 ...
 }
 }

โ†’ 30์ดˆ ๋งŒ์— ํ•ด๊ฒฐ, ํ•˜์ง€๋งŒ ์™œ ์ˆœํ™˜ ์ฐธ์กฐ์ธ์ง€ ๋ชจ๋ฆ„

๋Ÿฌ๋ฒ„๋• AI (์งˆ๋ฌธํ•˜๊ธฐ)

๋‚˜: BeanCurrentlyInCreationException์ด ๋‚˜์š”
๐Ÿฆ†: ์˜ค๋ฆฌ์˜ค๋ฆฌ~ ๊ฐ ์„œ๋น„์Šค๊ฐ€ ๋ฌด์Šจ ์ผ์„ ํ•˜๋Š”์ง€, ๊ทธ๋ฆฌ๊ณ  ์™œ ์„œ๋กœ๊ฐ€
 ํ•„์š”ํ•œ์ง€ ์„ค๋ช…ํ•ด์ค„ ์ˆ˜ ์žˆ์–ด์š”?
๋‚˜: UserService๋Š” ์ตœ๊ทผ ์ฃผ๋ฌธ์„ ๊ฐ€์ ธ์™€์•ผ ํ•ด์„œ OrderService๊ฐ€
 ํ•„์š”ํ•˜๊ณ , OrderService๋Š” ์ฃผ๋ฌธํ•  ๋•Œ ์œ ์ € ๊ฒ€์ฆ์ด ํ•„์š”ํ•ด์„œ
 UserService๊ฐ€ ํ•„์š”ํ•ด์š”
๐Ÿฆ†: ์˜คํ˜ธ~ ๊ทธ ์˜์กด์„ฑ ํ™”์‚ดํ‘œ๋ฅผ ๊ทธ๋ฆผ์œผ๋กœ ๊ทธ๋ฆฐ๋‹ค๋ฉด, ์–ด๋–ค ๋ชจ์–‘์ด ๋ ๊นŒ์š”?
 ๋งˆ์น˜ ์—ฐ๋ชป์—์„œ ์˜ค๋ฆฌ๋“ค์ด ์„œ๋กœ๋ฅผ ๋”ฐ๋ผ๊ฐ€๋Š” ๊ฒƒ์ฒ˜๋Ÿผ์š”!
๋‚˜: ์Œ... ์„œ๋กœ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋‹ˆ๊นŒ... ์›ํ˜•? ์•„, ์ˆœํ™˜์ด๋„ค
๐Ÿฆ†: ๊ฝฅ! ๋งž์•„์š”! ๊ทธ๋Ÿผ OrderService๊ฐ€ ์œ ์ €๋ฅผ ๊ฒ€์ฆํ•˜๋Š” ๊ฒŒ,
 '๊ฐ์ฒด๊ฐ€ ์ƒ์„ฑ๋˜๋Š” ์‹œ์ '์— ๊ผญ ํ•„์š”ํ•œ ๊ฑด๊ฐ€์š”?
 ์•„๋‹ˆ๋ฉด '์ฃผ๋ฌธ์ด ์‹ค์ œ๋กœ ๋“ค์–ด์˜ฌ ๋•Œ'๋งŒ ํ•„์š”ํ•œ ๊ฑด๊ฐ€์š”?
๋‚˜: ์ฃผ๋ฌธ์ด ๋“ค์–ด์˜ฌ ๋•Œ๋งŒ... ์•„! ๊ทธ๋Ÿฌ๋ฉด ์ƒ์„ฑ์ž ์ฃผ์ž…์ด ์•„๋‹ˆ๋ผ
 ๋ฉ”์„œ๋“œ ํ˜ธ์ถœ ์‹œ์ ์— ๊ฐ€์ ธ์˜ค๋ฉด ๋˜๊ฒ ๋„ค์š”!
๐Ÿฆ†: ๐ŸŽ‰ ์˜ค๋ฆฌ์˜ค๋ฆฌ! ์™„๋ฒฝํ•ด์š”! ์Šค์Šค๋กœ ํ•ต์‹ฌ์„ ์ฐพ์•„๋ƒˆ์–ด์š”!
 '์ƒ์„ฑ ์‹œ์ '๊ณผ '์‚ฌ์šฉ ์‹œ์ '์˜ ์ฐจ์ด๋ฅผ ๋ฐœ๊ฒฌํ•œ ๊ฒŒ ๋Œ€๋‹จํ•ด์š”! โœจ

โ†’ 3๋ถ„ ๊ฑธ๋ ธ์ง€๋งŒ, ์›๋ฆฌ๋ฅผ ์™„์ „ํžˆ ์ดํ•ดํ•จ

๐Ÿš€ ์ ์šฉ ๋ถ„์•ผ

โœ… ํšจ๊ณผ์ ์ธ ๋ถ„์•ผ

  • ๋””๋ฒ„๊น…: ์—๋Ÿฌ์˜ ๊ทผ๋ณธ ์›์ธ ์ฐพ๊ธฐ
  • ์•Œ๊ณ ๋ฆฌ์ฆ˜: ์ตœ์ ํ™” ์ „๋žต ๋ฐœ๊ฒฌ
  • ์„ค๊ณ„: ์•„ํ‚คํ…์ฒ˜ ๊ฒฐ์ • ๋…ผ๋ฆฌ ๋‹ค์ง€๊ธฐ
  • ์ฝ”๋“œ ๋ฆฌ๋ทฐ: ๊ฐœ์„ ์  ์Šค์Šค๋กœ ๋ฐœ๊ฒฌ

โš ๏ธ ์ œํ•œ์ ์ธ ๋ถ„์•ผ

  • ๋ฐ˜๋ณต ์ž‘์—…: CRUD ์ฝ”๋“œ ์ƒ์„ฑ ๋“ฑ
  • ๋ณด์ผ๋Ÿฌํ”Œ๋ ˆ์ดํŠธ: ์„ค์ • ํŒŒ์ผ ์ž‘์„ฑ ๋“ฑ
  • ๊ธด๊ธ‰ ์ƒํ™ฉ: ํ”„๋กœ๋•์…˜ ์žฅ์•  ๋“ฑ

โ†’ ์ด๋Ÿฐ ๊ฒฝ์šฐ๋Š” ์ผ๋ฐ˜ AI๋กœ ๋น ๋ฅด๊ฒŒ ํ•ด๊ฒฐํ•˜๊ณ , ํ•™์Šต์ด ํ•„์š”ํ•œ ๋ถ€๋ถ„์—๋งŒ ๋Ÿฌ๋ฒ„๋• ์‚ฌ์šฉ

๐Ÿ› ๏ธ ์ปค์Šคํ„ฐ๋งˆ์ด์ง•

CLAUDE.md ์ˆ˜์ •

# ๐Ÿฆ† ๋Ÿฌ๋ฒ„๋• ๋””๋ฒ„๊น… ํŒŒํŠธ๋„ˆ
## ํŠนํ™” ๋ชจ๋“œ ์ถ”๊ฐ€
- ์‹œ์Šคํ…œ ์„ค๊ณ„ ๋ฉด์ ‘ ๋ชจ๋“œ: ๋Œ€๊ทœ๋ชจ ์‹œ์Šคํ…œ ์„ค๊ณ„ ์‹œ ํŠธ๋ ˆ์ด๋“œ์˜คํ”„ ์งˆ๋ฌธ
- ์ฝ”๋“œ ๋ฆฌ๋ทฐ ๋ชจ๋“œ: ๊ฐœ์„ ์  ๋ฐœ๊ฒฌ์„ ์œ„ํ•œ ์งˆ๋ฌธ
- ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ชจ๋“œ: ์‹œ๊ฐ„/๊ณต๊ฐ„ ๋ณต์žก๋„ ๋ถ„์„ ์งˆ๋ฌธ

Skills ์ถ”๊ฐ€ (๊ณ ๊ธ‰)

# ~/.claude/skills/rubber-duck.js ์ƒ์„ฑ
# ๋” ์„ธ๋ฐ€ํ•œ ๋Œ€ํ™” ํ๋ฆ„ ์ œ์–ด

์„ค๋ช…๋ž€์˜ GitHub ๋งํฌ์— ๊ณ ๊ธ‰ ์„ค์ • ์˜ˆ์‹œ ํฌํ•จ

๐Ÿ“š ์ฐธ๊ณ  ์ž๋ฃŒ

๋…ผ๋ฌธ & ์—ฐ๊ตฌ

  • Chi, M. T. H., et al. (1989). Self-Explanation Effect in Learning
  • Roediger, H. L., & Karpicke, J. D. (2006). Test-Enhanced Learning
  • Harvard CS50 AI Duck (2023)

๊ด€๋ จ ์ž๋ฃŒ

๐Ÿค ๊ธฐ์—ฌํ•˜๊ธฐ

๊ฐœ์„  ์•„์ด๋””์–ด๋‚˜ ์ƒˆ๋กœ์šด ๋ฐ๋ชจ๊ฐ€ ์žˆ๋‹ค๋ฉด:

  1. Fork this repository
  2. Create your feature branch
  3. Commit your changes
  4. Push to the branch
  5. Create a Pull Request

๐Ÿ“ ๋ผ์ด์„ผ์Šค

MIT License - ์ž์œ ๋กญ๊ฒŒ ์‚ฌ์šฉํ•˜์„ธ์š”!

๐Ÿ’ฌ ํ”ผ๋“œ๋ฐฑ

โญ Star ์ฃผ์„ธ์š”!

์ด ํ”„๋กœ์ ํŠธ๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‹ค๋ฉด โญ ๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ์ฃผ์„ธ์š”! ๋” ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด ๋Ÿฌ๋ฒ„๋• ๋ฐฉ์‹์œผ๋กœ ๊ณต๋ถ€ํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ณต์œ ํ•ด์ฃผ์„ธ์š”.


Made with ๐Ÿฆ† by ๋”ฉ์ฝ”๋”ฉ์ฝ”

๐Ÿ“บ YouTube

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

Contributors

Languages

AltStyle ใซใ‚ˆใฃใฆๅค‰ๆ›ใ•ใ‚ŒใŸใƒšใƒผใ‚ธ (->ใ‚ชใƒชใ‚ธใƒŠใƒซ) /