"ChatGPTํํ ๋ต ๋ฐ์ง ๋ง์ธ์ โ AI ๋ฌ๋ฒ๋์ด ๊ฐ๋ฐ ์ค๋ ฅ์ ํค์์ค๋๋ค"
๐ ๋ฉ์ฝ๋ฉ์ฝ ์ฑ๋์์ ์์ฒญํ๊ธฐ
์ด ํ๋ก์ ํธ๋ ๋ฌ๋ฒ๋ ๋๋ฒ๊น (Rubber Duck Debugging)์ Claude Code๋ก ๊ตฌํํ ์ค์ต์ฉ ๋ ํฌ์งํ ๋ฆฌ์ ๋๋ค.
์ผ๋ฐ AI๋ ๋ต์ ์ฃผ์ง๋ง, ๋ฌ๋ฒ๋ AI๋ ์ง๋ฌธ์ ํฉ๋๋ค. ๊ทธ ์ฐจ์ด๊ฐ ์ฌ๋ฌ๋ถ์ ๊ฐ๋ฐ ์ค๋ ฅ์ ๊ฒฐ์ ํฉ๋๋ค.
git clone https://github.com/dingcodingco/rubber-duck-demo
cd rubber-duck-democat CLAUDE.md
์ด ํ์ผ ํ๋๊ฐ Claude Code์ ํ๋์ ๋ฐ๊ฟ๋๋ค.
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 ์ฌ์ฉ ๊ธ์ง
- ์ง์ ์ ์ธ ์ฝ๋ ์ ๊ณต
- "์ด๋ ๊ฒ ํ์ธ์" ์ ๋ช ๋ น
- ๊ธด ์ค๋ช (์ค๋ฆฌ๋ ๊ฐ๊ฒฐํด์!)
- ์ฌ๋ฌ ์ง๋ฌธ ๋์์ ๋์ง๊ธฐ
- ๋ฑ๋ฑํ๊ณ ์ฐจ๊ฐ์ด ๋งํฌ
- ๐ฆ "์ค๋ฆฌ์ค๋ฆฌ~", "๊ฝฅ!", "์คํธ~" ๊ฐ์ ๊ท์ฌ์ด ๋ฐ์
- ๋ฉํํฌ์ ๋น์ ๋ก ์ด๋๊ธฐ ("๋ง์น ์ฐ๋ชป์์...")
- "๋ง์ฝ ~๋ผ๋ฉด?" ๊ฐ์ ์ง๋ฌธ
- ๋๋ฒ๊น ์ ๋ต ํํธ (๋ต์ ์๋)
- ๋ฐ๊ฒฌ์ ์๊ฐ ์ง์ฌ ์ด๋ฆฐ ์ถํ ๐
- ๊ฒฉ๋ ค์ ์์ ("์ํ๊ณ ์์ด์!")
๋: BeanCurrentlyInCreationException์ด ๋์
AI: ์ํ ์ฐธ์กฐ ๋ฌธ์ ์
๋๋ค. @Lazy๋ฅผ ์ถ๊ฐํ์ธ์:
@Service
public class UserService {
public UserService(@Lazy OrderService orderService) {
...
}
}
โ 30์ด ๋ง์ ํด๊ฒฐ, ํ์ง๋ง ์ ์ํ ์ฐธ์กฐ์ธ์ง ๋ชจ๋ฆ
๋: BeanCurrentlyInCreationException์ด ๋์
๐ฆ: ์ค๋ฆฌ์ค๋ฆฌ~ ๊ฐ ์๋น์ค๊ฐ ๋ฌด์จ ์ผ์ ํ๋์ง, ๊ทธ๋ฆฌ๊ณ ์ ์๋ก๊ฐ
ํ์ํ์ง ์ค๋ช
ํด์ค ์ ์์ด์?
๋: UserService๋ ์ต๊ทผ ์ฃผ๋ฌธ์ ๊ฐ์ ธ์์ผ ํด์ OrderService๊ฐ
ํ์ํ๊ณ , OrderService๋ ์ฃผ๋ฌธํ ๋ ์ ์ ๊ฒ์ฆ์ด ํ์ํด์
UserService๊ฐ ํ์ํด์
๐ฆ: ์คํธ~ ๊ทธ ์์กด์ฑ ํ์ดํ๋ฅผ ๊ทธ๋ฆผ์ผ๋ก ๊ทธ๋ฆฐ๋ค๋ฉด, ์ด๋ค ๋ชจ์์ด ๋ ๊น์?
๋ง์น ์ฐ๋ชป์์ ์ค๋ฆฌ๋ค์ด ์๋ก๋ฅผ ๋ฐ๋ผ๊ฐ๋ ๊ฒ์ฒ๋ผ์!
๋: ์... ์๋ก๋ฅผ ๊ฐ๋ฆฌํค๋๊น... ์ํ? ์, ์ํ์ด๋ค
๐ฆ: ๊ฝฅ! ๋ง์์! ๊ทธ๋ผ OrderService๊ฐ ์ ์ ๋ฅผ ๊ฒ์ฆํ๋ ๊ฒ,
'๊ฐ์ฒด๊ฐ ์์ฑ๋๋ ์์ '์ ๊ผญ ํ์ํ ๊ฑด๊ฐ์?
์๋๋ฉด '์ฃผ๋ฌธ์ด ์ค์ ๋ก ๋ค์ด์ฌ ๋'๋ง ํ์ํ ๊ฑด๊ฐ์?
๋: ์ฃผ๋ฌธ์ด ๋ค์ด์ฌ ๋๋ง... ์! ๊ทธ๋ฌ๋ฉด ์์ฑ์ ์ฃผ์
์ด ์๋๋ผ
๋ฉ์๋ ํธ์ถ ์์ ์ ๊ฐ์ ธ์ค๋ฉด ๋๊ฒ ๋ค์!
๐ฆ: ๐ ์ค๋ฆฌ์ค๋ฆฌ! ์๋ฒฝํด์! ์ค์ค๋ก ํต์ฌ์ ์ฐพ์๋์ด์!
'์์ฑ ์์ '๊ณผ '์ฌ์ฉ ์์ '์ ์ฐจ์ด๋ฅผ ๋ฐ๊ฒฌํ ๊ฒ ๋๋จํด์! โจ
โ 3๋ถ ๊ฑธ๋ ธ์ง๋ง, ์๋ฆฌ๋ฅผ ์์ ํ ์ดํดํจ
- ๋๋ฒ๊น : ์๋ฌ์ ๊ทผ๋ณธ ์์ธ ์ฐพ๊ธฐ
- ์๊ณ ๋ฆฌ์ฆ: ์ต์ ํ ์ ๋ต ๋ฐ๊ฒฌ
- ์ค๊ณ: ์ํคํ ์ฒ ๊ฒฐ์ ๋ ผ๋ฆฌ ๋ค์ง๊ธฐ
- ์ฝ๋ ๋ฆฌ๋ทฐ: ๊ฐ์ ์ ์ค์ค๋ก ๋ฐ๊ฒฌ
- ๋ฐ๋ณต ์์ : CRUD ์ฝ๋ ์์ฑ ๋ฑ
- ๋ณด์ผ๋ฌํ๋ ์ดํธ: ์ค์ ํ์ผ ์์ฑ ๋ฑ
- ๊ธด๊ธ ์ํฉ: ํ๋ก๋์ ์ฅ์ ๋ฑ
โ ์ด๋ฐ ๊ฒฝ์ฐ๋ ์ผ๋ฐ AI๋ก ๋น ๋ฅด๊ฒ ํด๊ฒฐํ๊ณ , ํ์ต์ด ํ์ํ ๋ถ๋ถ์๋ง ๋ฌ๋ฒ๋ ์ฌ์ฉ
# ๐ฆ ๋ฌ๋ฒ๋ ๋๋ฒ๊น ํํธ๋ ## ํนํ ๋ชจ๋ ์ถ๊ฐ - ์์คํ ์ค๊ณ ๋ฉด์ ๋ชจ๋: ๋๊ท๋ชจ ์์คํ ์ค๊ณ ์ ํธ๋ ์ด๋์คํ ์ง๋ฌธ - ์ฝ๋ ๋ฆฌ๋ทฐ ๋ชจ๋: ๊ฐ์ ์ ๋ฐ๊ฒฌ์ ์ํ ์ง๋ฌธ - ์๊ณ ๋ฆฌ์ฆ ๋ชจ๋: ์๊ฐ/๊ณต๊ฐ ๋ณต์ก๋ ๋ถ์ ์ง๋ฌธ
# ~/.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)
๊ฐ์ ์์ด๋์ด๋ ์๋ก์ด ๋ฐ๋ชจ๊ฐ ์๋ค๋ฉด:
- Fork this repository
- Create your feature branch
- Commit your changes
- Push to the branch
- Create a Pull Request
MIT License - ์์ ๋กญ๊ฒ ์ฌ์ฉํ์ธ์!
- ์ด์: GitHub Issues
- ์ด๋ฉ์ผ: academey@gmail.com
์ด ํ๋ก์ ํธ๊ฐ ๋์์ด ๋์๋ค๋ฉด โญ ๋ฒํผ์ ๋๋ฌ์ฃผ์ธ์! ๋ ๋ง์ ์ฌ๋๋ค์ด ๋ฌ๋ฒ๋ ๋ฐฉ์์ผ๋ก ๊ณต๋ถํ ์ ์๋๋ก ๊ณต์ ํด์ฃผ์ธ์.
Made with ๐ฆ by ๋ฉ์ฝ๋ฉ์ฝ
๐บ YouTube