# 프로그래머

소프트웨어의 소스 코드를 편집하고 있는 컴퓨터 프로그래머.
컴퓨팅 분야에서 **프로그래머**(programmer)는 컴퓨터 프로그래밍을 하는 사람이다. 프로그래머는 컴퓨터 프로그램의 논리나 알고리즘을 설계하고 프로그램을 작성하고 테스트를 수행한다. 이들중 일부는 소프트웨어 엔지니어, 컴퓨터과학자, 해커로 간주할 수 있다.

에이다 러브레이스는 역사상 최초의 프로그래머로 여겨진다. 그녀는 1842년 10월에, 찰스 배비지의 해석 기관 컴퓨터 상의 구현을 알고리즘으로 설명한 최초의 사람이다.

컴퓨터 프로그래밍 기술에 능숙한 사람들은 유명세를 타기도 하지만, 이러한 관심은 보통 소프트웨어 엔지니어 집단으로 국한된다. 많은 저명한 프로그래머들이 종종 "해커"라는 명칭으로 불린다. 프로그래머는 다양한 형태를 가진다. 전문 프로그래머는 보통 IT 분야의 큰 회사나 작은 서비스 업체에서 일한다. 이것에 대하여 여러 가지 자격증 등이 있다.

IT 프로그래머는 보통 IT 분야의 회사에서 일하거나 만든다. 그리고 그들은 프로그램을 만들고, 베타 테스터들에게 첫 시험판을 주어 오류가 나는지 살필 수 있다. 그 다음 오류가 나지 않으면 그것을 알파 버전으로 한정적으로 판매할 수 있다. 사용자들 에게도 문제가 일어나지 않으면 그것을 정식 버전으로 판매할 수 있다. 가벼운 프로그램만 생각하고 간단한 코딩만 익혀도 되는 것으로 여기는 사람들이 있지만 능력있는 프로그래머가 되기 위해서는 각종 프로그래밍 언어들과 수학, 컴퓨터 과학 이론등을 공부하고 깊이있게 이해하여야 한다.

## 식별

때때로 프로그래머나 직업은 사용하는 언어나 대상 플랫폼에 의해 식별되기도 한다. 예를 들어, 어셈블리 프로그래머, 웹 개발자 등이 있다.

## 직업 명칭

프로그래밍 업무를 포함하는 직업 명칭은 컴퓨터 산업 전반과 개인에 따라 서로 다른 함의를 갖는다. 다음은 주목할 만한 설명들이다.

소프트웨어 개발자는 주로 명세서를 바탕으로 소프트웨어를 구현하고 버그를 수정한다. 다른 업무로는 코드 변경 사항 검토 및 테스트가 포함될 수 있다.
직업에 필요한 기술을 습득하기 위해 컴퓨터 과학 학위나 전문학사 학위를 취득하거나, 코딩 부트캠프에 참여하거나, 독학을 하기도 한다.

소프트웨어 엔지니어는 보통 개발자와 동일한 업무를 수행할 뿐만 아니라, 새로운 기능 및 애플리케이션의 아키텍처 구축 및 설계, 새로운 플랫폼 타겟팅, 소프트웨어 개발 수명 주기(설계, 구현, 테스트 및 배포) 관리, 프로그래머 팀 리딩, 고객·관리자 및 다른 엔지니어와의 소통, 시스템 안정성 및 품질 고려, 소프트웨어 개발 방법론 탐구 등 소프트웨어 공학의 더 넓은 책임을 맡는다.

때때로 소프트웨어 엔지니어는 소프트웨어 공학, 컴퓨터 공학 또는 컴퓨터 과학 학위가 요구되기도 한다. 일부 국가에서는 엔지니어라고 불리기 위해 법적으로 공학 학위를 요구한다.

## 역사

에이다 러브레이스는 많은 이들에 의해 최초의 컴퓨터 프로그래머로 여겨진다.
영국의 백작 부인이자 수학자인 에이다 러브레이스는 종종 최초의 컴퓨터 프로그래머로 간주된다.
그녀는 찰스 배비지의 해석기관에서 베르누이 수를 계산하기 위한 알고리즘을 작성하여 1842년 10월에 발표했다.
그 기계는 그녀의 생전에 완성되지 않았기 때문에, 그녀는 실제로 알고리즘이 작동하는 것을 경험하지 못했다.

1941년, 독일의 토목 기술자 콘라트 추제는 작동하는 프로그램 제어 방식의 전자 컴퓨터에서 프로그램을 실행한 최초의 인물이었다. 컴퓨터 과학자 볼프강 K. 길로이와 인공지능 교수 라울 로하스 등에 따르면, 1943년부터 1945년 사이에 추제는 최초의 고급 프로그래밍 언어인 플랑칼퀼을 개발했다.

1945년 에니악 프로그래밍 팀의 일원이었던 케이 맥널티, 베티 제닝스, 베티 스나이더, 마린 웨스코프, 프랜 빌라스, 루스 리히터만은 이후 최초의 전문 컴퓨터 프로그래머로 인정받았다.

## 소프트웨어 산업

소프트웨어 제품과 서비스를 제공하기 위해 특별히 설립된 최초의 회사는 1955년의 컴퓨터 유시지 컴퍼니(Computer Usage Company)였다. 그전까지 컴퓨터는 고객이나 스페리 랜드, IBM과 같은 당시 소수의 상업용 컴퓨터 제조업체에 의해 프로그래밍되었다.

소프트웨어 산업은 컴퓨터가 처음으로 대량 생산되어 판매되기 시작한 직후인 1960년대 초에 확장되었다. 대학, 정부, 기업들이 소프트웨어에 대한 수요를 창출했다. 이러한 프로그램 중 다수는 전업 직원 프로그래머에 의해 내부적으로 작성되었으며, 일부는 특정 기계 사용자들 사이에 무료로 배포되었고, 일부는 상업적으로 판매되었다. 컴퓨터 사이언스 코퍼레이션(1959년 설립)과 같은 다른 회사들도 성장하기 시작했다. 컴퓨터 제조업체들은 곧 운영 체제, 시스템 소프트웨어 및 프로그래밍 환경을 자사 기계와 함께 묶어서 제공하기 시작했다. IBM 1620은 1620 심볼릭 프로그래밍 시스템과 FORTRAN을 함께 제공했다.

이 산업은 1970년대 중반 개인용 컴퓨터(PC)의 등장과 함께 크게 확장되었으며, 이는 일반 사무실 근무자들에게 컴퓨팅을 보급했다. 이후 PC는 게임, 애플리케이션 및 유틸리티 소프트웨어 시장이 지속적으로 성장하는 데 기여했다. 이는 해당 기간 동안 소프트웨어 개발자에 대한 수요 증가로 이어졌다.

## 업무의 성격

컴퓨터 프로그래머는 컴퓨터가 기능을 수행하기 위해 따라야 하는 상세한 명령인 컴퓨터 프로그램을 작성, 테스트, 디버그 및 유지 관리한다. 또한 프로그래머는 컴퓨터를 통해 문제를 해결하기 위한 논리적 구조를 구상하고 설계하며 테스트한다. 프로그래밍에서의 많은 기술적 혁신(고급 컴퓨팅 기술과 정교한 새 언어 및 프로그래밍 도구)은 프로그래머의 역할을 재정의하고 오늘날 수행되는 많은 프로그래밍 작업의 수준을 높였다. 직업 명칭과 설명은 조직에 따라 다를 수 있다.

프로그래머는 기업의 정보기술(IT) 부서, 대형 소프트웨어 회사, 소규모 서비스 기업, 모든 규모의 정부 기관 등 다양한 환경에서 근무한다. 많은 전문 프로그래머는 컨설팅 회사에 소속되어 고객사 현장에서 독립 계약자로 근무하기도 한다. 프로그래머로 일하기 위해 보통 면허가 필요하지는 않지만, 프로그래머들은 흔히 전문 자격증을 보유하고 있다. 프로그래밍은 전문직으로 간주된다.

프로그래머의 업무는 프로그램을 작성하는 비즈니스 유형에 따라 매우 다양하다. 예를 들어, 금융 기록을 갱신하는 것과 관련된 명령은 비행 시뮬레이터에서 비행 훈련을 받는 조종사를 위해 항공기 조건을 재현하는 데 필요한 명령과 매우 다르다. 단순한 프로그램은 몇 시간 안에 작성될 수 있다. 더 복잡한 프로그램은 1년 이상의 작업이 필요할 수 있으며, 어떤 프로그램은 '완성'된 것으로 간주되지 않고 사용되는 동안 지속적으로 개선되기도 한다. 대부분의 경우, 여러 프로그래머가 선임 프로그래머의 감독 하에 팀으로 함께 일한다.

### 소프트웨어의 종류

프로그래밍 에디터 또는 소스 코드 에디터는 프로그래머나 개발자가 애플리케이션이나 프로그램의 소스 코드를 작성하기 위해 특별히 설계된 텍스트 에디터다. 대부분의 이러한 에디터는 프로그래머에게 유용한 기능을 포함하고 있는데, 색상 구문 강조, 자동 들여쓰기, 자동 완성, 괄호 짝 맞추기, 구문 체크, 그리고 플러그인 허용 등이 있다. 이러한 기능들은 코딩, 디버깅 및 테스트 중에 사용자를 돕는다.

## 글로벌화

### 영국의 시장 변화

BBC 뉴스에 따르면, 2009년 컴퓨터 과학 졸업생의 17%가 졸업 6개월 후에도 전공 분야에서 일자리를 찾지 못했는데, 이는 조사된 대학 전공 중 가장 높은 비율이었으며, 같은 조사에서 의대생의 실업률은 0%였다.

### 미국의 시장 변화

닷컴 버블의 붕괴(1999–2001)와 대침체(2008) 이후, 많은 미국 프로그래머들이 일자리를 잃거나 임금이 삭감되었다. 또한 미국에서 컴퓨터 관련 학위 및 기타 STEM 학위의 등록(STEM 이탈)은 수년 동안 감소해 왔으며, 특히 여성의 경우가 그러했다. 보부프(Beaubouef)와 메이슨(Mason)에 따르면, 이는 과학 및 수학에 대한 일반적인 관심 부족과 프로그래밍 역시 제조업 및 농업 분야와 같은 압력을 받게 될 것이라는 명백한 두려움 때문일 수 있다. 프로그래머에 대해 미국 노동통계국(BLS)은 원래 2010년부터 2020년까지 12%의 성장을 예측했으나, 이후 2016년부터 2026년까지 -7% 감소, 2019년부터 2029년까지 -9% 감소, 2021년부터 2031년까지 -10% 감소를 예측했다. 이어 2022년부터 2032년까지는 -11% 감소할 것으로 보았다. 2024년부터 2034년까지의 현재 예측은 -6% 감소다. 컴퓨터 프로그래밍은 전 세계 어디서나 수행될 수 있기 때문에, 기업들은 때때로 임금이 낮은 국가의 프로그래머를 고용한다. 국내 수요가 증가했다면, 그것은 주로 은퇴하거나 직종을 전환한 기존 프로그래머를 대체하기 위한 것이다. 그러나 소프트웨어 개발자의 경우 BLS는 현재 15%의 성장을 전망하고 있으며, 이는 2019년부터 2029년까지 고용이 22% 증가(1,469,200개에서 1,785,200개 일자리로 증가, 중위 기본 연봉 11만 달러)할 것이라는 이전 예측보다는 낮아진 수치다. 이 예측은 또한 초기 2010년부터 2020년까지 소프트웨어 개발자에 대해 예측했던 30% 증가보다 낮다. 구분이 다소 모호하기는 하지만, 소프트웨어 개발자는 애플리케이션 개발의 더 넓은 측면에 관여하고 일반적으로 프로그래머보다 더 높은 숙련도를 요구받기 때문에 아웃소싱의 위험이 적다. 프로그래머가 감소하는 또 다른 이유는 고용주가 직무에 대한 요구 사항을 높임에 따라 그들의 기술이 개발자와 같은 다른 직종과 통합되고 있기 때문이다(예: 풀스택 개발자). 또한 최근 인공지능의 발전이 미래 세대의 소프트웨어 직종 수요에 급격한 영향을 미칠 수 있다는 우려도 제기되고 있다.

### 일본의 시장 변화

2024년 기준 일본에서는 주로 노동력의 고령화로 인해 프로그래머에 대한 수요가 급격히 증가하고 있으며, 낮은 출산율로 인해 대체 인력이 부족해지자 그 간극을 메우기 위해 AI 활용이 늘고 있다. 반면, 2020년 기준 일본에 120만 명 이상의 프로그래머가 있음에도 불구하고 일본 기업의 40% 이상이 프로그래머를 포함한 숙련된 IT 인력이 부족하다고 답하고 있다. 2030년까지 프로그래머 수는 160만 명을 넘어서겠지만, 프로그래머를 포함해 약 80만 명의 엔지니어 부족 현상이 발생할 것으로 예상된다.

## 프로그래밍 교육

깃허브 코드스페이스는 프로그래밍을 시작하기 위해 최소한의 설정만 필요한 온라인 통합 개발 환경이다.
프로그래밍 교육은 컴퓨터 프로그래밍 개념, 프로그래밍 언어, 그리고 코딩 베스트 프랙티스를 가르치고 배우는 것을 포함한다. 정규 컴퓨터 과학 학위 프로그램, 직업교육, 경력 및 기술 교육 센터, 코딩 부트캠프, 도서관, 온라인 강의, 자기주도적 학습 등 다양한 형태로 제공된다. 교육적 이니셔티브는 종종 문제 해결, 컴퓨팅 사고, 논리적 사고 및 알고리즘 개발에 초점을 맞춘다. 초등교육 및 중등교육에서는 Hour of Code, 코드 클럽(Code Club), 런 투 코드(Learn to Code) 및 교실 내 컴퓨터 도입과 같은 이니셔티브를 통해 프로그래밍이 컴퓨터 소양 커리큘럼에 점점 더 통합되고 있다. 고등교육 수준에서 프로그래밍 교육은 소프트웨어 공학, 자료 구조, 디버깅, 소프트웨어 설계 및 게임 개발, 인공지능, 암호학 또는 데이터 사이언스와 같은 전문 분야의 교과 과정을 포함할 수 있다. 인공지능 챗봇, 교육용 프로그래밍 소프트웨어, 온라인 통합 개발 환경과 같은 수많은 플랫폼과 자원은 프로그래밍 교육에 대한 접근성을 확대했다.

* 프로그래머 목록
* 프로그래밍 언어 목록
* 소프트웨어 개발 프로세스
* 소프트웨어 공학
* 비디오 게임 프로그래머
* 제럴드 마빈 와인버그
* 프로그래머의 날

* The US Department of Labor's description of "Computer Programmers"