Pairing rounds โ€” ๊ฐ™์ด ์ผํ•˜๋Š” ๋ฒ•

Opendoor๋Š” ์ด ๋ผ์šด๋“œ๋ฅผ ๋‘ ๋ฒˆ ๋ณธ๋‹ค. ๊ทธ๋“ค์˜ ๋ง: โ€œ๋ฌธ์ œ๋ฅผ ๋๋‚ด๋Š”์ง€ ๋ณด๋ ค๋Š” ๊ฒŒ ์•„๋‹ˆ๋ผ, ๊ฐ™์ด ์ผํ•˜๋ฉด ์–ด๋–ค ์‚ฌ๋žŒ์ธ์ง€ ๋ณด๋ ค๋Š” ๊ฒƒ.โ€ ์ฆ‰ ํ˜‘์—…์ด ์‹œํ—˜์ด๋‹ค โ€” think-aloud ยท ์งˆ๋ฌธ ยท ๋ฐ˜๋ฐ• ยท ํ”ผ๋“œ๋ฐฑ ์ˆ˜์šฉ ยท AI ๊ฒ€์ฆ ยท ๋งˆ๋ฌด๋ฆฌ.

60๋ถ„ ํ”Œ๋ ˆ์ด๋ถ โ€” ๋‹จ๊ณ„๋งˆ๋‹ค ๋ญ˜ ์ฑ„์ ํ•˜๋‚˜

  1. 1Join the problem

    ๋ฌธ์ œ๋ฅผ ๋ฐ›์œผ๋ฉด ๊ฐ™์ด ๋ณด๋Š” ํ™”๋ฉด์ด๋ผ ์ƒ๊ฐํ•˜๊ณ  ์†Œ๋ฆฌ ๋‚ด์„œ ์ฝ๊ธฐ. ๊ฐ€๋ณ๊ฒŒ ํ•œ๋งˆ๋”” ํ•ด์„œ ๋ถ„์œ„๊ธฐ ํ’€๊ธฐ. ์ฒ˜์Œ 1๋ถ„์€ ์ฝ”๋“œ ์ƒ๊ฐ ๋ง๊ณ  '๊ฐ™์€ ํŽธ ๋˜๊ธฐ'.

    โš ๏ธ ์‹œํ—˜ ๋ณด๋“ฏ ๊ตณ์–ด์„œ ๋ง์—†์ด ํ˜ผ์ž ์ฝ๊ธฐ ์‹œ์ž‘ํ•จ. ์ฒซ ์นจ๋ฌต 2๋ถ„์ด ์ „์ฒด ์ธ์ƒ์„ ๋ง์นจ.

    ์ฑ„์ : ๊ฐ™์ด ์ผํ•˜๋ฉด ํŽธํ•œ ์‚ฌ๋žŒ์ธ์ง€. ์ฒซ 1๋ถ„์—์„œ '๋™๋ฃŒ ๋А๋‚Œ'์ด ๋‚˜๋Š”์ง€.

    โ€œOkay, this looks fun. Let me read it out loud real quick.โ€

    checking microphoneโ€ฆ

  2. 2Clarify

    ์ฝ”๋“œ ์น˜๊ธฐ ์ „์— ์ž…๋ ฅยท์ถœ๋ ฅ ์˜ˆ์‹œ ํ•˜๋‚˜๋ฅผ ๋‚ด๊ฐ€ ์ง์ ‘ ๋งŒ๋“ค์–ด์„œ ํ™•์ธ ๋ฐ›๊ธฐ. ์• ๋งคํ•œ ๊ฑด ๊ทธ ์ž๋ฆฌ์—์„œ ๋ฐ”๋กœ ๋ฌป๊ธฐ. ์งˆ๋ฌธ 2~3๊ฐœ๋ฉด ์ถฉ๋ถ„.

    โš ๏ธ ๋‹ค ์ดํ•ดํ•œ ์ฒ™ํ•˜๊ณ  ๋ฐ”๋กœ ์ฝ”๋”ฉ ์‹œ์ž‘. 10๋ถ„ ๋’ค์— ๋ฐฉํ–ฅ์ด ํ‹€๋ฆฐ ๊ฑธ ์•Œ๊ณ  ์‹œ๊ฐ„ ๋‹ค ๋‚ ๋ฆผ.

    ์ฑ„์ : ์• ๋งคํ•œ ์š”๊ตฌ์‚ฌํ•ญ์„ ์–ด๋–ป๊ฒŒ ๋‹ค๋ฃจ๋Š”์ง€. ์งˆ๋ฌธ์€ ๊ฐ์ ์ด ์•„๋‹ˆ๋ผ ๊ฐ€์ ์ด๋ผ๋Š” ๊ฑธ ์•„๋Š”์ง€.

    โ€œQuick check โ€” if the input's like this, we'd expect that, right?โ€

    checking microphoneโ€ฆ

  3. 3Share the plan

    30์ดˆ์งœ๋ฆฌ ๊ณ„ํš ๋งํ•˜๊ธฐ. ๋‹จ๊ณ„ ๋‘์„ธ ๊ฐœ๋งŒ, ์™„๋ฒฝํ•  ํ•„์š” ์—†์Œ. ๋์— ๊ผญ ๋™์˜ ๊ตฌํ•˜๊ณ  ์‹œ์ž‘ํ•˜๊ธฐ.

    โš ๏ธ ๋จธ๋ฆฟ์†์œผ๋กœ๋งŒ ์„ค๊ณ„ํ•˜๊ณ  ์นจ๋ฌตํ•˜๊ฑฐ๋‚˜, ๋ฐ˜๋Œ€๋กœ ์™„๋ฒฝํ•œ ์„ค๊ณ„๋ฅผ 5๋ถ„ ๋„˜๊ฒŒ ๊ฐ•์˜ํ•จ.

    ์ฑ„์ : ์ผ์„ ์ชผ๊ฐœ๋Š” ๋Šฅ๋ ฅ. ๊ทธ๋ฆฌ๊ณ  ์ƒ๋Œ€๋ฅผ ๊ณ„ํš์— ํƒœ์šฐ๋Š”์ง€, ํ˜ผ์ž ๋‹ฌ๋ฆฌ๋Š”์ง€.

    โ€œMy plan's pretty simple โ€” map first, then handle expiry. Sound okay?โ€

    checking microphoneโ€ฆ

  4. 4Code in small steps

    ํ•œ ๋ฒˆ์— ํ•œ ๋ฉ์–ด๋ฆฌ๋งŒ ์น˜๊ณ , ์น˜๋ฉด์„œ ์ง€๊ธˆ ๋ญ ํ•˜๋Š”์ง€ ์งง๊ฒŒ ๋งํ•˜๊ธฐ. ๋ง‰ํžˆ๋ฉด ๋ง‰ํ˜”๋‹ค๊ณ  ์†”์งํ•˜๊ฒŒ ๋งํ•˜๊ธฐ โ€” ๊ทธ๊ฒŒ ํŽ˜์–ด์ž„.

    โš ๏ธ 5๋ถ„ ๋„˜๊ฒŒ ๋ง์—†์ด ํƒ€์ดํ•‘. ์ธํ„ฐ๋ทฐ์–ด๊ฐ€ ๋‚ด ๋จธ๋ฆฟ์†์„ ๋ชป ๋”ฐ๋ผ์™€์„œ ๋„์™€์ค„ ์ˆ˜๋„ ์—†์Œ.

    ์ฑ„์ : ์ƒ๊ฐ์ด ๋ฐ–์œผ๋กœ ๋ณด์ด๋Š”์ง€. ๋ง‰ํ˜”์„ ๋•Œ ์ˆจ๊ธฐ๋Š”์ง€, ๊ฐ™์ด ํ‘ธ๋Š”์ง€.

    โ€œI'll do the happy path first, then come back for edge cases.โ€

    checking microphoneโ€ฆ

  5. 5Use AI, verify it

    AI๋Š” ๊ณจ๊ฒฉ์ด๋ž‘ ํ…Œ์ŠคํŠธ ์•„์ด๋””์–ด์šฉ์œผ๋กœ๋งŒ. ๋ฐ›์€ ์ฝ”๋“œ๋Š” ํ•œ ์ค„์”ฉ ์ฝ๊ณ  ์˜์‹ฌ ๊ฐ€๋Š” ๋ถ€๋ถ„์„ ์†Œ๋ฆฌ ๋‚ด์„œ ์งš๊ธฐ. ํ•ต์‹ฌ ๋กœ์ง์€ ๋‚ด ์†์œผ๋กœ.

    โš ๏ธ AI ๋‹ต์„ ๊ทธ๋Œ€๋กœ ๋ถ™์—ฌ๋„ฃ๊ณ  ์„ค๋ช… ๋ชป ํ•จ. ๋ฐ˜๋Œ€๋กœ ์ž˜ ๋ณด์ด๋ ค๊ณ  AI๋ฅผ ์•„์˜ˆ ์•ˆ ์“ฐ๋Š” ๊ฒƒ๋„ ํƒˆ๋ฝ ์‚ฌ์œ .

    ์ฑ„์ : AI๋ฅผ ๋„๊ตฌ๋กœ ๋ถ€๋ฆฌ๋Š”์ง€, AIํ•œํ…Œ ๋Œ๋ ค๊ฐ€๋Š”์ง€. ๊ฒ€์ฆํ•˜๋Š” ์Šต๊ด€์ด ๋ชธ์— ๋ฐฐ์—ˆ๋Š”์ง€.

    โ€œI'll let AI draft this part, then we sanity-check it together.โ€

    checking microphoneโ€ฆ

  6. 6React to input

    ์ธํ„ฐ๋ทฐ์–ด๊ฐ€ ๋ผ์–ด๋“ค๋ฉด ์ผ๋‹จ ์ง„์งœ๋กœ ๋“ฃ๊ธฐ. ๋” ์ข‹์œผ๋ฉด ๋ฐ”๋กœ ๋ฐ˜์˜ํ•˜๊ณ  ๊ณ ๋ง™๋‹ค๊ณ  ํ•˜๊ธฐ. ์•„๋‹ˆ๋‹ค ์‹ถ์œผ๋ฉด ์ด์œ  ํ•˜๋‚˜๋งŒ ๋“ค์–ด์„œ ๋ถ€๋“œ๋Ÿฝ๊ฒŒ ๋ฐ˜๋Œ€.

    โš ๏ธ ๋ฌด์กฐ๊ฑด '๋„ค๋„ค' ํ•˜๊ณ  ๋‹ค ๋ฐ›์•„๋“ค์ด๊ธฐ. ์•„๋‹ˆ๋ฉด ๋‚ด ๋ฐฉ์‹ ์ง€ํ‚ค๋А๋ผ ๊ธธ๊ฒŒ ๋ฐฉ์–ด์ „ ๋ฒŒ์ด๊ธฐ. ๋‘˜ ๋‹ค ํƒˆ๋ฝ.

    ์ฑ„์ : ํ”ผ๋“œ๋ฐฑ ์†Œํ™”๋ ฅ. ์ค๋Œ€๋Š” ์žˆ๋Š”๋ฐ ์ƒ๋Œ€ ๊ธฐ๋ถ„ ์•ˆ ์ƒํ•˜๊ฒŒ ํ•˜๋Š”์ง€ โ€” ์ด ๋ผ์šด๋“œ์˜ ์ง„์งœ ํ•ต์‹ฌ.

    โ€œGood catch โ€” though I think that breaks expiry. Can I show you?โ€

    checking microphoneโ€ฆ

  7. 7Test and verify

    ๋‹ค ๋๋‹ค๊ณ  ๋งํ•˜๊ธฐ ์ „์— ์ง์ ‘ ๋Œ๋ฆฌ๊ธฐ. ์•„๊นŒ ๋งŒ๋“  ์˜ˆ์‹œ ๋„ฃ๊ณ  ๊ฒฐ๊ณผ ํ™•์ธ. ์—ฃ์ง€ ์ผ€์ด์Šค ๋‘์–ด ๊ฐœ๋ฅผ ์†Œ๋ฆฌ ๋‚ด์„œ ์ฒดํฌ.

    โš ๏ธ '๋  ๊ฒƒ ๊ฐ™์•„์š”'๋กœ ๋๋ƒ„. ์•ˆ ๋Œ๋ ค๋ณด๊ณ  ์ž์‹ ๊ฐ๋งŒ ๋ณด์—ฌ์ฃผ๋‹ค๊ฐ€ ๋ฒ„๊ทธ ํ•˜๋‚˜์— ๋ฌด๋„ˆ์ง.

    ์ฑ„์ : ๋๊นŒ์ง€ ํ™•์ธํ•˜๋Š” ์Šต๊ด€. '๋  ๊ฒƒ ๊ฐ™๋‹ค'์™€ '๋œ๋‹ค'๋ฅผ ๊ตฌ๋ถ„ํ•˜๋Š” ์—”์ง€๋‹ˆ์–ด์ธ์ง€.

    โ€œLet me actually run it โ€” I don't trust code I haven't run.โ€

    checking microphoneโ€ฆ

  8. 8Wrap up with trade-offs

    ๋งˆ์ง€๋ง‰ 2๋ถ„: ๋ญ˜ ํฌ๊ธฐํ–ˆ๊ณ , ์‹œ๊ฐ„ ๋” ์žˆ์œผ๋ฉด ๋ญ˜ ๋ฐ”๊ฟ€์ง€ ํ•œ๋‘ ๊ฐœ๋งŒ ๋งํ•˜๊ธฐ. ๋‹จ์ ์„ ๋‚ด๊ฐ€ ๋จผ์ € ๋งํ•˜๋ฉด ๊ทธ๊ฒŒ ๊ณง ์‹ค๋ ฅ.

    โš ๏ธ ์‹œ๊ฐ„ ๋๋‚˜๋ฉด ๊ทธ๋ƒฅ ๋ฉˆ์ถ”๊ธฐ. ๋˜๋Š” ๋‹จ์  ์ˆจ๊ธฐ๊ณ  ์ž๋ž‘๋งŒ ํ•˜๊ธฐ โ€” ์‹œ๋‹ˆ์–ด์ฒ˜๋Ÿผ ์•ˆ ๋ณด์ž„.

    ์ฑ„์ : ์ž๊ธฐ ์ฝ”๋“œ์˜ ํ•œ๊ณ„๋ฅผ ์•„๋Š”์ง€. ํ”„๋กœ๋•์…˜ ๊ฐ๊ฐ๊ณผ ์‹œ๋‹ˆ์–ด๋‹ค์šด ํŒ๋‹จ๋ ฅ.

    โ€œIt works, but honestly I'd refactor the expiry part with more time.โ€

    checking microphoneโ€ฆ

ํ˜‘์—… ์˜์–ด ํ”„๋ ˆ์ด์ฆˆ๋ถ โ€” ์ž…์— ๋ถ™์„ ๋•Œ๊นŒ์ง€

  • ์ฝ”๋”ฉ ์‹œ์ž‘ ์ง์ „, ๊ณ„ํš์„ ํ•œ ์ค„๋กœ ๋งํ•  ๋•Œ

    โ€œI'll start with the happy path, then come back for edge cases.โ€

    checking microphoneโ€ฆ

  • ๋‚จ์˜ ์ฝ”๋“œ๋ฅผ ์ฝ๊ธฐ ์‹œ์ž‘ํ•  ๋•Œ โ€” ์กฐ์šฉํžˆ ์ฝ์ง€ ๋ง๊ณ  ์ด๋ ‡๊ฒŒ

    โ€œLet me read this part first โ€” I want to see where state changes.โ€

    checking microphoneโ€ฆ

  • ์ƒ๊ฐํ•˜๋А๋ผ ๋ง์ด ๋Š๊ธธ ๋•Œ, ์นจ๋ฌต ๋Œ€์‹ 

    โ€œGive me a sec โ€” I'm thinking about how to handle duplicates.โ€

    checking microphoneโ€ฆ

  • ๋‘ ๊ฐ€์ง€ ๋ฐฉ๋ฒ• ์‚ฌ์ด์—์„œ ๊ณ ๋ฏผ๋  ๋•Œ, ๊ณ ๋ฏผ์„ ๊ทธ๋Œ€๋กœ ๋งํ•˜๊ธฐ

    โ€œI'm torn between a map and a list โ€” map feels simpler.โ€

    checking microphoneโ€ฆ

  • ์ฝ”๋“œ์—์„œ ๋ญ”๊ฐ€ ์ด์ƒํ•œ ๊ฑธ ๋ฐœ๊ฒฌํ–ˆ์„ ๋•Œ

    โ€œHmm, this looks off โ€” we never reset this flag.โ€

    checking microphoneโ€ฆ

  • ํƒ€์ดํ•‘ํ•˜๋ฉด์„œ ์ง€๊ธˆ ๋ญ ํ•˜๋Š” ์ค‘์ธ์ง€ ์งง๊ฒŒ

    โ€œSo here I'm just checking the state before we transition.โ€

    checking microphoneโ€ฆ

Cursor/์—๋””ํ„ฐ ์ตœ์†Œ ๋‹จ์ถ•ํ‚ค โ€” ํŽ˜์–ด๋ง ์ค‘ ๋ฒ„๋ฒ…์ด์ง€ ์•Š๊ฒŒ

  • โŒ˜P โ€” ํŒŒ์ผ ์—ด๊ธฐ (Quick Open)
  • โŒ˜โ‡งP โ€” Command Palette
  • โŒ˜B โ€” ์‚ฌ์ด๋“œ๋ฐ” ํ† ๊ธ€
  • โŒ˜J โ€” ํ•˜๋‹จ ํŒจ๋„ ํ† ๊ธ€
  • โŒƒ` โ€” ํ„ฐ๋ฏธ๋„ ํฌ์ปค์Šค
  • โŒ˜1 โ€” ์—๋””ํ„ฐ ํฌ์ปค์Šค

์šฉ์–ด: Editor=์ฝ”๋“œ ์˜์—ญ ยท Sidebar=์ขŒ์ธก ํŒŒ์ผํŠธ๋ฆฌ ยท Panel=ํ•˜๋‹จ(ํ„ฐ๋ฏธ๋„/๋ฌธ์ œ) ยท ์ด 6๊ฐœ๋งŒ ์†์— ๋ถ™์ด๋ฉด ๋œ๋‹ค.

์—ฐ์Šต ๋ฃจํ”„: โ‘  ํ”Œ๋ ˆ์ด๋ถ 8๋‹จ๊ณ„ ์˜์–ด ํ•œ ์ค„์”ฉ ๋งํ•˜๊ธฐ โ†’ โ‘ก ์˜ค๋Š˜์˜ ํ”„๋ ˆ์ด์ฆˆ ์นดํ…Œ๊ณ ๋ฆฌ 1๊ฐœ ์ž…์— ๋ถ™์ด๊ธฐ โ†’ โ‘ข /copilot์—์„œ ์‹ค์ œ๋กœ ํŽ˜์–ดํ•˜๋ฉฐ ๊ทธ ๋ฌธ์žฅ๋“ค ์จ๋จน๊ธฐ โ†’ ๋๋‚˜๋ฉด Grade my session์œผ๋กœ ์ฑ„์ .
๐Ÿ—ก ๋‚ด ๋…ผ๋ฆฌ๋กœ ์„ค๋“/๋ฐฉ์–ด ์‹ค์ „ ์—ฐ์Šต์€ /decide ์•„๋ฌด ์นด๋“œ๋‚˜ ์—ด๋ฉด ๋งจ ์•„๋ž˜ Defend it โ€” AI ์‹œ๋‹ˆ์–ด๊ฐ€ ๋ฐ˜๋ฐ•ํ•˜๊ณ , ๋๋‚˜๋ฉด ์„ค๋“๋ ฅ 5์ถ• ์ฑ„์ .