메뉴 바로가기 검색 및 카테고리 바로가기 본문 바로가기

Sens-AI 프레임워크: 개발자에게 AI 사고를 가르치기

개발자들은 AI를 활용하여 놀라운 일을 하고 있습니다. Copilot, ChatGPT, Claude와 같은 도구들은 코드 작성, 복잡한 문제 디버깅, 테스트 생성, 낯선 라이브러리와 프레임워크 탐색 등에서 전례 없는 속도와 효율성을 제공하며 개발자들에게 필수적인 도구가 되었습니다. 잘 작동할 때는 매우 효과적이며, 만족감을 줍니다.

 

하지만 AI와 함께 코딩을 하다 보면 어느 순간 막히는 경우가 있습니다. 프롬프트를 계속 수정하고 접근 방식을 조정해도 모델은 같은 종류의 답변을 조금씩 다르게 표현하며, 동일한 불완전한 솔루션의 변형만을 반환합니다. 거의 다 온 것 같은데 도달하지 못하는 느낌입니다. 그리고 더 큰 문제는, 어떻게 다시 제대로 된 방향으로 나아가야 할지 명확하지 않다는 점입니다.

 

이 순간은 실제 작업에서 AI를 적용하려는 많은 사람들에게 익숙한 상황입니다. 이것이 바로 최근 O’Reilly의 AI Codecon 이벤트에서 제가 발표한 주제였습니다.

 

지난 2년 동안 Head First C#의 최신판 작업을 진행하면서, 개발자들이 코딩과 AI 사용 모두에서 더 나아질 수 있도록 돕는 새로운 학습 경로를 개발했습니다. 저는 이를 Sens-AI라고 부르며, 이는 제가 계속해서 목격한 것에서 비롯되었습니다.

 

AI와 관련된 학습 격차는 아직 개발 역량을 쌓아가는 사람들에게 실제적인 어려움을 안겨줍니다.

 

최근 O’Reilly Radar 기사 “AI 학습 격차를 메우기”에서는 개발자들이 AI와 코딩을 동시에 배우려고 할 때 발생하는 상황을 다루었습니다. 이는 단순한 도구의 문제가 아니라 사고의 문제입니다. 많은 개발자들이 시행착오를 통해 문제를 해결하고 있으며, 그들이 즉흥적인 시도를 넘어 실제로 문제를 해결할 수 있는 더 나은 방법이 필요하다는 것이 분명해졌습니다.

 

바이브 코딩에서 문제 해결로

 

개발자들에게 AI를 어떻게 사용하는지 물어보면, 많은 이들이 즉흥적인 프롬프트 전략을 설명할 것입니다. 모델에게 작업을 주고, 반환된 결과를 보고, 더 나은 방향으로 유도하는 방식입니다. 이는 빠르고 유연하며, 잘 작동할 때 거의 노력 없이 효과적인 접근 방식일 수 있습니다.

 

이 패턴은 '바이브 코딩'이라는 이름으로 불릴 만큼 흔합니다. 이는 훌륭한 출발점이며, 실제 프롬프트 엔지니어링의 기본 원칙인 반복, 출력에 대한 반응, 피드백 기반의 정제를 활용하기 때문에 잘 작동합니다. 그러나 무언가가 잘못되었을 때, 코드가 예상대로 작동하지 않거나 AI가 동일한 도움이 되지 않는 답변을 반복할 때, 다음에 무엇을 시도해야 할지 명확하지 않습니다. 이때 바이브 코딩은 무너지기 시작합니다.

 

시니어 개발자들은 초보자보다 AI를 더 빨리 습득하는 경향이 있지만, 이는 절대적인 규칙은 아닙니다. 저는 신입 개발자들이 빠르게 습득하는 것을 보았고, 경험 많은 개발자들이 막히는 경우도 보았습니다. 차이는 그들이 다음에 무엇을 하느냐에 있습니다. AI와 성공적으로 협력하는 사람들은 멈추고 다시 생각하는 경향이 있습니다. 무엇이 잘못되었는지 파악하고, 문제를 다시 살펴보고, 프롬프트를 재구성하여 모델에게 더 나은 작업을 제공하는 것입니다.

 

개발자들이 비판적으로 사고할 때, AI는 더 잘 작동합니다. (2025년 5월 8일 O’Reilly AI Codecon에서의 발표 슬라이드)

 

Sens-AI 프레임워크

 

AI 도구를 사용하는 개발자들과 더 밀접하게 작업하면서 그들이 더 쉽게 적응할 수 있도록 돕기 위해 노력하면서, 그들이 막히는 지점을 주목하게 되었고, AI가 동일한 '거의 다 온' 제안을 반복하는 패턴이 교육 세션과 실제 프로젝트에서 계속해서 나타나는 것을 발견했습니다. 저의 작업에서도 이런 일이 발생했습니다. 처음에는 모델의 행동에서 이상한 특이점처럼 느껴졌지만, 시간이 지나면서 그것이 신호라는 것을 깨달았습니다.  AI가 제가 제공한 컨텍스트를 다 사용했다는 신호였습니다. 이 신호는 우리가 문제를 더 잘 이해해야 하며, 모델에게 부족한 정보를 제공해야 한다는 것을 알려줍니다. 이 깨달음은 전환점이었습니다. 이러한 문제점들을 주목하기 시작하면서, 많은 개발자들의 경험에서 동일한 근본 원인을 발견하게 되었습니다. 도구의 결함이 아니라 AI가 스스로 제공할 수 없는 프레임, 컨텍스트, 또는 이해의 부족이었습니다.
 

Sens-AI 프레임워크 단계 (2025년 5월 8일 O’Reilly AI Codecon에서의 발표 슬라이드)

 

시간이 지나면서 많은 테스트, 반복, 개발자들의 피드백을 통해 Sens-AI 학습 경로의 핵심을 다섯 가지 특정 습관으로 정리했습니다. 이들은 학습자들이 어디에서 막혔는지, 어떤 질문을 했는지, 그리고 어떻게 앞으로 나아갈 수 있었는지를 관찰한 결과 직접적으로 도출된 것입니다. 이 습관들은 Head First C#이 개발자들에게 AI와 함께 작업하는 방법을 가르치는 지적 프레임워크를 형성합니다.

 

  1. 컨텍스트. 모델에게 제공하는 정보에 주의를 기울이고, 모델이 무엇을 더 알아야 하는지 파악하여 명확하게 제공하는 것입니다. 여기에는 코드, 주석, 구조, 의도, 그리고 모델이 당신이 하려는 일을 이해하는 데 도움이 되는 모든 것이 포함됩니다.
  2. 연구. AI와 외부 소스를 적극적으로 사용하여 문제에 대한 자신의 이해를 깊게 하는 것입니다. 이는 예제를 실행하고, 문서를 참고하며, 실제로 무슨 일이 일어나고 있는지 확인하는 것을 의미합니다.
  3. 문제 프레이밍. 수집한 정보를 사용하여 문제를 더 명확하게 정의하여 모델이 더 유용하게 응답할 수 있도록 하는 것입니다. 이는 해결하려는 문제를 더 깊이 파고들어 AI가 여전히 알아야 할 것을 인식하고, 프롬프트를 더 생산적인 방향으로 유도하며, 더 많은 컨텍스트가 필요하다는 것을 깨달았을 때 추가 연구를 수행하는 것을 포함합니다.
  4. 정제. 프롬프트를 의도적으로 반복하는 것입니다. 이는 무작위로 수정하는 것이 아니라, 모델이 맞춘 것과 놓친 것에 기반하여 목표를 가진 변경을 하는 것이며, 그 결과를 다음 단계로 안내하는 것입니다.
  5. 비판적 사고. AI 출력의 품질을 판단하는 것입니다. 제안이 의미가 있습니까? 정확하고, 관련성이 있으며, 그럴듯합니까? 이 습관은 개발자들이 실제로 작동하지 않는 자신감 있는 답변을 신뢰하는 함정을 피하는 데 특히 중요합니다.

 

이러한 습관들은 개발자들이 AI를 더 잘 활용하면서도 작업의 방향을 통제할 수 있게 해줍니다.

 

막힘에서 해결로. AI로부터 더 나은 결과 얻기

 

저는 많은 개발자들이 Copilot과 ChatGPT 같은 도구를 사용하는 것을 지켜보았습니다. 교육 세션 동안, 실습에서, 그리고 그들이 직접 저에게 도움을 요청했을 때. 저에게 인상 깊었던 것은 그들이 얼마나 자주 AI가 나쁜 일을 했다고 가정하는지였습니다. 실제로는 프롬프트에 모델이 문제를 해결하는 데 필요한 정보가 포함되어 있지 않았습니다. 아무도 그들에게 올바른 컨텍스트를 제공하는 방법을 보여주지 않았습니다. 이것이 바로 다섯 가지 Sens-AI 습관이 해결하려는 것입니다. 개발자들에게 체크리스트를 제공하는 것이 아니라 AI와 더 효과적으로 작업할 수 있는 정신 모델을 구축하는 데 도움을 주는 것입니다.

 

AI Codecon 발표에서, 저는 30년 이상의 코딩 경험을 가진 매우 경험 많은 개발자인 제 동료 Luis에 대한 이야기를 공유했습니다. 그는 다른 개발자들을 교육하기 위한 콘텐츠를 구축하고, 대형 언어 모델과 직접 작업하며, 정교한 프롬프트 기술을 사용하고, AI 기반 분석 도구를 구축하는 고급 AI 사용자입니다.

 

Luis는 Tauri라는 Rust 기반 도구를 사용하여 React 앱을 위한 데스크톱 래퍼를 만들고 있었습니다. 그는 Copilot과 ChatGPT를 모두 활용하여 출력을 교차 확인하고, 대안을 탐색하며, 다양한 접근 방식을 시도했습니다. 하지만 코드는 여전히 작동하지 않았습니다.

 

각 AI 제안은 문제의 일부를 해결하는 것처럼 보였지만 다른 부분을 깨뜨렸습니다. 모델은 동일한 불완전한 솔루션의 약간 다른 버전을 계속 제공하며, 문제를 완전히 해결하지 못했습니다. 한동안 그는 프롬프트를 조정하고 작은 조정이 도움이 될지 확인하기 위해 다시 시도하면서 바이브 코딩을 통해 문제를 해결하려 했지만, 답변은 계속해서 같은 지점을 맴돌았습니다. 결국 그는 AI가 컨텍스트를 다 소진했다는 것을 깨닫고 접근 방식을 변경했습니다. 그는 한 발 물러서서 AI가 시도하고 실패한 것을 더 잘 이해하기 위해 집중적인 연구를 수행하고, Sens-AI 프레임워크에서 강조하는 동일한 습관을 적용했습니다.

 

이러한 전환은 결과를 변화시켰습니다. AI가 사용하려는 패턴을 이해한 후, 그는 그것을 안내할 수 있었습니다. 그는 프롬프트를 재구성하고, 더 많은 컨텍스트를 추가하여 마침내 작동하는 제안을 받기 시작했습니다. 제안은 Luis가 문제를 이해하는 데 필요한 누락된 조각을 모델에게 제공했을 때만 작동하기 시작했습니다.

 

Sens-AI 프레임워크 적용. 실제 사례

 

Sens-AI 프레임워크를 개발하기 전에, 나중에 이를 위한 교과서적인 사례가 된 문제에 직면했습니다. 저는 COBOL이라는 메인프레임을 위해 개발된 수십 년 된 언어가 인터랙티브 게임의 기본 메커니즘을 처리할 수 있는지 궁금했습니다. 그래서 W/A/S/D 키를 사용하여 사용자가 화면에서 별표를 이동할 수 있는 간단한 터미널 앱을 구축하기 위해 실험적인 바이브 코딩을 했습니다. 이것은 이상한 작은 사이드 프로젝트였습니다. 저는 단지 COBOL이 원래 의도된 것이 아닌 일을 할 수 있는지 확인하고, 그 과정에서 무언가를 배우고 싶었습니다.

 

초기 AI 생성 코드는 잘 컴파일되고 실행되었으며, 처음에는 어느 정도 진전을 이루었습니다. 화면을 지우고, 올바른 위치에 별표를 그리며, 사용자가 Enter 키를 누르지 않아도 되는 원시 키보드 입력을 처리하고, 많은 깜박임을 유발하는 초기 버그를 해결할 수 있었습니다.

 

하지만 ANSI 이스케이프 코드 ";10H"와 같은 코드가 커서를 제어하는 대신 문자 그대로 출력되는 더 미묘한 버그에 직면했을 때, ChatGPT는 막혔습니다. 저는 문제를 설명했고, 그것은 매번 약간 다른 버전의 동일한 답변을 생성했습니다. 한 제안은 다른 변수 이름을 사용했습니다. 다른 하나는 연산 순서를 변경했습니다. 몇몇은 STRING 문을 재구성하려고 시도했습니다. 하지만 그 중 어느 것도 근본 원인을 해결하지 못했습니다.

 

버그가 있는 COBOL 앱, 별표를 이동하는 대신 원시 이스케이프 시퀀스를 출력합니다.

 

패턴은 항상 같았습니다. 그럴듯해 보이지만 실제로는 동작을 변경하지 않는 약간의 코드 재작성. 이것이 반복 루프가 어떻게 보이는지입니다. AI는 더 나쁜 답변을 주는 것이 아니라, 동일한 개념적 아이디어에 갇혀 있었습니다. 그래서 많은 개발자들이 하는 것처럼, 저는 AI가 단순히 제 질문에 답할 수 없다고 가정하고 다른 문제로 넘어갔습니다.

 

그 당시 저는 반복 루프를 그것이 무엇인지 인식하지 못했습니다. 저는 ChatGPT가 단순히 답을 모른다고 가정하고 포기했습니다. 하지만 Sens-AI 프레임워크를 개발한 후 프로젝트를 다시 살펴보니, 전체 교환을 새로운 시각으로 보았습니다. 반복 루프는 AI가 더 많은 컨텍스트가 필요하다는 신호였습니다. 제가 그것이 알아야 할 것을 말하지 않았기 때문에 막힌 것입니다.

 

프레임워크 작업을 시작했을 때, 저는 이 오래된 실패를 기억하고 그것이 완벽한 테스트 사례가 될 것이라고 생각했습니다. 이제 따라야 할 일련의 단계가 있었습니다.

 

  • 먼저, AI가 컨텍스트를 다 소진했다는 것을 인식했습니다. 모델은 무작위로 실패한 것이 아니라, 제가 그것에게 무엇을 하라고 요청하는지 이해하지 못했기 때문에 반복하고 있었습니다.
  • 다음으로, 목표 지향적인 연구를 수행했습니다. ANSI 이스케이프 코드에 대해 다시 공부하고, AI의 이전 설명을 더 주의 깊게 읽기 시작했습니다. 그때 저는 처음 바이브 코딩을 할 때 지나쳤던 세부 사항을 발견했습니다. AI가 생성한 코드에 대한 설명을 다시 살펴보니, PIC ZZ COBOL 구문이 숫자 편집 필드를 정의한다는 것을 알았습니다. 이것이 문자열에 선행 공백을 도입할 수 있으며, 이스케이프 시퀀스를 깨뜨릴 수 있는지 궁금했습니다.
  • 그런 다음, 문제를 재구성했습니다. 새로운 채팅을 열고 제가 무엇을 만들려고 했는지, 무엇을 보고 있는지, 그리고 제가 의심하는 것을 설명했습니다. AI에게 동일한 솔루션을 반복하고 있다는 것을 알았다고 말하고, 우리가 근본적으로 무언가를 놓치고 있다는 신호로 취급했습니다. 또한 제가 연구를 했고 관련이 있다고 의심되는 세 가지 단서가 있다고 말했습니다. COBOL이 여러 항목을 순서대로 표시하는 방법, 터미널 이스케이프 코드가 어떻게 형식화되어야 하는지, 숫자 필드의 간격이 출력에 영향을 미칠 수 있는지. 프롬프트는 답을 제공하지 않았습니다; 그것은 AI가 조사할 수 있는 잠재적인 연구 영역을 제공했습니다. 그것은 AI가 반복 루프에서 벗어나는 데 필요한 추가 컨텍스트를 찾는 데 필요한 것을 제공했습니다.
  • 모델이 막힘에서 벗어난 후, 프롬프트를 정제했습니다. 출력이 정확히 어떻게 보여야 하는지, 문자열을 더 안정적으로 구성하는 방법에 대한 후속 질문을 했습니다. 저는 단순히 해결책을 찾고 있는 것이 아니라, 모델을 더 나은 접근 방식으로 안내하고 있었습니다.
  • 그리고 무엇보다도, 비판적 사고를 사용했습니다. 답변을 주의 깊게 읽고, 제가 이미 알고 있는 것과 비교하며, 실제로 의미가 있는 것에 기반하여 시도할 것을 결정했습니다. 설명이 확인되었습니다. 저는 수정을 구현했고, 프로그램이 작동했습니다.

 

ChatGPT의 반복 루프를 벗어나게 한 나의 프롬프트

 

문제를 이해하고, AI에게 누락된 컨텍스트에 대한 몇 가지 힌트를 제공하기 위해 충분한 연구를 수행한 후, 저는 ChatGPT의 반복 루프를 벗어나게 하는 프롬프트를 작성할 수 있었고, 제가 필요로 하는 작업을 정확히 수행하는 코드를 생성했습니다. 작동하는 COBOL 앱의 생성된 코드는 이 GitHub GIST에서 확인할 수 있습니다.

 

화면에서 별표를 이동하는 작동하는 COBOL 앱

 

신입 개발자에게 이 습관이 중요한 이유

 

저는 Head First C#에서 프레임워크의 다섯 가지 습관을 중심으로 Sens-AI 학습 경로를 구축했습니다. 이 습관들은 체크리스트, 스크립트, 또는 엄격한 규칙이 아닙니다. 이들은 사람들이 AI를 더 생산적으로 사용할 수 있도록 돕는 사고 방식이며, 수년간의 경험이 필요하지 않습니다. 저는 신입 개발자들이 이를 빠르게 습득하는 것을 보았으며, 얕은 프롬프트 루프에 갇혀 있다는 것을 깨닫지 못한 경험 많은 개발자들보다 더 빠르게 습득하는 경우도 보았습니다.

 

이 습관에 대한 주요 통찰은 Head First C#의 최신판에서 코딩 연습 문제를 업데이트할 때 저에게 다가왔습니다. 저는 ChatGPT와 Copilot 같은 도구에 지침과 시작 코드를 붙여넣어 AI를 사용하여 연습 문제를 테스트합니다. 그것들이 올바른 해결책을 제공한다면, 모델에게 문제를 해결할 수 있는 충분한 정보를 제공했다는 것을 의미하며, 이는 독자들에게도 충분한 정보를 제공했다는 것을 의미합니다. 하지만 문제를 해결하지 못한다면, 연습 문제 지침에 무언가가 누락된 것입니다.

 

책의 연습 문제를 테스트하기 위해 AI를 사용하는 과정은 2007년 첫 번째 판에서 겪었던 문제를 상기시켰습니다. 한 연습 문제는 사람들을 계속해서 혼란스럽게 했고, 많은 피드백을 읽은 후, 저는 문제를 깨달았습니다. 독자들에게 문제를 해결하는 데 필요한 모든 정보를 제공하지 않았습니다. 이는 저에게 연결점을 제공했습니다. AI가 일부 코딩 문제에서 어려움을 겪는 이유는 학습자들이 그 연습 문제에서 어려움을 겪는 이유와 동일합니다. 컨텍스트가 없기 때문입니다. 좋은 코딩 연습 문제를 작성하고 좋은 프롬프트를 작성하는 것은 모두 문제를 이해하는 데 필요한 것이 무엇인지 이해하는 데 달려 있습니다.

 

이 경험은 개발자들이 AI와 성공적으로 협력하기 위해, 우리는 단순히 프롬프트 엔지니어링의 기본을 가르치는 것 이상을 해야 한다는 것을 깨닫게 해주었습니다. 우리는 이러한 사고 습관을 명시적으로 심어주고, 개발자들이 핵심 코딩 기술과 함께 이를 구축할 수 있는 방법을 제공해야 합니다. 개발자들이 성공하기를 원한다면, 단순히 '프롬프트를 더 잘 작성하라'고 말할 수 없습니다. 우리는 그들에게 AI와 함께 생각하는 방법을 보여주어야 합니다.

 

앞으로의 방향

 

AI가 정말로 우리가 소프트웨어를 작성하는 방식을 변화시키고 있다면—그리고 저는 그렇게 믿습니다—우리는 그것을 가르치는 방식을 변화시켜야 합니다. 우리는 사람들이 도구에 접근할 수 있도록 쉽게 만들었습니다. 더 어려운 부분은 그들이 도구를 잘 사용할 수 있는 습관과 판단력을 개발하도록 돕는 것입니다, 특히 문제가 발생했을 때. 이는 단순한 교육 문제만이 아니라, 디자인 문제, 문서화 문제, 그리고 도구 문제이기도 합니다. Sens-AI는 하나의 답변이지만, 그것은 시작에 불과합니다. 우리는 여전히 더 명확한 예제와 모델의 출력을 안내하고, 디버그하고, 정제하는 더 나은 방법이 필요합니다. 개발자들에게 AI와 함께 생각하는 방법을 가르친다면, 우리는 그들이 단순한 코드 생성자가 아니라 그들의 코드가 무엇을 하고 있는지, 왜 중요한지를 이해하는 사려 깊은 엔지니어가 되도록 도울 수 있습니다.

 

원문 . The Sens-AI Framework. Teaching Developers to Think with AI

댓글

댓글 입력