본문 바로가기

IT

프로그래머(Programmer)

반응형

컴퓨터 프로그램의 논리나 알고리즘을 설계하고 프로그램을 작성 및 테스트하는 사람으로 정의된다.(나무위키) 소프트웨어를 만드는 사람들은 컴퓨터 프로그래머, 소프트웨어 개발자, 소프트웨어 엔지니어, 코더 등 여러 이름으로 불리며 개발 분야 (혹은 범위)가 매우 넓기 때문에 같은 개발자라도 아주 다른 환경의 프로그램을 추구한다. 폭넓은 응용 분야로 인해 프로그램 개발자의 일하는 환경, 개개인의 프로그래머가 하는 일 또한 매우 다양하다. 프로그램의 진화에 따라 생활환경 및 문화가 급속도로 바뀌어 가고 있으며 SF 영화 속의 모습들이 현실로 다가오고 있다.

 

개발자가 되려면 코딩을 잘해야 한다. 이건 바꿀 수 없는 명제이기는 하지만 프로그램 개발자로 성공하기 위해선 창의력과 부단한 노력이 더 중요하다. 많은 개발자가 대학에서 컴퓨터 과학을 공부한 후, 이 분야에 진출한다. 대학에는 대부분 기본적인 컴퓨터 공학, 소프트웨어 학과, AI 학과 등이 운영되고 있으며 게임 디자인이나 정보 시스템 보안학과처럼 분야별 특화학과도 있다. 컴퓨터 혹은 소프트웨어 학과를 졸업한 후 학과 관련 일자리는 아주 넓다. 기업에서 요구하는 프로그램 개발자의 요건으로 코딩 관련 학위를 선호하는 곳이 많다.

그러나 대다수 회사는 훌륭한 코딩 기술만 있다면 코딩을 어디서 배웠는지 신경 쓰지 않는다. 애플의 창업자인 스티브 잡스(Steve Jobs)와 스티브 워즈니악(Steve Wozniak)은 대학을 그만두고 실전의 경험을 쌓은 사람으로 유명하다. 페이스북 설립자인 마크 저커버그(Mark Zuckerberg)나 마이크로 소프트의 빌 게이츠(Bill Gates), 폴 앨런(Paul Allen)도 대학을 그만두고 성공한 사례다. 전 세계 프로그램 개발자 중에 코딩 관련 학위를 가진 사람은 약 45%밖에 되지 않는다.

 

 

컴퓨팅 사고(CT, Computational Thinking)

프로그램을 만들 때 소프트웨어 개발자가 해야 할 가장 중요한 일은 특정 과제를 수행하는데 필요한 단계들을 일일이 확인하는 것이다. 개발자들은 이것을 컴퓨팅 사고(CT)라고 한다.

 

(1) 분해: 복잡한 문제를 몇 개의 작고 단순한 문제로 세분화한다.

(2) 패턴인식: 문제 전반에 걸친 유사성을 모형화한다.

(3) 추상화: 문제의 본질적인 부분과 본질적이지 않은 부분을 구분한다.

(4) 알고리즘 설계: 문제 해결을 위한 일련의 단계를 알고리즘으로 만든다.

 

CT는 소프트웨어 개발에 중요한 단계로써 많은 코딩 학습 맵이 코드보다 컴퓨팅 사고를 강조한다. 세계 여러 나라들이 소프트웨어 교육을 정규 과정으로 도입하고 있으며 단순한 코딩 능력이 아닌 컴퓨팅 사고 교육에 힘쓰고 있다. 영국의 경우 컴퓨팅 사고 과목을 필수 교과 과정으로 지정하고 대학생에서 미취학 아동들에 이르기까지 폭넓은 연령과 장기적 컴퓨팅 사고 교육을 실시하고 있다. 미국 또한 막대한 예산을 책정하여 컴퓨팅 사고 교육 교사 육성에 나서고 있으며 몇 개 주들은 소프트웨어 교육을 필수 과목으로 지정하고 있다.

 

 

소프트웨어 개발 관련 직업

어느 분야에서든지 한 가지 분야에서 최고의 성과를 얻기는 어렵다. 여러 분야의 전문가 혹은 기술을 가진 사람들로 구성된 팀이 소프트웨어 개발에 참여하게 되고 서로 협업을 통해 보다 높은 성과를 얻어 낼 수 있다.

 

(1) 시스템 관리자: 소프트웨어 설치 및 업데이트, 이메일 시스템 관리, 데이터 백업 등의 일을 한다.

(2) 네트워크 엔지니어: 컴퓨터 간에 정보가 빠르고 안정적으로 연결될 수 있도록 시스템을 구성한다. 또한, 네트워크 장애를 해결하고 외부 침입(해킹)으로부터 보안 방화벽을 설치한다.

(3) 프로그램 매니저: 팀을 조직하고 예산 결정을 내리고, 장기적인 목표를 설정하는 등 전체 프로젝트가 문제없이 진행되도록 조율하는 직업이다. 

(4) 프로젝트 관리자: 장기적인 목표를 세부적인 업무 목록으로 바꾸어 정교한 작업별 시간표로 체계화한다. 업무 할당, 진척 상황 점검, 지출통계 등을 완료하는 데 필요한 시간을 예측한 후 불가피한 일이 발생할 경우 이를 해결한다. 컴퓨터 관련 학과를 전공한 사람도 있지만 대체로 업계에서 경험이 풍부한 사람이 맡는다.

(5) 사업 분석가: 프로그램을 만드는 개발자와 프로그램을 잘 모르는 고객 사이의 의사소통을 맡는다. 업체의 요구를 세부적으로 파악하여 프로그램 개발자에게 전달하여 업체가 원하는 프로그램을 개발하게 한다. 

(6) 품질 보증 전문가: 프로그램 버그를 찾는다. 생각할 수 있는 모든 경우의 실수와 잘못된 결정을 시도하면서 소프트웨어가 고장 난 원인을 찾는다.

(7) UX(User Experience) 디자이너: 온라인 게임의 등록 절차를 설계하는 것부터 드롭다운 메뉴(주메뉴를 클릭하면 포함된 하위 메뉴가 아래로 나란히 펼쳐지는 표시 방식)에서 정보를 쉽게 찾는 것까지 모든 것이 포함된다. 예를 들자면 "이 파일을 영구 삭제하시겠습니까?"라는 단계를 추가적으로 클릭하게 함으로써 사용자가 실수로 파일을 지우는 것을 방지해 준다.

(8) UI(User Interface) 디자이너: 사용자의 눈에 보이는 프로그램에 초점을 맞춰 일관된 모양과 느낌의 멋진 화면을 만들어 낸다. 사용자가 클릭하는 버튼을 설계하고 설계된 버튼의 크기, 색상, 배치를 통해 사용자에게 보다 편안한 선택을 제공한다. UX와 UI 디자이너는 심리학, 컴퓨터 공학, 시각 디자인을 공부한 사람이 많다.

(9) 그래픽 디자이너: 이미지와 아이콘을 만들고, 색상과 페이지 레이아웃을 디자인한다. 종종 UX 및 UI 디자이너의 작업과 겹치기에 프로젝트에 따라 같은 사람이 두 역할을 모두 맡는 경우도 있다.

(10) 기술 작가: 사용설명서, 도움말, 자주 묻는 질문페이지 등을 만든다.

(11) 기술 트레이너: 사용자가 프로그램 및 앱의 전문가가 되도록 돕는다. 기술 작가와 트레이너는 사교성과 의사소통이 중요하기 때문에 대개 프로그래밍을 공부한 사람이 아닌 경우가 많다. 

(12) 기술 지원 담당자: 고객 불만 전화, 이메일, 온라인 대화를 통해 사용자가 소프트웨어를 이해하도록 돕는 역할을 한다.

 

 

반응형

'IT' 카테고리의 다른 글

심리학과 소프트웨어  (0) 2023.03.01
알고리즘(Algorithm) 설계와 활용  (0) 2023.02.26
프로그래밍 언어  (0) 2023.02.14
코딩(Coding)과 버그(Bug)  (0) 2023.02.10
메타버스 [META VERSE]  (1) 2023.01.16