코딩(Coding) vs 프로그래밍(Programming): 교수님은 왜 구별하라고 하셨을까? |        Serendipity                                                                                                                                                                                                                                                                                                                                                                                   
Post

코딩(Coding) vs 프로그래밍(Programming): 교수님은 왜 구별하라고 하셨을까?

코딩(Coding) vs 프로그래밍(Programming): 교수님은 왜 구별하라고 하셨을까?

🔵 Intro

“코딩이라는 말 쓰지 마라” by Y대학교 컴퓨터과학과 교수

컴퓨터 공학 수업에서 교수님께 “학생들은 ‘코딩’이라는 단어를 너무 쉽게 쓰는데, ‘프로그래밍’과는 다르다”라는 조언을 들은 적이 있다. 단순히 코드를 짜는 ‘코더(Coder)’라는 직업도 있다는데, 이 둘은 정확히 무엇이 다르고 왜 구분해서 사용해야 할까?

이 글에서는 코딩과 프로그래밍의 정의와 범위를 명확히 구분하고, 왜 공학자(Engineer)와 연구자(Researcher)에게 ‘프로그래밍’적 사고가 중요한지 정리해 본다.

🔵 코딩 (Coding) vs 프로그래밍 (Programming)

가장 직관적인 비유는 ‘글쓰기’이다.

  • 코딩(Coding): 문법에 맞게 문장을 쓰는 행위(Translation).
  • 프로그래밍(Programming): 기획, 자료 수집, 논리 구성, 실제 작성, 퇴고까지 포함하는 소설이나 논문을 완성하는 전 과정(Process).

‘코딩’은 ‘프로그래밍’이라는 더 큰 프로세스의 ‘구현(Implementation)’ 단계에 속하는 하위 작업이다.

⚪ 1. 코딩 (Coding): 논리를 코드로 변환하는 기술

코딩은 특정 프로그래밍 언어(Python, C++, Java 등)의 문법(Syntax)을 사용하여, 이미 정의된 로직이나 알고리즘을 컴퓨터가 이해할 수 있는 코드로 옮겨 적는 ‘번역’ 작업에 가깝다.

  • 핵심: 언어 문법의 정확성, 효율적인 코드 작성.
  • 범위: 프로그래밍의 ‘구현’ 단계에 한정됨.
  • 산출물: 소스 코드 (Source Code).

⚪ 2. 프로그래밍 (Programming): 문제를 해결하는 전 과정

프로그래밍은 아이디어 구상부터 실제 동작하는 소프트웨어를 만들기까지의 ‘문제 해결(Problem Solving)’ 전 과정을 의미한다.

여기에는 다음과 같은 복합적인 단계가 모두 포함된다.

  1. 문제 정의 및 분석 (Analysis): 해결하고자 하는 것이 무엇인지 명확히 한다. (e.g., MRI 영상의 Motion Artifact를 어떻게 보정할 것인가?)
  2. 설계 (Design): 문제 해결 전략을 수립한다.
    • 알고리즘 (Algorithm): 어떤 단계와 논리로 문제를 풀 것인가?
    • 자료구조 (Data Structure): 데이터는 어떤 형태로 저장하고 관리할 것인가?
    • 아키텍처 (Architecture): 전체 시스템의 구조는 어떻게 설계할 것인가? (e.g., 어떤 딥러닝 모델 구조를 사용할 것인가?)
  3. 구현 (Implementation): 설계한 내용을 ‘코딩’을 통해 실제 코드로 작성한다.
  4. 테스트 및 디버깅 (Testing & Debugging): 코드가 의도대로 작동하는지 검증하고 오류를 수정한다.
  5. 배포 및 유지보수 (Deployment & Maintenance): 소프트웨어를 사용자에게 전달하고 지속적으로 관리한다.

🔵 굳이 표로 비교를 하자면

특징 (Feature)코딩 (Coding)프로그래밍 (Programming)
핵심 활동 (Core Activity)논리를 코드로 변환 (Translation)문제 해결을 위한 전 과정 (Process)
범위 (Scope)좁음 (Narrow) / 구현 단계의 일부넓음 (Broad) / 기획, 설계, 구현, 테스트, 유지보수
필요 기술 (Required Skill)특정 언어의 문법 (Syntax)논리력, 알고리즘, 자료구조, 시스템 아키텍처
비유 (Analogy)문장 쓰기, 번역하기소설 쓰기, 집 짓기
결과물 (Output)소스 코드 (Source Code)동작하는 소프트웨어/애플리케이션

🔵 왜 이 구분이 중요한가? (교수님의 관점)

교수님이나 현업의 시니어 엔지니어들이 이 구분을 강조하는 이유는, ‘문제 해결 능력’의 중요성 때문이다.

단순히 문법을 아는 ‘코더(Coder)’는 AI(e.g., GitHub Copilot, ChatGPT)에 의해 대체될 수 있지만, 문제를 정의하고, 최적의 해결책을 ‘설계’하며, 그 결과를 검증하는 ‘프로그래머(Programmer / Engineer)’의 역할은 대체되기 어렵다.

특히 딥러닝/MRI 연구(QSM, MWI 등)를 하는 대학원생의 입장에서 ‘코딩’은 연구 아이디어를 구현하는 ‘도구’일 뿐, 연구의 핵심은 “어떤 문제를 어떻게 풀 것인가”를 설계하는 ‘프로그래밍’적 사고에 있다.

최근에 치뤘던 정보처리기사 시험을 살펴보아도 ‘코딩 문법’ 자체보다는 소프트웨어 개발 생명 주기(SDLC), 요구사항 분석, 시스템 설계(UML), 데이터베이스 모델링, 테스트 방법론 등 ‘프로그래밍’의 전 과정에 대한 이해를 평가한다. 이는 자격증의 목적이 ‘코더’가 아닌 ‘소프트웨어 엔지니어(기사)’를 양성하는 데 있기 때문이다.

🔵 결론: 우리는 ‘코더’가 아닌 ‘프로그래머’를 지향해야 한다

‘코딩’은 프로그래밍을 위한 필수적인 기술(Skill)이지만, ‘프로그래밍’은 문제를 해결하는 종합적인 학문(Discipline)이자 공학(Engineering)이다.

교수님의 조언은, 우리가 단순히 코드를 타이핑하는 사람이 아니라, 문제의 본질을 꿰뚫고 창의적인 해결책을 설계하는 ‘엔지니어’이자 ‘프로그래머’로 성장해야 한다는 의미일 것이다.

가르침을 주신 송xx 교수님 항상 감사합니다…


This post is licensed under CC BY 4.0 by the author.