Why AI Didn't Actually Make You Ship Faster โ Gabriel Spencer-Harper, Meticulous
ํ ์ค ํต์ฌ
AI๊ฐ ์ฝ๋๋ฅผ ๋ ๋นจ๋ฆฌ ์จ๋ ๊ฒ์ฆ์ด ๋ฐ๋ผ๊ฐ์ง ๋ชปํ๋ฉด ๋ฐฐ์ก ์๋๋ ๋นจ๋ผ์ง์ง ์์ผ๋ฉฐ, Meticulous๋ ํ๋ฐํธ์๋ ๋ณ๊ฒฝ์ ๊ธฐ๋กยท์ฌ์ยท์๊ฐ์ diff๋ก ๊ฒ์ฆํด ๊ทธ ๋ณ๋ชฉ์ ์์ ๋ ค๋ ๋๊ตฌ๋ค.
์๊ฐ๋ณ ์์ฝ
-
0:00
์๊ฐ ๋ฐํ์ ์ฃผ์ ๋ ์ฝ๋ ๊ฒ์ฆ์ด๋ฉฐ, ์ ์ฒด ํ๋ฆ์ ์ ํ ์๊ฐ, ๋ฐฐ๊ฒฝ ์ค๋ช , ๋ฐ๋ชจ, ๊ธฐ์ ์ค๋ช ์์๋ก ์งํ๋๋ค.
-
0:12
Gabe ์๊ฐ Meticulous์ ๊ณต๋์ฐฝ์ ์์ด์ CEO์ธ Gabe Spencer-Harper๊ฐ ๋ฐํ์๋ก ๋ฑ์ฅํ๋ฉฐ, ๊ณง ์ ํ ๋ฐ๋ชจ์ ๊ธฐ์ ๊ฐ์๋ฅผ ๋ณด์ฌ์ค ์ค๋น๋ฅผ ํ๋ค.
-
0:27
๊ฒ์ฆ์ด ์๋ก์ด ๋ณ๋ชฉ ์์ด์ ํธ๊ฐ ์ฝ๋๋ฅผ ์ฐ๋ ์๋๋ณด๋ค ๊ฒ์ฆ ์๋๊ฐ ๋๋ฆฌ๋ฉด, ์กฐ์ง์ ๋ณ๋ชฉ์ ๊ฐ๋ฐ์ด ์๋๋ผ ํ์ธ ์์ ์ผ๋ก ์ด๋ํ๋ค. ๊ทธ ๊ฒฐ๊ณผ ์๋์ ๋ฒ๊ทธยท์ฌ์ฉ์ ๊ฒฝํ ์ฌ์ด์์ ๊ณ์ ์ ์ถฉํด์ผ ํ๋ค.
-
1:12
Meticulous๊ฐ ํ๋ ์ผ Meticulous๋ ํ๋ฐํธ์๋ ์ฝ๋๋ฒ ์ด์ค์ ๋ํด ๊ฑฐ์ ์์ ํ ๊ฒ์ฆ์ ๊ฐ๋ฐ์ ์ถ๊ฐ ์์ ์์ด ์ ๊ณตํ๋ค. Discord, Dropbox, Notion ๊ฐ์ ํ์ฌ์์ ์ด๋ฏธ ์ผ์์ ์ผ๋ก ์ฌ์ฉ๋๊ณ ์๋ค.
-
1:47
AI๋ ์ฝ๋๋ณด๋ค ๊ฒํ ๋ฅผ ๋ ๋๋ฆฌ๊ฒ ๋ง๋ ๋ค AI๋ ์ฌ๋์ด ๊ฒํ ํ ์ ์๋ ์๋๋ณด๋ค ํจ์ฌ ๋น ๋ฅด๊ฒ ์ฝ๋๋ฅผ ์์ฑํ๋ฏ๋ก, ๊ฒํ ์ ๊ฒ์ฆ์ด ํต์ฌ ๋ณ๋ชฉ์ด ๋๋ค. ๋จ์ํ assertion ๊ธฐ๋ฐ ํ ์คํธ๋ง์ผ๋ก๋ ์ด ์๋๋ฅผ ๋ฐ๋ผ๊ฐ๊ธฐ ์ด๋ ต๋ค.
-
2:07
assertion ํ ์คํธ๋ง์ผ๋ก๋ ๋ถ์กฑํ๋ค ์ฌ์ ์ ์ฌ๋ฐ๋ฅธ ๋์์ ๋ชจ๋ assertion์ผ๋ก ์ ์ํ๋ ค ํด๋, ๊ฐ๋ฅํ ํ๊ท ์กฐํฉ์ด ๋๋ฌด ๋ง์ ์ ๋ถ ํฌ์ฐฉํ ์ ์๋ค. ๊ทธ๋์ ํ ์คํธ๋ฅผ ์ ์จ๋ ์ค์ ๋ณ๊ฒฝ ์ํฅ์ ๋์น๊ธฐ ์ฝ๋ค.
-
2:27
์ด PR์ ๋จธ์ง ๋ฒํผ์ ๋๋ฅผ ์ ์๋๊ฐ AI๊ฐ ๋ง๋ PR์ ๋ฐ์๋ ๋๋ถ๋ถ์ ์กฐ์ง์ ๋ฐ๋ก ๋จธ์งํ๊ธฐ ์ด๋ ต๊ณ , feature flagยทroleยทpermissionยท์ค์ ยท์ฃ์ง ์ผ์ด์ค๋ฅผ ์ง์ ํ์ธํด์ผ ํ๋ค. ๊ฒ์ฆ ๋ฒ์๊ฐ ๋์์๋ก ์ฌ๋์ด ์ต์ข ํ๋จ์ ๋ ๋ง์ ์๊ฐ์ ์จ์ผ ํ๋ค.
-
3:01
๋ฒ๊ทธ, flaky test, ์๊ฐ ์์ค ํ์ฌ ๋ฐฉ์์ ๋ฒ๊ทธ์ ํ๊ท๋ก ์ด์ด์ง ์ ์๊ณ , ๋๋จ ํ ์คํธ ์ ์ง๋ณด์์ ์กฐ์ง ์๊ฐ์ ๋ ์๋ฆฟ์ ๋น์จ์ด ๋ค์ด๊ฐ๋ค. ์๋ ๊ฒ์ฆ๊ณผ flaky test ๋๋ฒ๊น , ํ ์คํธ ๊ฐฑ์ ์ ๋ง์ ์๊ฐ์ด ์๋ชจ๋๋ค.
-
3:46
์์ ํ ๊ฒ์ฆ์ด ์ฌ๋ ๊ฒ ๊ฒ์ฆ์ด ์ถฉ๋ถํ ํฌ๊ด์ ์ด๋ฉด ์์กด์ฑ ์ ๋ฐ์ดํธ, ๋๊ท๋ชจ ๋ฆฌํฉํฐ๋ง, AI ์์ฑ ๋ณ๊ฒฝ์ ํจ์ฌ ๋ ์์ ์๊ฒ ์ํํ ์ ์๋ค. ๊ทธ๋์ ํต์ฌ ์ง๋ฌธ์ ์ด๋ป๊ฒ ๊ทธ ์์ค์ ๊ฒ์ฆ์ ๋ฌ์ฑํ๋๋๋ค.
-
4:16
๊ธฐ๋ก๊ณผ ์ฌ์ ๋ฐ๋ชจ ๋นํ๋ก๋์ ํ๊ฒฝ์ ํ ์ค์ JavaScript๋ฅผ ๋ฃ์ด ๋ธ๋ผ์ฐ์ ํ๋ฆ์ ๊ธฐ๋กํ๊ณ , PR์ด ์ด๋ฆฌ๋ฉด ๊ทธ ํ๋ฆ ์ผ๋ถ๋ฅผ localhost์์ ์ฌ์ํด ๊ฐ ์์ ์ ์คํฌ๋ฆฐ์ท์ ๋ง๋ ๋ค. ๋ณ๊ฒฝ ์ ํ์ ํ๋ฉด ์ํ์ค๋ฅผ diffํ์ฌ ์ค์ ๋ก ๋ฌ๋ผ์ง๋ ๋ถ๋ถ์ ๋ณด์ฌ์ค๋ค.
-
5:51
PR์์ ์๊ฐ์ diff ๊ฒํ ๊ฐ๋ฐ์๋ ๋๊ธ๋ก ์ฌ๋ผ์จ diff๋ฅผ ๋ณด๊ณ ๋ณ๊ฒฝ์ด ๊ธฐ๋๋ ๊ฒ์ธ์ง ์๋์ง๋ฅผ ํ๋จํ๋ค. assertion์ฒ๋ผ ์ ๋ต์ ๋ฏธ๋ฆฌ ์ฝ๋๋ก ๊ณ ์ ํ๋ ๋์ , ๋ณด์ด๋ ์ฐจ์ด๋ฅผ ๊ฒํ ์์ ์ ํ๋จํ๋ ๋ฐฉ์์ด๋ค.
-
7:11
๋คํธ์ํฌ๋ฅผ ๋ชจํนํ๋ ๋ฐฉ์ ๊ธฐ๋ก ์์ ์ ๋คํธ์ํฌ ์์ฒญ๊ณผ ์๋ต์ ์ฌ์ ์์ ์ ๊ทธ๋๋ก stub ์ฒ๋ฆฌํด ํ ์คํธ๋ฅผ ๋ฐ๋ณต ์คํํด๋ ๊ฒฐ๊ณผ๊ฐ ๊ฐ๊ฒ ๋ง๋ ๋ค. ํ ์คํธ ๊ฐ ๊ฒฉ๋ฆฌ๊ฐ ๋๋ฏ๋ก race condition์ด ์ค๊ณ , ๋ณ๋ ฌ ์คํ์ผ๋ก ๋ช ๋ถ ์์ ๊ฒฐ๊ณผ๋ฅผ ์ป๋๋ค.
-
8:01
๊ฒฐ์ ๋ก ์ ๋ธ๋ผ์ฐ์ ๋ธ๋ผ์ฐ์ ์ ์ค์ผ์ค๋ง ๊ณ์ธต๋ถํฐ deterministicํ๊ฒ ๋ณด๊ฐํด ์ ๋๋ฉ์ด์ , ํ์ด๋จธ, CPU ์๋ ๊ฐ์ ๋๋ค์ฑ์ ์ค์ธ๋ค. ๊ทธ ๊ฒฐ๊ณผ Cypress๋ Playwright๋ณด๋ค ํจ์ฌ ์ ์ flaky test๊ฐ ๋ฐ์ํ๋ค.
-
8:41
์ปค๋ฒ๋ฆฌ์ง ๊ธฐ๋ฐ ํ๋ฆ ์ ํ ๊ธฐ๋กํ ๊ฐ ์ธ์ ์ main branch์ ์ฌ์ํด ์ด๋ค ์ฝ๋ ๋ผ์ธ์ด ์คํ๋๋์ง ์ถ์ ํ๊ณ , ์ฝ๋ ์ปค๋ฒ๋ฆฌ์ง๋ฅผ ๊ฐ์ฅ ๋๊ฒ ๋ง๋๋ workflow ์งํฉ์ ๊ณ ๋ฅธ๋ค. ์ด๋ฅผ ํตํด ๋ชจ๋ ๊ธฐ๋ฅ ์กฐํฉ๊ณผ ๊ถํยท์ค์ ๋ถ๊ธฐ๋ฅผ ๋ ํฌ๊ด์ ์ผ๋ก ๋ฎ๋๋ค.
-
9:25
์ฝ๋ ์ปค๋ฒ๋ฆฌ๊ฐ ๋๋์ด ์๋ฏธ๋ฅผ ๊ฐ๋ ์ด์ ์ผ๋ฐ์ ์ธ ํ ์คํธ์์ ์ฝ๋ ์ปค๋ฒ๋ฆฌ๋ assertion ํ์ง์ ๋ณด์ฅํ์ง ๋ชปํ์ง๋ง, Meticulous๋ ๋ชจ๋ ์๊ฐ์ ์คํฌ๋ฆฐ์ท์ ๋น๊ตํด ์ฝ๋๊ฐ ์ค์ ๋ก ํ ์คํธ๋ ๊ฒ๊ณผ ๊ฐ๊น๊ฒ ๋ง๋ ๋ค. ๊ทธ๋์ ํฝ์ ํ๋์ ์ฐจ์ด๋ ์ก์๋ผ ์ ์๊ณ , ์ปค๋ฒ๋ฆฌ์ง ์๊ณ ๋ฆฌ์ฆ๊ณผ ๋ฎ์ ํ๋ํค๋์ค๊ฐ ํจ๊ป ์๋ํด์ผ ํ๋ค.
-
10:45
๋ง๋ฌด๋ฆฌ ๋ฐํ๋ ์ ํ๊ณผ ๋ถ์ค๋ฅผ ์๋ดํ๋ฉฐ ๋ง๋ฌด๋ฆฌ๋๊ณ , ํต์ฌ ๋ฉ์์ง๋ AI ์๋์ ์๋๋ฅผ ์ ํํ๋ ๊ฒ์ ์ฝ๋ ์์ฑ์ด ์๋๋ผ ๊ฒ์ฆ์ด๋ผ๋ ์ ์ด๋ค.
์ค๋ฌด ์ธ์ฌ์ดํธ
- AI ๋์ ํจ๊ณผ๋ฅผ ์ฒด๊ฐํ๋ ค๋ฉด ์์ฑ ์๋๋ณด๋ค ๊ฒ์ฆ ์๋๋ฅผ ๋จผ์ ๊ฐ์ ํด์ผ ํ๋ฉฐ, ํนํ ํ๋ฐํธ์๋์ฒ๋ผ ์ํ ์กฐํฉ์ด ๋ง์ ์์ญ์์ ์๊ฐ์ ๊ฒ์ฆ์ด ๊ฐ๋ ฅํ๋ค.
- assertion ์ค์ฌ ํ ์คํธ๋ง ๋๋ฆฌ๋ ๋ฐฉ์๋ณด๋ค, ์ค์ ์ฌ์ฉ์ ํ๋ฆ์ ๊ธฐ๋กยท์ฌ์ํด ๋ณ๊ฒฝ ์ ํ ์ฐจ์ด๋ฅผ ๋ณด๋ ๋ฐฉ์์ด ํ๊ท ๊ฒ์ถ๊ณผ ๋ฆฌ๋ทฐ ํจ์จ์ ๋์ผ ์ ์๋ค.
- ํ๋ํค๋์ค ์ ๊ฑฐ์ ์ปค๋ฒ๋ฆฌ์ง ์ต์ ํ๋ ๋ณ๊ฐ๊ฐ ์๋๋ผ ํ ์์คํ ์ผ๋ก ์ค๊ณํด์ผ ํ๋ฉฐ, ๊ทธ๋์ผ ๋๊ท๋ชจ ์๋ ๊ฒ์ฆ์ด ์ค๋ฌด์์ ์ ์ง๋๋ค.