그 개발자는 ChatGPT이고 저는 이 개발자와 애증 관계를 맺고 있습니다.
요즘 AI에 관한 기사가 너무 많아서 이 기사는 짧게 하려고 합니다.
ChatGPT를 사용하여 코딩하는 것은 주니어 개발자를 밑에 두는 것과 같습니다. 거기에서 코드의 80%를 얻을 수 있지만 실제로 모든 라인을 검토해야 합니다.
ChatGPT를 사용하여 코드 작성을 도울 수 있는 방법이 많다는 점을 인정해야 합니다. 아마도 그들 중 일부에서는 더 좋을 수도 있고 다른 경우에는 더 나쁠 수도 있습니다.
예를 들어, 많은 사람들이 이를 검색 엔진으로 사용한다고 들었습니다. 개인적으로 좀 의문스러운 부분입니다. 문서를 찾거나 검색을 통해 답변을 찾는 것은 그리 어렵지 않습니다. 저는 보풀을 줄이는 데 도움이 되는 Kagi를 사용합니다.
반대로 ChatGPT를 사용하면 답변이 사실인지 어떻게 알 수 있나요?
스펙트럼의 반대편에는 이를 미화된 자동 완성 기능으로 사용하는 사람들이 많이 있습니다. Github Copilot 과 같은 것입니다. 나는 그것이 유용하다고 볼 수 있습니다.
제가 선택한 시나리오는 다음과 같습니다.
내 코드를 chakra-ui 에서 tailwindcss 로 변환합니다.
왜?
현장을 둘러보니 잘 자극하는 것이 좋은 결과를 내는지, 아니면 보통의 결과를 내는지의 차이인 것 같았습니다. 나는 이것에 최고는 아니지만 약간의 연구를하고 최선을 다했습니다.
나는 그것을 좋은 상태로 만들기 위해 여러 프롬프트를 사용했는지 확인했습니다. 내 코드만 변환해야 한다는 것을 알고 있는 것처럼 보일 때마다 내 코드를 붙여넣습니다.
솔직히 이 부분은 개선될 수 있다. UI와 상호작용 사이에서 사용하는 것은 꽤 번거로운 작업입니다.
원하는 상태에 도달하는 데 시간이 걸릴 수 있습니다.
무엇을 쓸지 고민하고, 응답이 오기를 기다리고, 쓰기가 끝나기를 기다리는 사이에, 이 작업을 하는 것은 상당히 귀찮습니다.
일관성이 없습니다
항상 동일한 프롬프트를 재사용할 수 없다는 것은 도움이 되지 않습니다. ChatGPT에는 임의성이 있으므로 매번 프롬프트를 조정해야 했습니다. 이전에 작동했던 프롬프트를 복사하여 붙여넣는 것은 도움이 되지 않았습니다.
원하는 상태에서 벗어나는 것은 매우 쉽습니다.
위의 내용은 일회성이라면 괜찮습니다. 하지만 AI가 첫 번째 코드 변환 이후에는 모든 것을 잊어버리기 쉽다는 것을 알았습니다. 제가 가장 많이 반복한 성공은 3번이었습니다. 그 외에도 내 코드의 기능을 설명하는 것과 같이 완전히 관련 없는 내용을 반환했습니다.
토큰은 상당히 제한적인 요소입니다.
토큰 제한으로 인해 생성할 수 있는 코드의 양은 너무 많습니다. 여기에서 토크나이저를 확인하여 토큰을 계산하는 방법을 확인할 수 있습니다. 코드에 그다지 친숙하지 않습니다. 다음은 출력 중 하나의 예입니다. 각각의 다른 색상은 토큰을 나타냅니다.
이 때문에 변환을 여러 단계로 나누어야 합니다. 그렇지 않으면 세대가 중간에 멈추게 됩니다. 계속하라고 말하는 것은 대부분의 경우 작동하지 않습니다. 위의 사항과 결합하면 이는 금방 해야 할 일이 됩니다.
대체로 내가 느끼는 느낌은 영어를 쓰고 싶지 않다는 것입니다. 이미 무언가를 작성해야 한다면 작동하는 코드를 직접 작성하는 편이 낫습니다.
신속한 엔지니어링이 미래에 갖춰야 할 핵심 역량이라고 봅니다. 오늘날 세계에서 검색 방법을 아는 것이 핵심 기술인 것과 유사합니다.
필요한 모든 작업에 대해 ChatGPT는 꽤 인상적인 코드를 출력했습니다. 원본과 결과를 비교하면 다음과 같습니다.
보시다시피, 그 일을 꽤 잘 해냈습니다.
좋은 것
구조가 꽤 잘 잡혀있네요
세부 사항을 제외하면 HTML 구조는 원본과 매우 유사합니다. 간격은 사라졌지만 전체적인 레이아웃은 그대로 유지됩니다.
텍스트 내용은 변경되지 않습니다.
내용 자체는 잘 다루었습니다. 모두 다시 확인해야 했지만 하나도 변경되지 않았습니다. 유일한 예외는 JS에서 파생된 것입니다.
나쁜
무작위 수업이 있었어요
아무것도 하지 않는 수업이 많이 있습니다. 일부는 변경되었고 일부는 잘못된 순풍 클래스였습니다.
소소한 차이가 많이 나네요
UI는 마치 라이브러리가 방금 업그레이드된 것처럼 보였고 누군가가 코드를 마이그레이션하는 것을 잊어버렸습니다. 이 경우 ChatGPT가 클래스의 값을 무작위로 변경했기 때문입니다. 예를 들어 padding
3에서 4로 변경하거나 font-weight
굵게에서 보통으로 변경합니다. 세부 사항이 모두 잘못되었습니다.
절반의 시간 동안 작동하지 않습니다.
위의 스크린샷은 제가 직접 비교할 수 있는 스크린샷이었습니다. 실제로 결과는 불완전하거나 잘못되어 작동하도록 많은 변경을 해야 했습니다. 그렇기 때문에 나란히 놓고 비교할 수도 없습니다. 코드가 실행되지 않기 때문에 비교할 수 있는 것이 없습니다.
이것의 가장 좋은 점은 내가 할 수 있는 일이 있다는 것입니다. 다행히 작업 자체는 매우 간단합니다. 오류를 발견하는 것은 쉽습니다. chakra-ui 클래스와 tailwind 클래스 간의 매핑은 거의 일대일입니다. 구문이 다르기 때문에 지루할 뿐입니다.
그러나 이 접근 방식은 PR 검토와 더 유사합니다. 모든 것이 올바르게 수행되었는지 확인하기 위해 전체 코드를 스캔해야 했습니다.
언뜻보기에는 괜찮아 보입니다. 그러나 일단 작업하고 주의 깊게 주의를 기울이면 문제가 많습니다. 보안에 대한 잘못된 인식이 생겨서 모든 결함을 알게 된 후에는 약간 좌절감을 느꼈습니다.
그것의 큰 부분은 다른 코드베이스에서 보간된 코드입니다. 끔찍해 보이지는 않지만 내가 원했던 것은 아닙니다.
h2에서 h1로 방향을 변경하는 것과 같은 놀라운 변화도 있습니다. 내용 때문에 그렇게 된 것이라고 추측할 수 있습니다.
마치 후배 개발자가 뭔가를 치고 자신의 코드를 테스트하지 않은 것 같은 느낌이 들었습니다 . 그리고 이제는 스스로 고치라고 할 수 없이 검토하고 고쳐야 합니다.
그리고 이것은 끔찍합니다. 나는 이미 직장에서 PR을 검토하는 문제를 해결했습니다. 이제 내 프로젝트에도 그렇게 해야 하나요? 고맙지 만 사양 할게!
아직 거기까지 갈 수는 없다고 생각하지만, AI가 미래의 어느 시점에서는 개발에 도움이 될 것이라고 생각합니다. 대답이 LLM인지 누가 알겠습니까?
토큰 한도는 지속적으로 증가하고 있습니다.
나는 이 기사를 끝내는 것을 충분히 오랫동안 미뤄왔습니다. 그 기간 동안 토큰 한도가 증가한다는 발표가 많이 있습니다. 공개인지 유료인지는 잘 모르겠지만 보기에는 좋습니다.
시간이 지날수록 UX에 대한 메시지가 더 쉬워질 것입니다.
ChatGPT 플러그인과 더 나은 통합을 통해 상태 및 일관성 기억과 같은 문제가 개선되어야 합니다. ChatGPT에서 유용한 결과를 얻는 데 필요한 노력이 줄어들기를 바랍니다.
그동안 마이그레이션의 나머지 절반을 수동으로 완료했습니다. 더 빨랐나요? 글쎄요, 누가 알겠습니까? 거의 같은 느낌이었습니다. 하지만 수동으로 작성하는 것이 훨씬 더 기분이 좋았습니다.