코딩의 세계에서 살펴보기
ChatGPT 를 활용하면 프로그래밍 언어나 알고리즘 등의 지식이나 스킬이 없는 사람, 곧 개발자가 아닌 일반인도 코딩이 가능합니다.
하지만 지금까지 제가 대학생들에게 코딩을 알려준 결과는 코딩에 능숙한 학생은 생성 AI를 활용하여 효율적으로 작업을 처리했지만, 그렇지 않은 학생은 생성 AI를 활용함으로써 반대로 코딩 능력이 떨어지는 결과가 나타났습니다.
생성형 AI에 의해 무엇이든 효율적으로 할 수 있다고 생각하기 쉽지만, AI는 그저 도구일 뿐이고, 그것을 활용하는 것은 인간이기 때문에, 잘 사용하기 위해서는 본인 자신의 지속적인 코딩 skill-up 이 필수입니다.
뛰어난 도구를 다루기 위해서는, 사용하는 사람의 능력이 중요하다는 지극히 당연한 사실을 또 한번 알게 되었습니다. 그러면, 생성형 AI에 너무 의존하면 인간은 바보가 되는 지? 바보가 되지 않으려면, 어떻게 활용하는 게 현명한 지 살펴보겠습니다.
다양한 분야에서 활용되고 있는 생성형 AI이지만, 그 중에서도 가장 기대가 되는 것은 코딩(프로그래밍)의 세계입니다.
코드(프로그램)를 작성하기 위해서는, 그것에 사용하는 프로그래밍 언어에 대한 지식과 알고리즘을 생각하는 논리적 사고력이 요구됩니다. 게다가, 일반적으로 코딩은 고객의 예산이나 납기 등의 제약 속에서 "절대로 실수가 용납되지 않게 개발해야 한다" 라는 엄청난 스트레스 속에 프로그래머가 하는 행동입니다.
그러나 생성형 AI를 이용하면, 그러한 오래 축적된 지식이나 스킬, 스트레스 없이 누구라도 순간적으로 코드를 생성할 수 있습니다.
예를 들어, ChatGPT에 “두 숫자를 입력하면, 그 사이에 있는 홀수를 모두 찾아주는 프로그램을 Python으로 코드 작성해줘”고 지시해 보았을 때, 다음과 같은 결과가 얻어졌다. (여기서 Python이란 프로그래밍 언어의 한 종류입니다).
실행 결과 >>>
제법 잘 동작하고 깔끔한 코드를 만들어주었습니다. ^^
(저자는 경력 20년이상의 개발자로써, 생성된 코드만 봐도 잘 만든 코드인지 알 수 있습니다. )
여기서 더 나아가 재미있는 실험을 해 보았습니다.
ChatGPT에게 "테스트 케이스를 만들고 현재 프로그램이 올바르게 동작하는 지 10회 검증해 주세요."라고 지시한 결과 다음과 같은 결과가 얻어졌습니다.
개발자한테 귀찮은 테스트 검증을 순식간에 만들어주었습니다. (Wow)
ChatGPT는 10건의 테스트 케이스를 준비해, 그것을 사용해 실제로 프로그램을 실행해, 결과를 나타내 주었습니다. 물론, 홀수를 찾는 간단한 기능이 아니라, 보다 복잡한 목적을 다하는 프로그램을 개발하면 어떠한 에러가 발생하거나, 올바르게 움직였다고 해도 취약성이 포함되어 버릴 가능성은 높아집니다.
그러나, 생성형 AI를 활용하여 어느 정도의 결과를 도출할 수 있는 코드를 얻을 수 있습니다. 즉, 코딩에 전혀 경험이 없거나 아주 조금 알고 있는 사람이라도 원하는 프로그램을 손에 넣을 수 있는 시대가 도래하고 있다라는 것을 느낄 수 있었습니다. 그런데 이 단편만 보고 "코딩은 쉽다. 아무나 할 수 있다." 라고 생각하면 오산입니다. ^^
(잠깐 쉬어가기) 선무당이 사람 잡는다.
"누구나 쉽게 하는 셀프페인트" 라는 광고문구를 보고 막상 셀프로 집에 페인트 칠해본 사람들은 다 공감하실것입니다. 페인트칠을 몇시간하다보면, 왜 전문가에게 돈을 주고 맡기는 지 뼈저리게 알게 됩니다. 페인트가 고루 칠해지지도 않고, 문틀/ 콘센트 등 묻어서 지저분해지고, 제일 문제는 익숙한 작업이 아니다보니, 힘들고 시간이 오래걸립니다. 코딩도 마찬가지입니다. ChatGPT 가 프로그래밍 코드를 짜는 것을 보고, 코딩 자체를 얕보아서는 절대로 안됩니다. ^^
저자는 방금전, ChatGPT를 사용해서 홀수 추출 프로그램을 순식간에 완성시켰습니다. 만약 관리자가 IT기업에 취직한지 얼마 안된 A 신입개발자에게, 이러한 간단한 기능을 개발하는 Task 를 맡겼다고 가정해봅시다.
위와 같은 Task 를 맡긴 목적은 A 신입개발자의 프로그래밍 역량 향상을 위한 목적이었다고 가정해봅시다.
그렇다면, 이 작업은 신입개발자에게 파이썬의 기본 지식 습득 및 프로그래밍에 대해서 고민할 수 있는 절호의 기회가 되었을 것입니다.
A 신입개발자는 관리자에게 빨리 결과물을 제공하기 위해서, ChatGPT 를 활용해서 제출했다면, 그 목적에 부합하지 못한 채, 마무리 되어 버릴 것입니다.
왜냐하면, 그 후 비슷한 기능을 개발할 때도 자신도 모른채 ChatGPT를 의지할 것이기 때문입니다. 그것을 반복하면 그 시기에 얻을 수 있는 스킬과 기회를 놓치게 되어 버립니다.
반면에 B 신입개발자도 동일한 Task 를 부여받았는데, A 신입개발자와 다르게 전적으로 ChatGPT 에 맡긴 것이 아니라, 본인 소스에 대해서 위처럼 테스트를 수행해서 프로그램에 버그가 없는 지 또는 더 간결한 코딩을 위한 조언용으로 ChatGPT를 이용했다면 어떨까요? 모두다 예상할 수 있듯이 3~4년 후에는 두 개발자의 역량차이는 크게 벌어질 것입니다.
미국 텍사스에 있는 애빌린 기독교 대학의 연구자들이 발표한 논문 에 따르면, 21명의 대학생을 대상으로 재미난 실험을 했습니다. 이들 21명 대학생들은 코딩 수업을 받는 코딩 초보 학생들이었습니다.
대상자들에게 C++라는 프로그래밍 언어를 사용하여 "루프(Loop) 를 사용하여 양수와 음수가 많을지를 결정하는 프로그램"을 작성하는 Task 을 주고, ChatGPT와 GitHub Copilot 두 종류의 툴(tool)을 사용할 수 있도록 했습니다. (* 프로그램에서 Loop 는 반복문입니다.)
"루프를 사용한다" 라고 구체적인 지시가 행해진 이유는, 실험의 2주일 전에 수업에서 배운 내용이기 때문입니다. 실험 시 연구자들은 대상자들에게 시선추적(eye Tracking) 장치를 장착시켜 코딩 중 시선의 움직임을 기록했습니다. 종료 후, 대상자들에게 인터뷰를 실시해, 생성형 AI툴을 사용한 소감 등을 들었습니다.
이러한 실험을 통해 초보자가 코딩 시 생성형 AI가 어떤 영향을 얼마나 미쳤는지 확인해 보는 취지였습니다.
결과는 어땠을까요? 결론부터 말하자면, 원래 코딩에 능숙한 학생들은 AI의 제안을 적절히 취사선택하면서 효율적으로 과제를 해결할 수 있었던 반면에, 코딩에 약한 학생은 AI의 제안에 휘둘리면서 점점 본질적인 문제해결과 멀어지는 형태가 되어 버렸고, 결과적으로 자신의 힘으로 프로그램을 쓸 수 없게 되어 버리는 경향이 보였다고 합니다.
원래 코딩 수업에서 좋은 성적을 거둔 학생들은 자신의 생각을 우선시 하면서 AI를 활용하는 자세가 보였습니다. 이러한 학생들은 AI를 사용하면서도 자신의 지식을 한층 더 업그레이드 할 수 있었다고 연구자들은 결론을 내렸습니다.
한편, 프로그래밍이 약하고 자신감이 없는 학생들은 AI의 제안에 너무 의지하는 경향이 보였다고 합니다.
AI가 출력하는 것을 그래도 믿어버려서, 스스로 생각하는 단계를 날려버리는 장면이 많이 확인되었다고 합니다. 게다가, 제안된 해결책이 어떤 것인지를 이해하지 못한 채, 그것을 "일단 사용해보자"라는 형태로 진행되었다고 합니다. 그런 학생들은 AI에 너무 의지하고 오히려 자신의 힘으로 프로그램을 쓸 수 없게 될 위험성이 있다고 결론을 내렸습니다.
또한 더 위험한것은 코딩에 약한 학생은 실제로는 AI 에 휘둘리고 있는데도, 자신은 잘 하고 있다고 착각하고 있다라는 것입니다.
이 실험 결과가 보여주는 것은 코드 생성 AI는 원래 우수한 학생에게는 더욱 효율화의 수단이 될 수 있다는 장점과 보다 학습에 임할 필요가 있는 학생에 대해서는 오히려 그 학습에서 멀어져 버린다 위험성이 있다는 것을 알려주고 있습니다.
(실제로, 저도 현장에서 논문과 같은 결론을 얻었습니다. )
원래 자신의 전문분야 이외의 누군가로부터 얻은 지식의 정확성을 확인하기 위해서는 자신도 일정 수준의 지식이 필요합니다. 그렇지 않으면, 누구나 응답에 휘둘리게 되는 것은 당연합니다.
그래서 생성 AI를 사용하지 말라는 의미가 아니라 AI에 의지해도 좋지만, 그것을 자신의 능력이라고 착각하지 않는 것. 그리고 AI에 의존하는 것과 병행하여 자신 본연의 스킬을 높이는 노력을 계속하는 것. 이런 점을 명심해야 할 것입니다.