10/10/2024

개발자와 AI의 관계

 


개발자들은 종종 AI에 회의적이다. 하지만 AI 도구의 잠재력은 좋아하든 싫어하든 더 빠른 릴리즈와 더 나은 제품을 만들 수 있게 도와준다.

Stack Overflow에서 2024년에 진행한 개발자 설문 조사에 의하면 개발자의 43%만 AI 도구의 결과를 신뢰했다. 반대 의견은 AI가 복잡한 작업을 처리하는데 어렵다고 말했다.

이런 상황에도 ChatGPT는 코딩의 새로운 시대를 열었다고 생각한다. 더 이상 Google, Stackoverflow에서 코딩에 대해 질문이나 답을 할 필요가 없다.

이번에 Cursor AI IDE를 이용하자고 함께 일하는 동료들에게 제안했다.

이유는 일부 개발자들이 Copilot or ChatGPT를 이용하여 코딩에 도움을 받고 있기 때문이다.

Cursor를 사용해보니 AI에 긍정적인 개발자의 경우 생산성이 향상 될 것으로 판단되었기 때문이다.

본 글은 AI를 개발에 이용하면서 느낀 것들에 대한 정리이다.

AI가 개발자를 대체할 것인가?

나의 대답은 당장은 대체하지 않을 것이다. 그러나 AI는 이미 개발자가 코드를 작성하는데 도움을 주고 있다.

ChatGPT, Copilot, Codex등 AI 기반 코딩 어시스턴트는 개발자가 더 나은 코드를 더 빨리 작성하도록 도움이 된다.

개발자의 진정한 가치는 그들이 만드는 것을 어떻게 만들어야 하는지 아는 것이다.

AI가 비즈니스의 가치를 이해하고 무엇을 먼저 개발해야 하는지를 알때까지는 시간이 필요할 것이다. 그래서 개발자의 역할은 항상 있을 것이라 생각된다.

신뢰할 수 있는가?

AI가 아무것도 없이 prompt만으로 처음부터 끝까지 요구사항에 맞는 코드를 작성할 수 있다고 믿을 수는 없다. 그렇지만 생산성을 높이기 위해 사용할 수 있다는 것에 부정하지 않는다.

개발자가 작업하는 영역중에서 수동적으로 처리해야 하는 부분에 대해서 AI의 잠재력을 주로 활용했다. 다이어그램을 만들때도 prompt를 작성한 후 AI가 만드는 동안 다른 작업에 몰두 할 수 있었다.


그리고 API를 만들고 테스트를 생성하도록 요청한다. 이렇게 하면 코드를 테스트하고 오류를 식별하는 데 걸리는 시간이 크게 줄어든다.

물론, AI가 생성한 테스트 스크립트를 검토해야하지만 그럼에도 매우 효율적이다. AI에게 명확한 경계를 제공하면 잘 작동하고 많은 시간을 절약할 수 있다.

AI가 작성한 코드를 신뢰하려면 검토를 해야 한다. 업무를 지시한 사람이 AI가 작업한 작업물에 책임을 져야 한다.

생산성이 향상되고, 품질이 좋아지더라도 AI에게 prompt를 작성하는 사람은 항상 선장이 되어야 한다. AI의 도움을 받는 다는 것은 지름길을 선택한 것이다. 지름길에는 리스크가 있을 수 있다. 그래서 결과에 대해 주의를 기울여야 한다.

AI 진화는 아직 빙산의 일각이라 생각한다. AI에 대한 믿지 못하는 상황이 100% 사라지지 않을 것이기에 AI의 품질은 더욱 향상 될 것이다.

  1. AI가 신뢰할 수 있는 코드를 작성할 수 있는 상황이 발생할 수 있을까?
  2. AI는 인간이 작성한 방대한 양의 코드를 학습했다.
  3. 인간은 100% 신뢰할 수 있는 코드를 작성하지 못한다. 실수가 발생한다.

따라서 AI가 신뢰할 수 있는 코드를 작성할 가능성은 낮다.

위 논리에 따라 100% 완벽한 코드를 AI가 작성하긴 어려울 것 같다. 그래서 검토를 할 수 있는 개발자가 필요하다.

생산성은?

같이 일하는 동료들의 의견을 받아봐야 알겠지만, 내가 판단했을 때는 AI 도구를 사용하는 개발자는 코드 생성, 리팩토링, 테스트 등에 대해서 사용하지 않는 개발자보다 20% ~ 30% 더 생산성이 나올 것 같다.

코딩에서 AI를 사용하게 되면 시간 절약이 꽤 된다. 다만, 코드를 어느정도 이해하는 수준을 지니고 있을 때 가능한 이야기이다. 내가 어떤 코드를 짜야하는지, 이 코드가 제대로 된 코드인지 판단할 수 없는 사람일 경우에는 큰 도움이 되지 않는다고 생각한다. 이런 사람들을 개발자라고 부르진 않으니까.

결론

AI 코딩 어시스턴트는 생산성을 높이고, 생산성에 대한 경쟁 우위를 유지할 수 있다고 생각한다. 물론, 코드를 이해하고 컨트롤 할 수 있는 개발자일때만 가능하다.

시대가 변하고 있다. 새로운 기술을 최대한 활용하는 것이 중요하다. 증기기관이 처음 나왔을 때, 기계와 대결한 “John Henry”의 이야기를 상기했으면 한다.

개발자들이여 AI에 대해 회의적으로 접근하지 마세요!

AI 코딩 어시스턴트를 작업에 통합하는데 익숙해지도록 하세요.

당신의 지시를 따르는 어시를 고용한다고 생각하세요.

10/04/2024

풀스택 개발자, 현실적으로 가능한가?

본 글은 지극히 개인적인 관점이라는 점을 서두에 언급한다.


과거 동안 “풀스택 개발자”라는 용어가 인기를 끌었고, 동료들에게도 원하는 이상향이 “풀스택”이다. “풀스택”은 현대 애플리케이션 개발 시 모든 측면을 처리하는데 능숙한 프로그래머를 지칭한다. 즉, 풀스택 개발자는 프론트엔드(사용자 인터페이스)와 백엔드(서버)을 모두 개발 할 수 있는 전문가이다.

두 영역을 작업할 수 있는 능력은 엄청나다. 이 능력을 유지하기 위해서는 기술이 계속 발전하는 상황에서 최신 도구 및 프레임워크, 패턴, 아키텍처 그리고 다양한 기술들을 얻기위한 지속적인 학습이 필요하다. 이것 외에 클라우드, DevOps 혹은 AI 서비스 연동과 같은 것들을 융합해야 한다.

“풀스택”이라는 용어가 탄생했는지는 과거를 살펴볼 필요가 있다. 현재까지 개발자는 항상 새로운 기술에 적응하고 다양한 도구를 활용하여 애플리케이션을 만들어야 했다. 과거에는 사용자 인터페이스(UX)가 단순 했기에 개발자는 주로 비즈니스 로직을 최적화 하는데 주력했다. 그러다가 Web 2.0 시대가 되면서 프론트엔드의 개발 가능성이 크게 성장했다.

이런 상황이 발생하자, 다방면에 뛰어난 개발자에 대한 수요가 커졌다. 그 당시 많은 스타트업(Uber, Airbnb)들이 탄생했고, 그들의 성공은 사용자 경험을 개선하고 기술 기반 비즈니스를 만드는 것에 대한 중요성을 보여주었다.

시장의 변화로 인해 다재다능한 개발자에 대한 Needs가 증가했다. 풀스택 개발자를 고용하면 각 분야별 개발자를 고용하는 것보다 비용이 낮아지기 때문이다. 그리고 새로운 기능을 빠르게 개발 할 수 있기에 풀스택의 중요성이 강조되었다. 아마도 Node.js가 출시되면서 “풀스택”에 대한 중요성이 더 강조되었던 것 같다. 이유는 프론트엔드와 백엔드 모두 Javascript라는 동일한 언어를 사용하기에 이론적으로 둘다 작업하기 위한 기술을 갖추었다고 판단되기 때문이다.

모든 분야에서 뛰어난 사람은 존재하기 어렵다. 일반적으로 한 개발 분야에서는 뛰어나지만 다른 개발 분야에서는 뛰어나지 않은 상황이 많다. 이유는 필요한 모든 기술을 습득하는데 어려움이 있기 때문이다. 사용자 경험(UX)와 프론트엔드 기술에 뛰어난 개발자는 클라우드 기반의 마이크로서비스 아키텍처의 전문가가 될 가능성이 적다. 불가능하지는 않지만 필요한 고급 기술을 얻기는 매우 어렵다.

이제까지 많은 숙련된 전문가들과 일을 해왔지만, 프론트엔드와 백엔드 개발에서 모두 뛰어난 사람을 본적은 없었다. 그 이유는 개인적인 관심사가 크게 작용하기 때문이다. 어느 한쪽에 전문성이 깊으면서 다른 부분도 잘하는 분들을 뵌적은 있다.

앞으로는 백엔드의 복잡성이 줄어들고 사용자 경험에 더 집중되는 형태로 애플리케이션 개발이 진행될 것으로 예상된다. 그래서 백엔드에 전문성을 갖춘 분들은 프론트엔드에 관심을 가지고 준비하고, 프론트엔드에 전문성을 갖춘 분들은 반대로 백엔드에 관심을 가지고 준비하면 두 분야를 모두 잘하지는 못하겠지만, 풀스택에 가까워지는 상황이 발생하지 않을까 생각한다.

풀스택 전문가가 아니더라도 특정 분야에 대해서 이해가 있으면 커뮤니케이션을 할때 큰 도움이 되기 때문이다. 기술적으로 상대방을 이해하는 것이 효율적인 제품을 구축하는데 매우 중요하기 때문이다.