How not to do code reviews - Aviator Blog
Many code review processes become bottleneck for the engineering teams. Instead of finding bugs, it hinders progress leading to poor developer experience.
www.aviator.co
How not to do code reviews
์ ํต์ ์ผ๋ก, ์ฝ๋ ๋ฆฌ๋ทฐ๋ ์์ง๋์ด๊ฐ ๋๋ฃ์ ์ฝ๋๋ฅผ ์ค๋ฅ๋ฅผ ์ฐพ๊ณ ๊ฐ๋ ์ฑ, ํจ์จ์ฑ, ์ ์ง๋ณด์์ฑ์ ๋ณด์ฅํ๊ธฐ ์ํด ๋ฉด๋ฐํ ๊ฒํ ํ๋ ๊ฒ์ ํฌํจํ๋ค.
์ด ๋ฐฉ์์ ํนํ ๋๊ท๋ชจ ํ์์ ๋ณ๋ชฉ ํ์์ ์ ๋ฐํ๋ค. ์๋ํ๋ฉด ์ ํฉํ ๋ฆฌ๋ทฐ์ด๋ค์ด ํ์ํ ๋๋ง๋ค ๋ณ๊ฒฝ์ ๊ฒํ ํ ์ฌ์ ๊ฐ ํญ์ ์๋ ๊ฒ์ ์๋๊ธฐ ๋๋ฌธ์ด๋ค. CODEOWNERS ๊ฐ์ ๊ฒ๋ค์ด ์ด ์ด์๋ฅผ ํด๊ฒฐํ๋ ค๊ณ ํ์ง๋ง, ๊ทธ๊ฒ๋ค์ ์ง์ ์ฌ์ผ๋ก๋ฅผ ์์ฑํ๊ณ ๋๋ฉ์ธ ์ ๋ฌธ๊ฐ๋ค์๊ฒ ๋ถ๋ด์ ์ฃผ๋ ๊ฒฐ๊ณผ๋ฅผ ์ด๋ํ ์ ์๋ค.
์ด ๋ชจ๋ ๊ฒ๋ค์ ์ข์ ์ ๋ถ๋ฌ์ผ์ผํค๊ณ ์ง์ ์ ๋ฐฉํดํ๋ค. ์ด ๊ฒฐ๊ณผ๋ ํ์ ๋ฆด๋ฆฌ์ฆ ํ์๋ผ์ธ๊ณผ ํ์ ์ฌ๊ธฐ์ ์ํฅ์ ๋ฏธ์น๋ค.
์ข์ ์์์ 1970๋ ๋์ฒ๋ผ ๋ฒ๊ทธ๋ฅผ ์๋ณํ๊ธฐ ์ํด ์ฝ๋ ๋ฆฌ๋ทฐ์ ์์กดํ ํ์๊ฐ ์๋ค๋ ๊ฒ์ด๋ค. ์์ฆ์๋ ์๋ํ๋ ํ ์คํ ๊ณผ ์ ์ ์ฝ๋ ๋ถ์๊ธฐ๋ฅผ ์ฌ์ฉํ์ฌ ๋ฒ๊ทธ๋ฅผ ์ฐพ๋ ๊ฒ์ด ๋ ๋์ ์ ํ์ด๋ค. ํ๋์ ์ฝ๋ ๋ฆฌ๋ทฐ๋ ์๋ฌ๋ฅผ ์ฐพ๋ ๊ฒ์ ๋์ด์ ์ฅ๊ธฐ์ ์ผ๋ก ๊ฑด๊ฐํ ์ฝ๋ ๋ฒ ์ด์ค๋ฅผ ์ ์งํ ์ ์๋ ํ์ผ๋ก ์ฑ์ฅํ๋๋ฐ์ ์ด์ ์ ๋ง์ถ ์ ์๋ค.
The Traditional Approach: Error-Driven Code Reviews
์ฝ๋ ๋ฆฌ๋ทฐ๋ 1976๋ ์ ๋ฐํ๋ Michael Fagan์ ๋ ผ๋ฌธ "Design and Code Inspections to Reduce Errors in Program Development"์์ ์ฒ์ ๋ฌ์ฌ๋์๋ค.
๊ทธ๋ ํ์์ ์ธ ๊ฒํ ๊ณผ์ ์ ์ค์ ์ ๋์๋๋ฐ, ์ด๋ ์ ์์ ์ผ๋ก ์๋ํ์ง ์๊ฑฐ๋ ๋ถ์ ํํ ๊ฒฐ๊ณผ๋ฅผ ์์ฑํด๋ด๋ ๋ฐํ์ ๋์ฅ์ ์ํฅ์ ๋ฏธ์น๋ ๊ธฐ๋ฅ์ ์ธ ๋ฌธ์ ๋ฅผ ์ค์ฌ์ผ๋ก error-driven ๊ฒํ ๋ฅผ ๊ฐ์กฐํ๋ค. ๊ทธ์ ํ๋ก์ธ์ค๋ ์ ์ฌ์ ์ธ ์ค๋ฅ๋ฅผ ์ฐพ๋๋ฐ์ ์ง์ค๋์ด์๋ค. ์ด๊ฒ์ ๊ฐ๋ฐ์๋ค์ด ๋ฏธ๋ฆฌ ์ ์๋ ์ ๋ ฅ์ ์ฝ๋ ์์์ ์๋์ผ๋ก ์คํํ๊ณ ๋ฏธ๋ฆฌ ์ ์๋ ์ถ๋ ฅ์ด ์ฌ๋ฐ๋ฅด๊ฒ ์ถ๋ ฅ๋๋์ง๋ฅผ ๊ฒ์ฆํ๋ ๊ฒ์ ํฌํจํ๋ค. ๋ง์ฝ ์ฝ๋๊ฐ ์ฌ๋ฐ๋ฅด์ง ๋ชปํ ์ถ๋ ฅ์ ์์ฑํ๋ฉด, ์ฌ์ญ์ ์ด ํ์ํ์ผ๋ฉฐ ๋์ผํ ๋ฐฉ์์ผ๋ก ๋ค์ ํ ์คํธ๋ฅผ ์งํํ์ด์ผ ํ๋ค.
์ค๋ฅ ์ค์ฌ์ ์ ๊ทผ ๋ฐฉ์์ ์ฝ๋์ ์ ์ง๋ณด์์ฑ, ๊ฐ๋ ์ฑ ๋ฐ ๋ฏธ๋์ ๋ณ๊ฒฝ์ฌํญ์ ์ํฅ์ ๋ผ์น๋ ์ฑ์ฅ ๊ฐ๋ฅ์ฑ ๋ฌธ์ ๋ค์ ๋ฌด์ํ๋ ๊ฒฝํฅ์ด ์๋ค. ์ด๋ฌํ ๊ฒฐํจ๋ค์ ์ฅ๊ธฐ์ ์ผ๋ก ์ฝ๋์ ๋ฏผ์ฒฉ์ฑ์ ๋ฐฉํดํ๊ณ ๊ฐ๋ฐ ๋น์ฉ์ ์ฆ๊ฐ์ํค๋ ๊ธฐ์ ๋ถ์ฑ๋ฅผ ์ผ๊ธฐํ๋ค.
์ค๋ฅ ์ค์ฌ์ ์ ๊ทผ์ ๋ ๋ค๋ฅธ ๊ณผ์ ๋ฅผ ๋ถ๋ฌ์จ๋ค. ์ฝ๋๋ฒ ์ด์ค์ ๊ธฐ์ ์ ์ต์ํ ๊ฒฝํ์ด ํ๋ถํ ์์ง๋์ด๋ค์๊ฒ ๋๋ฌด ์์กดํ๊ฒ ๋๊ธฐ ๋๋ฌธ์ ๋๊ฐ ์ฝ๋ ๋ฆฌ๋ทฐ๋ฅผ ํด์ผํ๋์ง๋ฅผ ๊ฒฐ์ ํ๋ ๊ฒ์ ๋งค์ฐ ํฐ ๋ฌธ์ ๊ฐ ๋๋ค. ๋ฌธ์ ๋ฅผ ๊ฐ์งํ ์ถฉ๋ถํ ๊ฒฝํ์ ๊ฐ์ง ์์ง๋์ด๊ฐ ์ ํ๋์ด์๊ธฐ ๋๋ฌธ์, ์ด๋ ์ฝ๋ ๋ฆฌ๋ทฐ์ ์ง์ฐ์ ๊ฐ์ ธ์ค๋ฉฐ ๊ฐ๋ฐ ํ๋ก์ธ์ค๋ฅผ ๋๋ฆฌ๊ฒ ๋ง๋ ๋ค.
๊ฐ์ฅ ์ค์ํ ๊ฒ์ ์ด ์ ๊ทผ๋ฒ์ด ํ์ ๊ฐ์ฅ ๊ฒฝํ์ด ๋ง์ ๊ตฌ์ฑ์์ ๊ณ์ํด์ ๋ฆฌ๋ทฐ์ ๋๋ฒ๊น ์ ๋์๋ ์ฌ์ดํด์ ๊ฐ๋๊ณ ์๋ค๋ ๊ฒ์ด๋ค. ์ด๋ ์ฝ๋
์์ ์๋ค ์ฌ์ด์ ์ง์ ์ฌ์ผ๋ก๋ฅผ ๋ง๋ค๊ณ ์ง์ ๊ณต์ ๋ฅผ ๋ฐฉํดํ์ฌ ๋๋จธ์ง ํ์๋ค์ด ์ฝ๋๋ฒ ์ด์ค์ ๋ํ ์ง์์ ํ์ฅํ๋ ๊ฒ์ ๋ง๊ณ ์๋ค.
The Modern Approach: Code Reviews as Knowledge Sharing
์ง๋ 20๋ ๋์, ์ ์ ๋ถ์๊ธฐ ๋ฐ ์๋ํ๋ ํ ์คํธ๊ฐ์ ๊ฐ๋ฐ ๋๊ตฌ๋ค์ ๊ธฐ๋ฅ์ ์ธ ์๋ฌ๋ค์ ์ฐพ๋๋ฐ์ ๋ง์ ๋ฐ์ ์ ํด์๋ค. ์ด๋ฌํ ํด๋ค์ ๊ฐ๋ฐ์๊ฐ ์ง์ ๊ณต์ , ์ฝ๋ ๊ตฌ์กฐ ๊ทธ๋ฆฌ๊ณ ์ฅ๊ธฐ์ ์ธ ์ฝ๋ ์ ์ง๋ณด์์ ๊ฐ์ ๊ณ ์์ค์ ๊ด์ฌ์ฌ์ ์ง์คํ ์ ์๊ฒ ํ๋ค.
The Role of Automated Tests
์๋ํ๋ ๋จ์ ํน์ ํตํฉ ํ ์คํธ๋ ๋ ผ๋ฆฌ์ ์ธ ๋ฒ๊ทธ๋ฅผ ์ฐพ๋๋ฐ์ ์ฌ๋๋ณด๋ค ๋ ์ฐ์ํ๋ค.
์๋ํ๋ ํ ์คํธ๋ ์ฝ๋๋ฅผ ์ฆ์ ์คํํ๊ณ ๋ค์ํ ์ ๋ ฅ์ด ์ฌ๋ฐ๋ฅธ ์ถ๋ ฅ์ ์์ฑํ๋์ง ๋ฐ๋ก ํ์ธํ ์ ์์ผ๋ฉฐ, ์ผ๊ด๋๊ฒ ๋ฌธ์ ๋ฅผ ์๋ณํ ์ ์๋ค.
ํ์ง๋ง, ํจ๊ณผ์ ์ธ ์๋ํ ํ ์คํธ์๋ ์ ์ ํ ํ ์คํธ๋ฅผ ์์ฑํ๊ธฐ ์ํ ๊ท์น์ด ํ์ํ๋ค. ์๋ชป๋ ์ ๋ ฅ์ ์๋ณํ๊ณ ์ฝ๋๊ฐ ์ด๋ป๊ฒ ์๋ตํด์ผํ๋์ง ๊ฒฐ์ ํด์ผํ๋ฉฐ, ๋ค์ํ ํ ์คํธ ์ผ์ด์ค๋ฅผ ํ์ธํ๊ธฐ ์ํด ์๋ํ๋ ํ ์คํธ๋ฅผ ์์ฑํด์ผํ๋ค. ๋ฆฌ๋ทฐ์ด๋ค์ ๋ํ ๊ธฐ์กด ํ ์คํธ๋ก ์ปค๋ฒ๋์ง ์๋ ์ฃ์ง ์ผ์ด์ค๋ฅผ ์ฐพ๊ธฐ ์ํด ์ฝ๋์ ๋ณ๊ฒฝ๊ณผ ์๋ํ๋ ํ ์คํธ๋ค์ ๋ถ์ํด์ผํ๋ค.
ํ์ง๋ง ๋ชจ๋ ์๋ก์ด ์ฝ๋์ ๋ํด ์๋ํ๋ ํ ์คํธ๋ฅผ ์์ฑํด์ผํ๋ ์ด ์๊ฐ๋ค์ ํฌํจํ ๊ฐ๋ฐ ์๊ฐ์ ๋ฆฌ๋ทฐ ํ๋ก์ธ์ค์์ ๋งํ๋๋ค. ๋ฆฌ๋ทฐ์ด๋ค์ ๋ฒ๊ทธ๋ฅผ ์ฐพ๊ธฐ์ํด ๊ฐ๊ฐ์ ์ ๋ ฅ์ ๋ํด ์๋์ผ๋ก ํ ์คํธํ๋ ๊ฒ ๋์ ์๋ํ๋ ํ ์คํธ์๋ง ์์งํ๋ฉด ๋๊ธฐ ๋๋ฌธ์ด๋ค.
The Role of Static Analyzers
์๋ํ๋ ํ ์คํธ๋ ์ฝ๋์ ๋ ผ๋ฆฌ์ ๋ฌธ์ ๋ฅผ ๊ฐ์งํ ์ ์์ง๋ง, ์ฝ๋์ ์ทจ์ฝ์ ์ ๊ฐ์งํ ์๋ ์๋ค. ์๋ํ๋ ํ ์คํธ๋ ์ํํธ์จ์ด๊ฐ ์คํ๋๋ ๋ฐฉ์์ ์ด์ ์ ๋๊ณ ์์ผ๋ฉฐ, ์คํ์ ์ฌ์ฉ๋๋ ๊ฒ์ ๋ํด์๋ ์ฃผ๋ชฉํ๊ณ ์์ง ์๋ค. ์ ์ ์ฝ๋ ๋ถ์๊ธฐ๋ ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ค.
์ ์ ์ฝ๋ ๋ถ์๊ธฐ๋ ์ ์ฌ์ ์ธ ๋ณด์ ์ด์๋ฅผ ์ํด ์ฝ๋์ ์ข ์์ฑ์ ๋ถ์ํ๋ค. ๋ง์ฝ ์ทจ์ฝ์ ์ ์ฐพ๋๋ค๋ฉด, ์ฝ๋ ์์ฑ์์๊ฒ ์ด๊ฒ์ ๊ณ ์น๋๋ก ์๋ฆผ์ ์ฃผ์ด ํด๋น ์ฝ๋๋ฅผ ์์ ํ๊ฑฐ๋ ์ข ์์ฑ์ ์ ๋ฐ์ดํธ ํ๋๋ก ํ๋ค.
์ ์ ์ฝ๋ ๋ถ์๊ธฐ๋ ์คํ์ผ ๊ฐ์ด๋๋ฅผ ๊ฐ์ ํ ์๋ ์๋ค. ์ฌ์ฉ์์ ์คํ์ผ ๊ฐ์ด๋๋ฅผ ์ฌ์ฉํ๋๋ก ๊ตฌ์ฑ๋ ์ ์ ๋ถ์๊ธฐ๋ ๋ณ๊ฒฝ๋ ์ฝ๋๋ฅผ ๊ฒํ ํ๊ณ ์๋ชป๋ ๋ช ๋ช ์ด๋ ๊ณต๋ฐฑ ๋ฌธ์ ์ ๊ฐ์ ํด๋น ๊ฐ์ด๋๋ผ์ธ์ ์๋ฐํ๋ ํ์ ์๋ณํ ์ ์๋ค.
ํ๋์ AI ๊ธฐ๋ฐ ์ ์ ์ฝ๋ ๋ถ์๊ธฐ๋ ๋ ๋ง์ ๋ฌธ์ ๋ฅผ ์๋ณํ ์ ์๋ค. ์ด๋ ์ฝ๋ ๋ฒ ์ด์ค๋ฅผ ํ์ตํ์ฌ ์ฝ๋์ ๊ตฌ์กฐ๋ฅผ ์ดํดํ ์ ์๋ค. ์๋ก์ด ๋ณ๊ฒฝ์ฌํญ์ด ์๊ธฐ๋ฉด, ์ฝ๋๊ฐ ์ฝ๋ ์ํคํ ์ฒ์ ์ผ์นํ๋์ง ํ์ธํ ์ ์๋ค. ๋ํ ์ฝ๋๊ฐ ์๊ตฌ์ฌํญ์ ์์ ํ ์ถฉ์กฑ์ํค๋์ง ํ์ธํ๊ณ ๋ง์ฝ ๊ทธ๋ ์ง ์๋ค๋ฉด ์์ฑ์์๊ฒ ์ด๋ฅผ ์๋ฆฐ๋ค. AI ๊ธฐ๋ฐ์ ์ฝ๋ ๋ถ์๊ธฐ๋ ํฐ ๊ทธ๋ฆผ์ ์ดํดํ๋๋ฐ์ ๋ฐ์ด๋๊ธฐ ๋๋ฌธ์ ์ด์ ์ ์ค์ง โ์ฌ๋โ๋ค๋ง์ด ์บ์นํ ์ ์์๋ ์ ์ง ๋ณด์์ฑ๊ณผ ์ฝ๋ ์ํคํ ์ฒ ๋ฌธ์ ๋ฅผ ํ์งํ ์ ์๋ค.
์๋ํ๋ ํ ์คํธ ์ฒ๋ผ ์ ์ ๋ถ์๊ธฐ๋ฅผ ์ฌ์ฉํ๋ค๋ ๊ฒ์ ์ฌ๋ ๋ฆฌ๋ทฐ์ด๊ฐ ๋์ด์ ํ์ํ์ง ์๋ค๋ ๊ฒ์ ์๋ฏธํ์ง๋ ์๋๋ค. ๋ฆฌ๋ทฐ์ด๋ ์ฌ์ ํ ๊ทธ๋ค์ ๊ฒฐ๊ณผ๋ฅผ ๊ฒํ ํด์ผํ์ง๋ง, ํจ์ฌ ๋ ์ ์ ์๊ฐ์ด ์์๋๋ค.
Code Review for Knowledge Sharing
์ฝ๋ ๋ฆฌ๋ทฐ๋ โ์ฅ๊ธฐ์ ์ผ๋ก ๊ฑด๊ฐํ ์ฝ๋ ๋ฒ ์ด์ค๋ฅผ ๊ตฌ์ถํ๊ณ ๋ ๊ฒฌ๊ณ ํ๊ณ ์ ์๋ ฅ์๋ ํ์ ํ์ฑํ๋ ๊ฒโ์ด๋ผ๋ ์๋ก์ด ๋ชฉํ๋ฅผ ๊ฐ์ง๊ฒ ๋์๋ค.
์ด์ ์ฝ๋ ๋ฆฌ๋ทฐ๋ ํ์ ๊ณผ ์ง์์ ์ธ ํ์ต์ ์ด์งํ๊ธฐ ์ํด ์งํ๋์ด์ผ ํ๋ค. ์ด ํผ๋๋ฐฑ๊ณผ ํ ๋ก ์ ๋์ด์ ํ์ฌ์ ์ฝ๋๋ฅผ ๊ฐ์ ํ๋๋ฐ์ ์ฌ์ฉ๋๋ ๊ฒ์ด ์๋๋ผ ๋ ๊ฑด๊ฐํ ์ฝ๋ ๋ฒ ์ด์ค๋ฅผ ๊ตฌ์ถํ ์ ์๋ ํ์ผ๋ก ์ฑ์ฅํ๋๋ฐ์ ์ฌ์ฉ๋๋ค.
์ฝ๋ ๋ฆฌ๋ทฐ๋ ๋ฌธ์ ๋ฅผ ํ ๋ก ํ์ฌ ๊ฒฝํ์ด ์ ์ ์์ง๋์ด๋ค์๊ฒ ๊ณ ์์ค ํ๋ก๊ทธ๋๋ฐ ๊ฐ๋ ์ ๋ ธ์ถ์ํค๊ณ ํฐ ๊ทธ๋ฆผ์ ์ดํดํ๋๋ก ๋๋ ๊ฒ์ด๋ค. ๋ฐ๋ผ์ ๊ฒฝํ ์์ค์ ๊ด๊ณ์์ด ๋ชจ๋ ์์ง๋์ด๊ฐ ๋ฆฌ๋ทฐ ํ๋ก์ธ์ค์ ๊ธฐ์ฌํ๊ณ ์ด๋ก๋ถํฐ ์ด์ต์ ์ป์ ์ ์๋๋ก ํ๋ ๊ฒ์ด ๋ชฉํ์ด๋ค.
์ฌ์ ํ ๋ฌธ์ ์ ๊ฐ๋ ์ ์ฒ ์ ํ ๋ ผ์ํ๊ณ ์ค๋ช ํ๋ ๊ฒ์ด ์ค์ํ๋ค. ๋ฆฌ๋ทฐ ํ๋ก์ธ์ค์ ์ฐธ์ฌํ์ง ์์ ๋ค๋ฅธ ์์ง๋์ด๋ค๋ ๋์ค์ ์ด๋ฐ ํ ๋ก ์ ์ฝ์ด์ ํน์ ๋ณ๊ฒฝ ์ฌํญ์ด ์ ์ด๋ฃจ์ด์ก๋์ง์ ๊ทธ๊ฒ์ด ์ ์ฒด์ ์ธ ๊ทธ๋ฆผ ์์์ ์ด๋ป๊ฒ ๋ง๋์ง๋ฅผ ์ดํดํ ์ ์๋ค.
๐ฉโ๐ป Opinion
์ต๊ทผ Github Copilot์ ์ฌ์ฉํ๋ฉด์ ๋๋ ์๊ฐ์ด์๋ค.
๋ ์ด์ ์ค๋ฅ๋ฅผ ์ฐพ๊ณ ์ข ๋ ํจ์จ์ ์ธ ์ฝ๋๋ฅผ ์ ์ํ๋ ์ฝ๋ ๋ฆฌ๋ทฐ๋ ์๋ฏธ๊ฐ ์์ด์ก๋ค๊ณ ์๊ฐํ๋ค. ์ด์ฉ๋ฉด ์ด๋ฏธ AI์๊ฒ ๊ฒ์ฆ๋ฐ์ ๋ ์ข์ ์ฝ๋๋ฅผ ์์ฑํ์ ๊ฒ์ด๋ค.
๊ทธ๋ ๋ค๋ฉด Knowledge Sharing์ ์ํด ์ฝ๋ ๋ฆฌ๋ทฐ๋ฅผ ํด์ผํ๋ค๋ ๊ฒ์ ๋ง์ ๊ณต๊ฐ์ ํ๋ค. ์ฝ๋ ๋ฆฌ๋ทฐ๊ฐ โ๋ฒ์ค ์ง์โ๋ฅผ ๋์ด๋ ์ผ์ด ๋์ด์ผ ํ๋ค. ๋๋ฃ๋ค๊ณผ ๋์์ ์ง์ ์์ค์ ๊ณ์ํด์ ๋ง์ถฐ ๋๊ฐ๊ธฐ ์ํ ์ต๊ณ ์ ๋ฐฉ๋ฒ์ด์ ์๋จ์ด๋ค.
'๐ Study > TLDR' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[WebDev] Patterns for building realtime features (0) | 2025.02.12 |
---|---|
[WebDev] Developer philosophy (2) | 2025.02.05 |
[WebDev] Things You Should Never Do As A Software Engineer (0) | 2024.05.25 |
[WebDev] Clever code is probably the worst code you could write (0) | 2024.05.23 |
[WebDev] You probably donโt need microservices (0) | 2024.05.19 |
How not to do code reviews - Aviator Blog
Many code review processes become bottleneck for the engineering teams. Instead of finding bugs, it hinders progress leading to poor developer experience.
www.aviator.co
How not to do code reviews
์ ํต์ ์ผ๋ก, ์ฝ๋ ๋ฆฌ๋ทฐ๋ ์์ง๋์ด๊ฐ ๋๋ฃ์ ์ฝ๋๋ฅผ ์ค๋ฅ๋ฅผ ์ฐพ๊ณ ๊ฐ๋ ์ฑ, ํจ์จ์ฑ, ์ ์ง๋ณด์์ฑ์ ๋ณด์ฅํ๊ธฐ ์ํด ๋ฉด๋ฐํ ๊ฒํ ํ๋ ๊ฒ์ ํฌํจํ๋ค.
์ด ๋ฐฉ์์ ํนํ ๋๊ท๋ชจ ํ์์ ๋ณ๋ชฉ ํ์์ ์ ๋ฐํ๋ค. ์๋ํ๋ฉด ์ ํฉํ ๋ฆฌ๋ทฐ์ด๋ค์ด ํ์ํ ๋๋ง๋ค ๋ณ๊ฒฝ์ ๊ฒํ ํ ์ฌ์ ๊ฐ ํญ์ ์๋ ๊ฒ์ ์๋๊ธฐ ๋๋ฌธ์ด๋ค. CODEOWNERS ๊ฐ์ ๊ฒ๋ค์ด ์ด ์ด์๋ฅผ ํด๊ฒฐํ๋ ค๊ณ ํ์ง๋ง, ๊ทธ๊ฒ๋ค์ ์ง์ ์ฌ์ผ๋ก๋ฅผ ์์ฑํ๊ณ ๋๋ฉ์ธ ์ ๋ฌธ๊ฐ๋ค์๊ฒ ๋ถ๋ด์ ์ฃผ๋ ๊ฒฐ๊ณผ๋ฅผ ์ด๋ํ ์ ์๋ค.
์ด ๋ชจ๋ ๊ฒ๋ค์ ์ข์ ์ ๋ถ๋ฌ์ผ์ผํค๊ณ ์ง์ ์ ๋ฐฉํดํ๋ค. ์ด ๊ฒฐ๊ณผ๋ ํ์ ๋ฆด๋ฆฌ์ฆ ํ์๋ผ์ธ๊ณผ ํ์ ์ฌ๊ธฐ์ ์ํฅ์ ๋ฏธ์น๋ค.
์ข์ ์์์ 1970๋ ๋์ฒ๋ผ ๋ฒ๊ทธ๋ฅผ ์๋ณํ๊ธฐ ์ํด ์ฝ๋ ๋ฆฌ๋ทฐ์ ์์กดํ ํ์๊ฐ ์๋ค๋ ๊ฒ์ด๋ค. ์์ฆ์๋ ์๋ํ๋ ํ ์คํ ๊ณผ ์ ์ ์ฝ๋ ๋ถ์๊ธฐ๋ฅผ ์ฌ์ฉํ์ฌ ๋ฒ๊ทธ๋ฅผ ์ฐพ๋ ๊ฒ์ด ๋ ๋์ ์ ํ์ด๋ค. ํ๋์ ์ฝ๋ ๋ฆฌ๋ทฐ๋ ์๋ฌ๋ฅผ ์ฐพ๋ ๊ฒ์ ๋์ด์ ์ฅ๊ธฐ์ ์ผ๋ก ๊ฑด๊ฐํ ์ฝ๋ ๋ฒ ์ด์ค๋ฅผ ์ ์งํ ์ ์๋ ํ์ผ๋ก ์ฑ์ฅํ๋๋ฐ์ ์ด์ ์ ๋ง์ถ ์ ์๋ค.
The Traditional Approach: Error-Driven Code Reviews
์ฝ๋ ๋ฆฌ๋ทฐ๋ 1976๋ ์ ๋ฐํ๋ Michael Fagan์ ๋ ผ๋ฌธ "Design and Code Inspections to Reduce Errors in Program Development"์์ ์ฒ์ ๋ฌ์ฌ๋์๋ค.
๊ทธ๋ ํ์์ ์ธ ๊ฒํ ๊ณผ์ ์ ์ค์ ์ ๋์๋๋ฐ, ์ด๋ ์ ์์ ์ผ๋ก ์๋ํ์ง ์๊ฑฐ๋ ๋ถ์ ํํ ๊ฒฐ๊ณผ๋ฅผ ์์ฑํด๋ด๋ ๋ฐํ์ ๋์ฅ์ ์ํฅ์ ๋ฏธ์น๋ ๊ธฐ๋ฅ์ ์ธ ๋ฌธ์ ๋ฅผ ์ค์ฌ์ผ๋ก error-driven ๊ฒํ ๋ฅผ ๊ฐ์กฐํ๋ค. ๊ทธ์ ํ๋ก์ธ์ค๋ ์ ์ฌ์ ์ธ ์ค๋ฅ๋ฅผ ์ฐพ๋๋ฐ์ ์ง์ค๋์ด์๋ค. ์ด๊ฒ์ ๊ฐ๋ฐ์๋ค์ด ๋ฏธ๋ฆฌ ์ ์๋ ์ ๋ ฅ์ ์ฝ๋ ์์์ ์๋์ผ๋ก ์คํํ๊ณ ๋ฏธ๋ฆฌ ์ ์๋ ์ถ๋ ฅ์ด ์ฌ๋ฐ๋ฅด๊ฒ ์ถ๋ ฅ๋๋์ง๋ฅผ ๊ฒ์ฆํ๋ ๊ฒ์ ํฌํจํ๋ค. ๋ง์ฝ ์ฝ๋๊ฐ ์ฌ๋ฐ๋ฅด์ง ๋ชปํ ์ถ๋ ฅ์ ์์ฑํ๋ฉด, ์ฌ์ญ์ ์ด ํ์ํ์ผ๋ฉฐ ๋์ผํ ๋ฐฉ์์ผ๋ก ๋ค์ ํ ์คํธ๋ฅผ ์งํํ์ด์ผ ํ๋ค.
์ค๋ฅ ์ค์ฌ์ ์ ๊ทผ ๋ฐฉ์์ ์ฝ๋์ ์ ์ง๋ณด์์ฑ, ๊ฐ๋ ์ฑ ๋ฐ ๋ฏธ๋์ ๋ณ๊ฒฝ์ฌํญ์ ์ํฅ์ ๋ผ์น๋ ์ฑ์ฅ ๊ฐ๋ฅ์ฑ ๋ฌธ์ ๋ค์ ๋ฌด์ํ๋ ๊ฒฝํฅ์ด ์๋ค. ์ด๋ฌํ ๊ฒฐํจ๋ค์ ์ฅ๊ธฐ์ ์ผ๋ก ์ฝ๋์ ๋ฏผ์ฒฉ์ฑ์ ๋ฐฉํดํ๊ณ ๊ฐ๋ฐ ๋น์ฉ์ ์ฆ๊ฐ์ํค๋ ๊ธฐ์ ๋ถ์ฑ๋ฅผ ์ผ๊ธฐํ๋ค.
์ค๋ฅ ์ค์ฌ์ ์ ๊ทผ์ ๋ ๋ค๋ฅธ ๊ณผ์ ๋ฅผ ๋ถ๋ฌ์จ๋ค. ์ฝ๋๋ฒ ์ด์ค์ ๊ธฐ์ ์ ์ต์ํ ๊ฒฝํ์ด ํ๋ถํ ์์ง๋์ด๋ค์๊ฒ ๋๋ฌด ์์กดํ๊ฒ ๋๊ธฐ ๋๋ฌธ์ ๋๊ฐ ์ฝ๋ ๋ฆฌ๋ทฐ๋ฅผ ํด์ผํ๋์ง๋ฅผ ๊ฒฐ์ ํ๋ ๊ฒ์ ๋งค์ฐ ํฐ ๋ฌธ์ ๊ฐ ๋๋ค. ๋ฌธ์ ๋ฅผ ๊ฐ์งํ ์ถฉ๋ถํ ๊ฒฝํ์ ๊ฐ์ง ์์ง๋์ด๊ฐ ์ ํ๋์ด์๊ธฐ ๋๋ฌธ์, ์ด๋ ์ฝ๋ ๋ฆฌ๋ทฐ์ ์ง์ฐ์ ๊ฐ์ ธ์ค๋ฉฐ ๊ฐ๋ฐ ํ๋ก์ธ์ค๋ฅผ ๋๋ฆฌ๊ฒ ๋ง๋ ๋ค.
๊ฐ์ฅ ์ค์ํ ๊ฒ์ ์ด ์ ๊ทผ๋ฒ์ด ํ์ ๊ฐ์ฅ ๊ฒฝํ์ด ๋ง์ ๊ตฌ์ฑ์์ ๊ณ์ํด์ ๋ฆฌ๋ทฐ์ ๋๋ฒ๊น ์ ๋์๋ ์ฌ์ดํด์ ๊ฐ๋๊ณ ์๋ค๋ ๊ฒ์ด๋ค. ์ด๋ ์ฝ๋
์์ ์๋ค ์ฌ์ด์ ์ง์ ์ฌ์ผ๋ก๋ฅผ ๋ง๋ค๊ณ ์ง์ ๊ณต์ ๋ฅผ ๋ฐฉํดํ์ฌ ๋๋จธ์ง ํ์๋ค์ด ์ฝ๋๋ฒ ์ด์ค์ ๋ํ ์ง์์ ํ์ฅํ๋ ๊ฒ์ ๋ง๊ณ ์๋ค.
The Modern Approach: Code Reviews as Knowledge Sharing
์ง๋ 20๋ ๋์, ์ ์ ๋ถ์๊ธฐ ๋ฐ ์๋ํ๋ ํ ์คํธ๊ฐ์ ๊ฐ๋ฐ ๋๊ตฌ๋ค์ ๊ธฐ๋ฅ์ ์ธ ์๋ฌ๋ค์ ์ฐพ๋๋ฐ์ ๋ง์ ๋ฐ์ ์ ํด์๋ค. ์ด๋ฌํ ํด๋ค์ ๊ฐ๋ฐ์๊ฐ ์ง์ ๊ณต์ , ์ฝ๋ ๊ตฌ์กฐ ๊ทธ๋ฆฌ๊ณ ์ฅ๊ธฐ์ ์ธ ์ฝ๋ ์ ์ง๋ณด์์ ๊ฐ์ ๊ณ ์์ค์ ๊ด์ฌ์ฌ์ ์ง์คํ ์ ์๊ฒ ํ๋ค.
The Role of Automated Tests
์๋ํ๋ ๋จ์ ํน์ ํตํฉ ํ ์คํธ๋ ๋ ผ๋ฆฌ์ ์ธ ๋ฒ๊ทธ๋ฅผ ์ฐพ๋๋ฐ์ ์ฌ๋๋ณด๋ค ๋ ์ฐ์ํ๋ค.
์๋ํ๋ ํ ์คํธ๋ ์ฝ๋๋ฅผ ์ฆ์ ์คํํ๊ณ ๋ค์ํ ์ ๋ ฅ์ด ์ฌ๋ฐ๋ฅธ ์ถ๋ ฅ์ ์์ฑํ๋์ง ๋ฐ๋ก ํ์ธํ ์ ์์ผ๋ฉฐ, ์ผ๊ด๋๊ฒ ๋ฌธ์ ๋ฅผ ์๋ณํ ์ ์๋ค.
ํ์ง๋ง, ํจ๊ณผ์ ์ธ ์๋ํ ํ ์คํธ์๋ ์ ์ ํ ํ ์คํธ๋ฅผ ์์ฑํ๊ธฐ ์ํ ๊ท์น์ด ํ์ํ๋ค. ์๋ชป๋ ์ ๋ ฅ์ ์๋ณํ๊ณ ์ฝ๋๊ฐ ์ด๋ป๊ฒ ์๋ตํด์ผํ๋์ง ๊ฒฐ์ ํด์ผํ๋ฉฐ, ๋ค์ํ ํ ์คํธ ์ผ์ด์ค๋ฅผ ํ์ธํ๊ธฐ ์ํด ์๋ํ๋ ํ ์คํธ๋ฅผ ์์ฑํด์ผํ๋ค. ๋ฆฌ๋ทฐ์ด๋ค์ ๋ํ ๊ธฐ์กด ํ ์คํธ๋ก ์ปค๋ฒ๋์ง ์๋ ์ฃ์ง ์ผ์ด์ค๋ฅผ ์ฐพ๊ธฐ ์ํด ์ฝ๋์ ๋ณ๊ฒฝ๊ณผ ์๋ํ๋ ํ ์คํธ๋ค์ ๋ถ์ํด์ผํ๋ค.
ํ์ง๋ง ๋ชจ๋ ์๋ก์ด ์ฝ๋์ ๋ํด ์๋ํ๋ ํ ์คํธ๋ฅผ ์์ฑํด์ผํ๋ ์ด ์๊ฐ๋ค์ ํฌํจํ ๊ฐ๋ฐ ์๊ฐ์ ๋ฆฌ๋ทฐ ํ๋ก์ธ์ค์์ ๋งํ๋๋ค. ๋ฆฌ๋ทฐ์ด๋ค์ ๋ฒ๊ทธ๋ฅผ ์ฐพ๊ธฐ์ํด ๊ฐ๊ฐ์ ์ ๋ ฅ์ ๋ํด ์๋์ผ๋ก ํ ์คํธํ๋ ๊ฒ ๋์ ์๋ํ๋ ํ ์คํธ์๋ง ์์งํ๋ฉด ๋๊ธฐ ๋๋ฌธ์ด๋ค.
The Role of Static Analyzers
์๋ํ๋ ํ ์คํธ๋ ์ฝ๋์ ๋ ผ๋ฆฌ์ ๋ฌธ์ ๋ฅผ ๊ฐ์งํ ์ ์์ง๋ง, ์ฝ๋์ ์ทจ์ฝ์ ์ ๊ฐ์งํ ์๋ ์๋ค. ์๋ํ๋ ํ ์คํธ๋ ์ํํธ์จ์ด๊ฐ ์คํ๋๋ ๋ฐฉ์์ ์ด์ ์ ๋๊ณ ์์ผ๋ฉฐ, ์คํ์ ์ฌ์ฉ๋๋ ๊ฒ์ ๋ํด์๋ ์ฃผ๋ชฉํ๊ณ ์์ง ์๋ค. ์ ์ ์ฝ๋ ๋ถ์๊ธฐ๋ ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ค.
์ ์ ์ฝ๋ ๋ถ์๊ธฐ๋ ์ ์ฌ์ ์ธ ๋ณด์ ์ด์๋ฅผ ์ํด ์ฝ๋์ ์ข ์์ฑ์ ๋ถ์ํ๋ค. ๋ง์ฝ ์ทจ์ฝ์ ์ ์ฐพ๋๋ค๋ฉด, ์ฝ๋ ์์ฑ์์๊ฒ ์ด๊ฒ์ ๊ณ ์น๋๋ก ์๋ฆผ์ ์ฃผ์ด ํด๋น ์ฝ๋๋ฅผ ์์ ํ๊ฑฐ๋ ์ข ์์ฑ์ ์ ๋ฐ์ดํธ ํ๋๋ก ํ๋ค.
์ ์ ์ฝ๋ ๋ถ์๊ธฐ๋ ์คํ์ผ ๊ฐ์ด๋๋ฅผ ๊ฐ์ ํ ์๋ ์๋ค. ์ฌ์ฉ์์ ์คํ์ผ ๊ฐ์ด๋๋ฅผ ์ฌ์ฉํ๋๋ก ๊ตฌ์ฑ๋ ์ ์ ๋ถ์๊ธฐ๋ ๋ณ๊ฒฝ๋ ์ฝ๋๋ฅผ ๊ฒํ ํ๊ณ ์๋ชป๋ ๋ช ๋ช ์ด๋ ๊ณต๋ฐฑ ๋ฌธ์ ์ ๊ฐ์ ํด๋น ๊ฐ์ด๋๋ผ์ธ์ ์๋ฐํ๋ ํ์ ์๋ณํ ์ ์๋ค.
ํ๋์ AI ๊ธฐ๋ฐ ์ ์ ์ฝ๋ ๋ถ์๊ธฐ๋ ๋ ๋ง์ ๋ฌธ์ ๋ฅผ ์๋ณํ ์ ์๋ค. ์ด๋ ์ฝ๋ ๋ฒ ์ด์ค๋ฅผ ํ์ตํ์ฌ ์ฝ๋์ ๊ตฌ์กฐ๋ฅผ ์ดํดํ ์ ์๋ค. ์๋ก์ด ๋ณ๊ฒฝ์ฌํญ์ด ์๊ธฐ๋ฉด, ์ฝ๋๊ฐ ์ฝ๋ ์ํคํ ์ฒ์ ์ผ์นํ๋์ง ํ์ธํ ์ ์๋ค. ๋ํ ์ฝ๋๊ฐ ์๊ตฌ์ฌํญ์ ์์ ํ ์ถฉ์กฑ์ํค๋์ง ํ์ธํ๊ณ ๋ง์ฝ ๊ทธ๋ ์ง ์๋ค๋ฉด ์์ฑ์์๊ฒ ์ด๋ฅผ ์๋ฆฐ๋ค. AI ๊ธฐ๋ฐ์ ์ฝ๋ ๋ถ์๊ธฐ๋ ํฐ ๊ทธ๋ฆผ์ ์ดํดํ๋๋ฐ์ ๋ฐ์ด๋๊ธฐ ๋๋ฌธ์ ์ด์ ์ ์ค์ง โ์ฌ๋โ๋ค๋ง์ด ์บ์นํ ์ ์์๋ ์ ์ง ๋ณด์์ฑ๊ณผ ์ฝ๋ ์ํคํ ์ฒ ๋ฌธ์ ๋ฅผ ํ์งํ ์ ์๋ค.
์๋ํ๋ ํ ์คํธ ์ฒ๋ผ ์ ์ ๋ถ์๊ธฐ๋ฅผ ์ฌ์ฉํ๋ค๋ ๊ฒ์ ์ฌ๋ ๋ฆฌ๋ทฐ์ด๊ฐ ๋์ด์ ํ์ํ์ง ์๋ค๋ ๊ฒ์ ์๋ฏธํ์ง๋ ์๋๋ค. ๋ฆฌ๋ทฐ์ด๋ ์ฌ์ ํ ๊ทธ๋ค์ ๊ฒฐ๊ณผ๋ฅผ ๊ฒํ ํด์ผํ์ง๋ง, ํจ์ฌ ๋ ์ ์ ์๊ฐ์ด ์์๋๋ค.
Code Review for Knowledge Sharing
์ฝ๋ ๋ฆฌ๋ทฐ๋ โ์ฅ๊ธฐ์ ์ผ๋ก ๊ฑด๊ฐํ ์ฝ๋ ๋ฒ ์ด์ค๋ฅผ ๊ตฌ์ถํ๊ณ ๋ ๊ฒฌ๊ณ ํ๊ณ ์ ์๋ ฅ์๋ ํ์ ํ์ฑํ๋ ๊ฒโ์ด๋ผ๋ ์๋ก์ด ๋ชฉํ๋ฅผ ๊ฐ์ง๊ฒ ๋์๋ค.
์ด์ ์ฝ๋ ๋ฆฌ๋ทฐ๋ ํ์ ๊ณผ ์ง์์ ์ธ ํ์ต์ ์ด์งํ๊ธฐ ์ํด ์งํ๋์ด์ผ ํ๋ค. ์ด ํผ๋๋ฐฑ๊ณผ ํ ๋ก ์ ๋์ด์ ํ์ฌ์ ์ฝ๋๋ฅผ ๊ฐ์ ํ๋๋ฐ์ ์ฌ์ฉ๋๋ ๊ฒ์ด ์๋๋ผ ๋ ๊ฑด๊ฐํ ์ฝ๋ ๋ฒ ์ด์ค๋ฅผ ๊ตฌ์ถํ ์ ์๋ ํ์ผ๋ก ์ฑ์ฅํ๋๋ฐ์ ์ฌ์ฉ๋๋ค.
์ฝ๋ ๋ฆฌ๋ทฐ๋ ๋ฌธ์ ๋ฅผ ํ ๋ก ํ์ฌ ๊ฒฝํ์ด ์ ์ ์์ง๋์ด๋ค์๊ฒ ๊ณ ์์ค ํ๋ก๊ทธ๋๋ฐ ๊ฐ๋ ์ ๋ ธ์ถ์ํค๊ณ ํฐ ๊ทธ๋ฆผ์ ์ดํดํ๋๋ก ๋๋ ๊ฒ์ด๋ค. ๋ฐ๋ผ์ ๊ฒฝํ ์์ค์ ๊ด๊ณ์์ด ๋ชจ๋ ์์ง๋์ด๊ฐ ๋ฆฌ๋ทฐ ํ๋ก์ธ์ค์ ๊ธฐ์ฌํ๊ณ ์ด๋ก๋ถํฐ ์ด์ต์ ์ป์ ์ ์๋๋ก ํ๋ ๊ฒ์ด ๋ชฉํ์ด๋ค.
์ฌ์ ํ ๋ฌธ์ ์ ๊ฐ๋ ์ ์ฒ ์ ํ ๋ ผ์ํ๊ณ ์ค๋ช ํ๋ ๊ฒ์ด ์ค์ํ๋ค. ๋ฆฌ๋ทฐ ํ๋ก์ธ์ค์ ์ฐธ์ฌํ์ง ์์ ๋ค๋ฅธ ์์ง๋์ด๋ค๋ ๋์ค์ ์ด๋ฐ ํ ๋ก ์ ์ฝ์ด์ ํน์ ๋ณ๊ฒฝ ์ฌํญ์ด ์ ์ด๋ฃจ์ด์ก๋์ง์ ๊ทธ๊ฒ์ด ์ ์ฒด์ ์ธ ๊ทธ๋ฆผ ์์์ ์ด๋ป๊ฒ ๋ง๋์ง๋ฅผ ์ดํดํ ์ ์๋ค.
๐ฉโ๐ป Opinion
์ต๊ทผ Github Copilot์ ์ฌ์ฉํ๋ฉด์ ๋๋ ์๊ฐ์ด์๋ค.
๋ ์ด์ ์ค๋ฅ๋ฅผ ์ฐพ๊ณ ์ข ๋ ํจ์จ์ ์ธ ์ฝ๋๋ฅผ ์ ์ํ๋ ์ฝ๋ ๋ฆฌ๋ทฐ๋ ์๋ฏธ๊ฐ ์์ด์ก๋ค๊ณ ์๊ฐํ๋ค. ์ด์ฉ๋ฉด ์ด๋ฏธ AI์๊ฒ ๊ฒ์ฆ๋ฐ์ ๋ ์ข์ ์ฝ๋๋ฅผ ์์ฑํ์ ๊ฒ์ด๋ค.
๊ทธ๋ ๋ค๋ฉด Knowledge Sharing์ ์ํด ์ฝ๋ ๋ฆฌ๋ทฐ๋ฅผ ํด์ผํ๋ค๋ ๊ฒ์ ๋ง์ ๊ณต๊ฐ์ ํ๋ค. ์ฝ๋ ๋ฆฌ๋ทฐ๊ฐ โ๋ฒ์ค ์ง์โ๋ฅผ ๋์ด๋ ์ผ์ด ๋์ด์ผ ํ๋ค. ๋๋ฃ๋ค๊ณผ ๋์์ ์ง์ ์์ค์ ๊ณ์ํด์ ๋ง์ถฐ ๋๊ฐ๊ธฐ ์ํ ์ต๊ณ ์ ๋ฐฉ๋ฒ์ด์ ์๋จ์ด๋ค.
'๐ Study > TLDR' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[WebDev] Patterns for building realtime features (0) | 2025.02.12 |
---|---|
[WebDev] Developer philosophy (2) | 2025.02.05 |
[WebDev] Things You Should Never Do As A Software Engineer (0) | 2024.05.25 |
[WebDev] Clever code is probably the worst code you could write (0) | 2024.05.23 |
[WebDev] You probably donโt need microservices (0) | 2024.05.19 |