바이브 코딩...

말이 좋아 바이브 코딩이지 내부는 알고 싶지 않고 결과만 원하는 심정으로 코딩을 ai에게 시키는 것을 말하는 것이라 본다.

그러나 코딩을 잘하는 사람이라도 할 일은 많은데 시간은 없다고 하면, 또 그 중요도가 그다지 높지 않다거나 난이도가 낮다고 하면 어쩔 수 없이 루트를 탈 수 밖에 없다고 본다.

내가 최근에 좀 그렇게 살아봤다. 그런데..

1) 결과가 언뜻 보면 그럴싸 해보이는데, 결과가 좋게 나오는 방향으로 수렴하는 듯 하지만 내용은 개판인 상태가 맞다. 그러니까 LLM과 일반적인 신경망을 동치로 놓고 말하긴 뭐하지만, adaptive filter를 특정 결과에 맞춰 최적화시키면 언뜻 보면 원하는 결과가 나오는 것 같지만 실제 필터는 개판으로 수렴된 경우라고나 할까?

2) 뭔가 일을 했다는데 아무리봐도 믿음직스럽지 못해서 다른 맥락으로 검토하라고 하면 오류가 제법 들어있는 결과를 만들어냈다고 스스로 고백한다.

결론

아무리 중요도가 떨어지거나 난이도가 낮은 거라 하더라도 방향을 잘 잡은 상태로 일을 던져야 한다. 제 아무리 claude고 산타클로스 할아버지건 간에.

가끔씩 보면 어디서 배워온 맥락인지 좀 말이 안되는 코드를 써낼 때도 있고 대놓고 에러를 내기도 한다. 특히나 토큰 관리를 잘해야 하는게 multi-modal이라 이런 저런 정보를 던져서 문맥을 잡아놓고 일을 시키다 오류가 나고 하는 iteration을 수도 없이 하다보면 난장판이 된다. 매번 LLM을 돌릴 땐 그동안의 모든 토큰들이 전부 다 입력되어야 하니까 토큰 소모가 계속해서 증가하게 된다. 적당한 수준에서 진행한 내용을 잘 요약한 다음 빠져나와서 새로운 대화를 시작하는 것이 유리하다.

잡일은 방향이 잡히면 대단히 빨리 처리하는 대신 문맥이 엉성하거나 이전에 입력된 문맥과 꼬이면 엉뚱한 결과가 나오는 것은 사실상 당연하다. 또 알고리즘에 따라서 어떤 문맥을 더 중요시 다루는지가 중요한 문제일 것 같다. 문맥이 점차적으로 개선되어 나와서 최근의 문맥이 더 유의미한 것으로 취급될지 아니면 어떤 유사도 측면에서 더 높다고 판단되는 것만 보고 참조할지는 구체적인 구현방식에 따라 다를테니까.