diff --git a/bun.lockb b/bun.lockb index 6ead8ee..4adff0f 100755 Binary files a/bun.lockb and b/bun.lockb differ diff --git a/go.mod b/go.mod index c23e4fe..0a2ccb1 100644 --- a/go.mod +++ b/go.mod @@ -15,7 +15,7 @@ require ( github.com/rs/zerolog v1.34.0 github.com/tdewolff/minify/v2 v2.24.8 github.com/wyatt915/goldmark-treeblood v0.0.1 - github.com/yuin/goldmark v1.7.13 + github.com/yuin/goldmark v1.7.14 github.com/yuin/goldmark-highlighting/v2 v2.0.0-20230729083705-37449abec8cc github.com/yuin/goldmark-meta v1.1.0 github.com/zeebo/blake3 v0.2.4 diff --git a/go.sum b/go.sum index d07f539..ee82294 100644 --- a/go.sum +++ b/go.sum @@ -135,8 +135,8 @@ github.com/wyatt915/goldmark-treeblood v0.0.1/go.mod h1:SmcJp5EBaV17rroNlgNQFydY github.com/wyatt915/treeblood v0.1.16 h1:byxNbWZhnPDxdTp7W5kQhCeaY8RBVmojTFz1tEHgg8Y= github.com/wyatt915/treeblood v0.1.16/go.mod h1:i7+yhhmzdDP17/97pIsOSffw74EK/xk+qJ0029cSXUY= github.com/yuin/goldmark v1.4.15/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= -github.com/yuin/goldmark v1.7.13 h1:GPddIs617DnBLFFVJFgpo1aBfe/4xcvMc3SB5t/D0pA= -github.com/yuin/goldmark v1.7.13/go.mod h1:ip/1k0VRfGynBgxOz0yCqHrbZXhcjxyuS66Brc7iBKg= +github.com/yuin/goldmark v1.7.14 h1:9F3UqVQdZ5GG5y6TU0l1TbbDhZmqfevaOcinQt88Qi8= +github.com/yuin/goldmark v1.7.14/go.mod h1:ip/1k0VRfGynBgxOz0yCqHrbZXhcjxyuS66Brc7iBKg= github.com/yuin/goldmark-highlighting/v2 v2.0.0-20230729083705-37449abec8cc h1:+IAOyRda+RLrxa1WC7umKOZRsGq4QrFFMYApOeHzQwQ= github.com/yuin/goldmark-highlighting/v2 v2.0.0-20230729083705-37449abec8cc/go.mod h1:ovIvrum6DQJA4QsJSovrkC4saKHQVs7TvcaeO8AIl5I= github.com/yuin/goldmark-meta v1.1.0 h1:pWw+JLHGZe8Rk0EGsMVssiNb/AaPMHfSRszZeUeiOUc= diff --git a/package-lock.json b/package-lock.json index e12f874..95a819f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -6,11 +6,11 @@ "": { "name": "website", "dependencies": { - "caniuse-lite": "^1.0.30001760" + "caniuse-lite": "^1.0.30001761" }, "devDependencies": { "@tailwindcss/typography": "^0.5.19", - "@types/bun": "^1.3.4", + "@types/bun": "^1.3.5", "tailwindcss": "^3.4.17" }, "peerDependencies": { @@ -150,19 +150,19 @@ } }, "node_modules/@types/bun": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/@types/bun/-/bun-1.3.4.tgz", - "integrity": "sha512-EEPTKXHP+zKGPkhRLv+HI0UEX8/o+65hqARxLy8Ov5rIxMBPNTjeZww00CIihrIQGEQBYg+0roO5qOnS/7boGA==", + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/bun/-/bun-1.3.5.tgz", + "integrity": "sha512-RnygCqNrd3srIPEWBd5LFeUYG7plCoH2Yw9WaZGyNmdTEei+gWaHqydbaIRkIkcbXwhBT94q78QljxN0Sk838w==", "dev": true, "license": "MIT", "dependencies": { - "bun-types": "1.3.4" + "bun-types": "1.3.5" } }, "node_modules/@types/node": { - "version": "24.10.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-24.10.1.tgz", - "integrity": "sha512-GNWcUTRBgIRJD5zj+Tq0fKOJ5XZajIiBroOF0yvj2bSU1WvNdYS/dn9UxwsujGW4JX06dnHyjV2y9rRaybH0iQ==", + "version": "25.0.3", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.0.3.tgz", + "integrity": "sha512-W609buLVRVmeW693xKfzHeIV6nJGGz98uCPfeXI1ELMLXVeKYZ9m15fAMSaUPBHYLGFsVRcMmSCksQOrZV9BYA==", "dev": true, "license": "MIT", "dependencies": { @@ -267,9 +267,9 @@ } }, "node_modules/bun-types": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/bun-types/-/bun-types-1.3.4.tgz", - "integrity": "sha512-5ua817+BZPZOlNaRgGBpZJOSAQ9RQ17pkwPD0yR7CfJg+r8DgIILByFifDTa+IPDDxzf5VNhtNlcKqFzDgJvlQ==", + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/bun-types/-/bun-types-1.3.5.tgz", + "integrity": "sha512-inmAYe2PFLs0SUbFOWSVD24sg1jFlMPxOjOSSCYqUgn4Hsc3rDc7dFvfVYjFPNHtov6kgUeulV4SxbuIV/stPw==", "dev": true, "license": "MIT", "dependencies": { @@ -287,9 +287,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001760", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001760.tgz", - "integrity": "sha512-7AAMPcueWELt1p3mi13HR/LHH0TJLT11cnwDJEs3xA4+CK/PLKeO9Kl1oru24htkyUKtkGCvAx4ohB0Ttry8Dw==", + "version": "1.0.30001761", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001761.tgz", + "integrity": "sha512-JF9ptu1vP2coz98+5051jZ4PwQgd2ni8A+gYSN7EA7dPKIMf0pDlSUxhdmVOaV3/fYK5uWBkgSXJaRLr4+3A6g==", "funding": [ { "type": "opencollective", diff --git a/package.json b/package.json index a2c2b33..208c632 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "website", "devDependencies": { "@tailwindcss/typography": "^0.5.19", - "@types/bun": "^1.3.4", + "@types/bun": "^1.3.5", "tailwindcss": "^3.4.17" }, "peerDependencies": { @@ -12,6 +12,6 @@ "build": "tailwindcss -i public/tailwind-main.css -o public/main.css" }, "dependencies": { - "caniuse-lite": "^1.0.30001760" + "caniuse-lite": "^1.0.30001761" } } diff --git a/root/blog/ai-native-development.md b/root/blog/ai-native-development.md new file mode 100644 index 0000000..54cd984 --- /dev/null +++ b/root/blog/ai-native-development.md @@ -0,0 +1,37 @@ +--- +id: 0e912e4573c6a113757269734de514a8 +author: gosunuts +title: AI 네이티브 개발 방법론 +language: ko +date: 2026-02-01T01:18:36.450880849Z +path: /blog/posts/ai-네이티브-개발-방법론-z86704c1a +--- + +## AI 와 개발자 + +개발자가 AI 를 보는 시선은 복잡하다. AI 로 인해 전례없는 생산성 증대와 정보 습득이 가능해졌지만, 그와 동시에 개발자의 역할이 근본적으로 변화하고 있기 때문이다. 어떤 사람은 AI 가 AGI 로 발전하며 개발자 대다수를 대체할 것이라 예견하고, 다른 사람은 AI 를 과대평가된 도구로 폄하하며 개발자의 본질적 가치는 변하지 않는다고 주장한다. 이 태도는 겉으로는 정반대처럼 보이지만, 기존의 사고방식을 잣대로 AI 를 판단한다는 점에서는 놀라울 정도로 닮아 있다. + +하지만 여기서 중요한 점은 AI 를 판단하거나 평가하는 것이 아니다. 진짜 핵심은 AI를 전제로 한 개발의 사고방식이 어떻게 바뀌어야 하는지, 그리고 그 변화에 맞춰 개발자와 조직의 역할이 어떻게 재구성되어야 하는지에 있다. 이를 위해 아래의 3단계 분석으로 AI 개발 방법론을 정리했다. + +## AI 의존 개발 +AI 의존 개발은 AI를 판단의 주체로 삼고 그 결과를 무비판적으로 수용하는 단계이다. 이 단계의 개발자는 AI를 자신의 아이디어를 정리하고 구현해주는 존재로 인식하며, 나아가서는 판단과 책임까지 위임할 수 있는 대체제로 받아들인다. + +이 방식은 표면적으로는 생산성을 폭발적으로 높인 것처럼 보인다. 그러나 실제로는 설명할 수 없고, 책임질 수 없는 코드가 빠르게 누적된다. 이렇게 만들어진 코드는 문제가 발생했을 때 왜 이런 구조가 되었는지, 어떤 선택이 옳은지에 대해 누구도 확신 있는 판단을 내릴 수 없게 된다. + +이 단계에서 AI는 신뢰할 수 없는 결과만 생산하고, 개발자는 그 결과를 소비하는 역할에 머문다. 결과적으로 AI와 개발자 모두가 소모적으로 사용될 뿐, 실제 역량은 그 어디에도 축적되지 않는다. + +## AI 사용 개발 +AI 사용 개발은 좀 더 능숙한 개발자에게서 보여지는 단계이다.이 단계에서 개발자는 AI를 판단의 대체물이 아닌, 생산성을 높여주는 강력한 도구로 인식한다. 이 단계의 개발자는 설계와 최종 판단의 주체로 남고, 코드 생성·리팩토링·디버깅·문서 요약과 같은 반복적이고 비용이 큰 작업을 AI에게 위임한다. 이 방식은 개발자의 반복 작업의 비중을 크게 낮추고, 신뢰를 유지하면서도 생산성을 극적으로 높일 수 있다. + +그러나 이 방식은 설계의 맥락과 판단이 순환되지 않는다는 구조적 한계를 갖는다. 개발의 방향과 판단 과정이 개발자 개인의 사유에만 머무르며 AI와 공유되지 않기 때문에, AI는 개발자의 변화와 성장을 축적하지 못한다. 그 결과 설계의 맥락과 판단력은 개발자에게 고립된다. + +이로 인해 개발자와 AI 사이의 학습 순환은 형성되지 않고, AI 활용 능력은 개발자의 기존 역량을 넘어서 확장되지 않는다. 성장은 개인에게 귀속되며, 시간이 지날수록 개발자 간 역량 격차는 확대된다. 또한 이러한 역량은 조직 차원에서 축적되거나 재현되기 어렵다는 한계를 드러낸다. + +## AI 네이티브 개발 +AI 네이티브 개발은 AI 를 신뢰하거나 도구로 쓰는 단계를 넘어, 개발 구조와 판단 과정에 AI 를 편입시키고 AI 와 사람이 상호작용하며 서로 성장하는 구조를 의미한다. 이 단계에서 AI는 개발자의 판단과 맥락을 함께 공유하며 상호작용하는 구성원으로 기능한다. + +이 구조의 핵심은 AI 와 개발자가 단방향이 아닌 양방향으로 순환한다는 점이다. 개발자는 설계의 의도와 판단의 근거를 AI 와 지속적으로 공유하고, AI 는 이를 통해 개발자의 사고와 조직의 컨텍스트를 축적한다. 그 결과 AI 는 단순히 요청을 처리하는 도구를 넘어, 조직에 맞춤된 선택지를 제시하고, 개발자의 판단을 보조하고 정정해주는 방향으로 발전한다. + +AI 네이티브 개발은 특정 개인의 숙련도나 요령에 의존하지 않는다. 구성원이 바뀌어도 AI 컨텍스트가 유지된다면 같은 문제에 대해 유사한 관점의 질문을 던질 수 있고, 과거의 선택과 그 이유를 기반으로 더 나은 결정을 이어갈 수 있다. 개발 역량은 개인에게 귀속되지 않고, 조직 전체에 누적되고 재현 가능해진다. + +결국 AI 네이티브 개발이 지향하는 것은 특정한 아키텍쳐나 개발 방법론이 아닌, AI 와 인간의 판단과 학습이 지속적으로 강화되는 개발 프로세스 자체를 의미한다. 이 구조 안에서 개발자와 AI는 서로를 대체하지 않는다. 그 대신 같은 문제 공간을 공유하며, 함께 더 나은 판단과 더 견고한 구조를 만들어가는 관계로 진화한다. \ No newline at end of file diff --git a/zdata/data.json.zstd b/zdata/data.json.zstd index f7999af..dc9e323 100644 Binary files a/zdata/data.json.zstd and b/zdata/data.json.zstd differ