매주 새로운 AI 툴이 헤드라인을 장식합니다. 학생들은 대화형 에이전트, 자율 주행 차량, 생성형 예술의 데모를 보며 즉시 뛰어들고 싶어 합니다. 그런 마음이 드는 것은 당연합니다. 드래그 앤 드롭과 프롬프트만으로 작동하는 챗봇을 만들 수 있는데, 왜 몇 달씩이나 루프와 변수를 배우며 시간을 보내야 할까요? 하지만 프로그래밍의 기초를 건너뛰는 것은 생각보다 훨씬 빨리 한계에 부딪히게 만듭니다.

지름길이 왜 그토록 유혹적인가

현재의 AI 마케팅 열풍은 속도를 강조합니다. 로우코드(Low-code) 플랫폼과 API 래퍼를 사용하면 단 하루 만에 대화형 인터페이스를 구축할 수 있습니다. 이러한 빠른 성과는 마치 진정한 진보처럼 느껴집니다. 하지만 이러한 인터페이스는 여러분이 직접 작성하지 않았고 내부를 들여다볼 수도 없는 인프라 위에 놓여 있습니다. API 호출 제한(rate-limit)이 걸리거나, 운영 환경에서 모델이 환각(hallucination) 현상을 일으키거나, 모바일 앱의 반응성을 유지하기 위해 추론 지연 시간(inference latency)을 줄여야 할 때, 표면적인 지식만으로는 막막한 상황에 처하게 됩니다. 결국 타인이 만든 도구에 의존하게 되며, 이를 수리하거나 재구성할 능력을 갖추지 못하게 됩니다.

프로그래밍이 실제로 제공하는 것

프로그래밍은 컴퓨터를 위한 정밀한 명령을 작성하는 행위입니다. 웹사이트가 동시 접속 트래픽을 처리하는 방식, 모바일 앱이 기기 간에 데이터를 동기화하는 방식, 데이터베이스가 손상 없이 수백만 개의 레코드를 저장하는 방식, 그리고 하드웨어가 고장 난 후에도 클라우드 소프트웨어가 가용성을 유지하는 방식이 바로 프로그래밍입니다. 또한 결정적으로, 모든 AI 시스템이 만들어지고, 학습되고, 배포되는 방식이기도 합니다. 프로그래밍 없이는 엔지니어가 될 수 없습니다. 그저 타인의 작업물을 소비하는 사용자에 불과할 뿐입니다.

반면, 인공지능은 인간의 판단이 필요한 작업을 기계가 수행하도록 만드는 데 집중하는 컴퓨터 과학의 한 분야입니다. 이는 코드, 수학, 데이터를 결합합니다. 그 "마법"은 결코 마법이 아닙니다. 그것은 Python으로 감싸인 통계학이며, 특수 칩에서 실행되는 행렬 곱셈이고, 정교하게 큐레이션된 학습 데이터 세트입니다. 과장된 광고를 걷어내면, 그 밑바닥에는 소프트웨어 엔지니어링이 자리 잡고 있음을 알게 될 것입니다.

두 가지의 진짜 차이점

프로그래밍은 무(zero)에서 유를 창조하는 능력을 줍니다. AI는 그 창조물에 패턴 인식, 예측 또는 생성 기능을 추가할 수 있는 전문적인 기술을 제공합니다. 하나는 토대이고, 다른 하나는 그 위에 세워진 층입니다. 콘크리트를 붓기 전에 위층을 설치할 수는 없습니다.

프로그래밍을 할 줄 안다면 오픈 소스 대규모 언어 모델(LLM)이나 확산 모델(diffusion model)의 소스 코드를 읽을 수 있습니다. 단순히 블로그 포스트에서 설명하는 내용을 넘어, 어텐션 메커니즘(attention mechanisms)이 정확히 어떻게 구현되었는지 볼 수 있습니다. 특정 데이터 세트에 맞춰 손실 함수(loss function)를 교체하거나 학습률(learning rate)을 조정해야 할 때 AI 코드를 직접 수정할 수 있습니다. 필연적으로 발생하는 오류들도 해결할 수 있습니다. 텐서(tensor) 간의 형상 불일치(shape mismatch), CUDA 메모리 부족(out-of-memory) 오류, 또는 데이터 전처리 파이프라인의 잠재적인 버그는 챗봇에게 프롬프트를 입력한다고 해서 해결되지 않습니다. 변수를 추적하고, 그래디언트(gradient)를 검사하며, 메모리 할당에 대해 논리적으로 사고해야 합니다.

대부분의 기업은 공개 API를 감싸기만 한 범용 래퍼를 필요로 하지 않습니다. 기존의 환자 기록, 재무 장부 또는 제조 센서와 통합되는 도메인 특화 도구가 필요합니다. 엄격한 개인정보 보호 제약을 준수하면서, 매일 수백만 번의 유료 API 호출을 감당할 수 없는 예산 범위 내에서 작동하는 시스템이 필요합니다. 이를 구축하려면 독창적인 코드를 작성해야 합니다.

Python으로 시작하세요

AI 분야에서 일하고 싶다면 Python부터 시작하세요. Python의 문법은 일반적인 영어 문장과 거의 비슷하게 읽히기 때문에 초보자의 진입 장벽이 낮습니다. 하지만 그 단순함을 약함으로 오해해서는 안 됩니다. Python은 현대 머신러닝의 핵심적인 엔진 역할을 합니다. TensorFlow, PyTorch, scikit-learn, Hugging Face Transformers 모두 Python을 기반으로 구축되었습니다. Python을 배운다는 것은 단순한 장난감 언어를 배우는 것이 아닙니다. AI 연구자들이 분야를 발전시키기 위해 사용하는 바로 그 도구를 배우는 것입니다.

실질적인 로드맵

학습을 뷔페식으로 이것저것 골라 먹는 것이 아니라, 순차적인 과정으로 대하세요. 실제로 추진력을 얻을 수 있는 순서는 다음과 같습니다.

Python 프로그래밍. 변수, 루프, 함수, 클래스, 파일 핸들링을 마스터하세요. JSON 로그를 파싱하거나 기본적인 웹 페이지를 스크래핑하는 스크립트를 작성해 보세요. 리스트를 정렬하거나 예외(exception)를 깔끔하게 처리하지 못한다면, 경사 하강법(gradient descent)을 다룰 준비가 되지 않은 것입니다.

자료구조와 알고리즘. 배열(array), 해시 맵(hash map), 트리(tree), 그래프(graph)는 단순한 면접용 지식이 아닙니다. 이는 관계를 저장하고 효율적으로 검색하는 방법입니다. 현대적인 추천 엔진의 핵심은 결국 영리한 그래프 순회(graph traversal) 문제입니다.

SQL 및 데이터베이스. 모델에는 깨끗한 데이터가 필요합니다. PostgreSQL 데이터베이스에서 학습 세트를 가져오고, 테이블을 조인하여 피처(feature)를 구성하며, 나중에 미세 조정(fine-tuning)을 위해 사용자 상호작용을 저장하게 될 것입니다. 이 단계를 무시하는 것은 데이터를 통제 가능한 구조적 자산이 아닌, 마치 마법의 가루처럼 취급하는 것과 같습니다.

수학: 통계 및 확률. AI는 불확실성 속에서 예측을 수행합니다. 분포, 조건부 확률, 가설 검정을 이해해야 합니다. 이것 없이는 모델이 진정으로 학습하고 있는 것인지, 아니면 단순히 노이즈를 암기하고 있는 것인지 평가할 수 없습니다.

머신러닝 기초. 지도 학습과 비지도 학습을 공부하세요. 기성 라이브러리를 사용하기 전에 NumPy만을 사용하여 밑바닥부터 선형 회귀 모델을 구축해 보세요. 코드를 통해 수학을 체감해야 합니다.

딥러닝. 신경망으로 넘어가세요. PyTorch가 자동 미분을 처리하게 하기 전에 역전파(backpropagation)를 수동으로 이해해 보세요. 내부에서 어떤 일이 일어나고 있는지 알아야 합니다.

생성형 AI. 트랜스포머(transformers), 어텐션 메커니즘(attention mechanisms), 대규모 언어 모델(LLM) 아키텍처를 공부하세요. 이제 화려한 도구들이 이해되기 시작할 것입니다. 내부의 기어들이 어떻게 돌아가는지 볼 수 있기 때문입니다.

AI 프로젝트. 엔드 투 엔드(end-to-end) 파이프라인을 구축하세요. 데이터를 수집하고, 정제하고, 모델을 학습시키고, REST API를 통해 노출하며, 다른 사람들이 사용할 수 있도록 배포하세요. 이것이 바로 이론이 엔지니어링으로 단단해지는 지점입니다.

프로그래밍과 AI는 파트너입니다

프로그래밍과 AI는 라이벌이 아닙니다. 프로그래밍은 그릇을 만들고, AI는 항법 시스템을 추가합니다. 프로그래머는 사진을 찍는 모바일 앱을 만들 수 있습니다. 여기에 AI를 더하면 식물의 종을 인식할 수 있습니다. 프로그래머는 트랜잭션 데이터베이스를 구축할 수 있습니다. 여기에 AI를 더하면 실시간으로 사기 행위를 감지할 수 있습니다. 순서가 중요합니다. 먼저 그릇을 만드세요.

몇 달을 허비하게 만드는 실수들

기초를 건너뛰면 복사-붙여넣기식 개발로 이어집니다. 온라인 포럼에서 스크립트를 가져와 파일 경로만 바꾸고 요행을 바랍니다. 코드가 깨지면 왜 그런지 이해할 수 있는 정신적 모델(mental model)이 없습니다. AI 도구에만 의존하면 빌더(builder)가 아닌 오퍼레이터(operator)가 됩니다. 요약이나 이미지를 요청할 수는 있지만, 다른 회사가 완전히 통제하는 제품을 출시할 수는 없습니다. 수학을 무시하면 눈을 감고 있는 것과 같습니다. 운 좋게 결과가 나오기를 바라며 하이퍼파라미터를 무작위로 조정하게 될 것이고, 분류기가 왜 엣지 케이스(edge cases)에서 실패하는지 이해하지 못할 것입니다. 모든 것을 한꺼번에 배우려 하면 주의력이 분산됩니다. 시작 단계에서는 넓게 아는 것보다 깊게 아는 것이 중요합니다. 하나의 개념을 선택해 완전히 이해될 때까지 파고드세요.

올바른 순서로 프로젝트 구축하기

작고 실체가 있는 애플리케이션부터 시작하세요. 그래픽 인터페이스가 있는 계산기를 만드세요. 로컬 파일에 데이터를 저장하는 할 일 목록(to-do) 앱을 만드세요. 생성 날짜를 기준으로 수천 장의 사진 이름을 바꾸는 스크립트를 작성하세요. 이러한 연습을 통해 상태(state) 관리, 사용자 입력 처리, 로직 디버깅 방법을 배울 수 있습니다.

그 이후에 AI 관련 작업을 시도해야 합니다. Convolutional Neural Network를 사용하여 고양이와 강아지 사진을 구분하는 이미지 분류기를 학습시켜 보세요. 대화의 일관성을 유지하기 위해 메모리 버퍼와 함께 직접적인 API 호출을 사용하는 간단한 챗봇을 만드세요. 코드 구조화, 에러 처리, 문서 읽는 법을 이미 알고 있기 때문에 이 단계로의 도약이 자연스럽게 느껴질 것입니다.

핵심 요약

논리를 먼저 마스터하세요. 컴퓨터에게 인간처럼 생각하도록 가르치려 하기 전에, 컴퓨터가 어떻게 생각하는지 먼저 배우세요. 프로그래밍의 강력한 기초는 AI를 블랙박스에서 당신이 형성하고, 비판하고, 개선할 수 있는 도구로 바꿔줍니다. 바로 그 지점에서 지속 가능한 커리어가 쌓입니다. 풀스택을 이해하는 빌더는 프롬프트만 다룰 줄 아는 오퍼레이터보다 항상 더 오래 살아남을 것입니다.

Source: Programming vs AI: Which Skill Should You Learn First?

Join the community: GyaanSetu AI on Telegram