Search

반응형

'programmer'에 해당되는 글 2건

  1. 2024.03.17 개발자(프로그래머)와 코더(coder)는 어떻게 다른가?
  2. 2019.06.01 [Java_Tutorial]1강-시작하기 [HelloWorld, 자바 프로그래밍 기초, 자바 튜토리얼]
반응형

안녕하세요. 신기한 연구소입니다.

최근 인공지능(AI)이 발달하면서 chatGPT에서 소스도 만들어 준다는 글을 읽었습니다.

그와 동시에 코더의 자리도 AI에게 빼앗길 수 있다. 프로그래머(개발자)도 인공지능이 대체해서 사라질 수 있는 직종이라는 얘기도 같이 들리더군요.

 

프로그래머(개발자)로서 그런 이슈를 보고 잠시 생각을 해봤습니다. 정말 나의 직업은 사라지는 것일까?

그전에 구분지어야 할 직업이 있습니다. 바로 개발자(프로그래머)와 코더(coder)입니다.

대부분 같은 거 아닌가?라는 생각을 하실 겁니다. 엄밀히 말하면 다릅니다.

프로그래밍 언어를 사용해서 사용자의 니즈(needs), 요구, 를 분석하고 해결해 주는 직업이 프로그래머(개발자)라고 생각합니다. 반면 코더(coder)는 정해진 규칙대로 또는 명세서대로 프로그래밍 문법에 맞게 코딩을 하는 직업입니다. 

어떤 부분이 다른지 더 쉽게 실전 프로젝트를 기반으로 설명해 보겠습니다.

프로젝트에 투입되어서 개발을 하다 보면 크게 2가지 타입의 코딩하는 사람을 볼 수 있습니다.

고객과 협의도 하고 협력사와 인터페이스를 정의하고 다양한 기능들을 어느 곳에 적용하고 공통화 및 추상화를 할지 고민하고 개발하는 프로그래머(개발자)가 있습니다. 보통 실력자라고 합니다. 개발 PL 또는 공통단 업무를 개발하는 능력자입니다.

공통화와 모듈화를 해서 표준을 만들고 각 화면마다 또는 소스마다 어떻게 개발해야 하는지 구조와 샘플링 작업을 해주고 나면 그 패턴대로 찍어내듯 코딩하는 코더(coder)가 있습니다.

코더는 보통 PL 또는 공통 리더 개발자의 지시대로 표준화된 환경에서 반복적 작업을 합니다.

조회하는 화면에서 조건에 값을 꺼내고 버튼에 이벤트를 붙이고 결과를 받아서 화면에 뿌리는 작업, 회원가입 같은 다양한 값을 화면에 입력받아서 서버에 전달하는 작업 등이 프런트엔드에서 코더가 하는 역할이라 할 수 있습니다. 

화면단에서 값이 넘어오면 컨트롤러와 서비스단을 통해 구현부에서 적절한 SQL을 호출하도록 연결하거나 값 검증 기능을 붙여서 입력 또는 출력 시 활용할 수 있도록 코딩하는 코더도 있습니다.

전체적으로 공통화하거나 큰 흐름을 모르더라도 작업할 파트(부분)만 기능적으로 샘플을 따라서 잘 적용하고 작동하게만 하면 됩니다. 

이런 역할로 인해 코더는 AI(인공지능)으로 대체가 가능하다는 의견이 있다고 봅니다. 하지만 프로그래머처럼 고객과 협의를 하고 결과를 도출한 뒤 시스템에 어떻게 적용할지 표준과 공통을 정리하고 코더가 작업할 수 있는 프레임을 만들어주는 것은 사람만이 할 수 있는 일이라고 봅니다. 그리고 실제 화면 또는 서비스에 대한 표준화된 코딩은 AI(인공지능)에게 만들어 달라고 할 수 있겠지요.

사실 프로그래머(개발자)가 처음부터 난이도 있는 업무를 할 수 없습니다. 처음에는 당연히 리더의 계획에 따라 코더로 시작해야 합니다. 그리고 꾸준한 학습(공부)을 통해 본인의 개발 능력을 향상하고 다양한 프로젝트와 경험 많은 리더에게 현장에서 필요한 노하우를 습득하고 익히는 것도 중요합니다. 프로그래머가 쉽게 되는 직업이 아니라는 의미입니다.

구인 사이트를 보면 초급, 중급, 고급에 자바, 리액트 등등을 언급하면서 프로젝트 인력을 구합니다. 코로나 시즌에 갑작스러운 개발 수요가 높아서 등급별 인건비도 오르면서 억대 연봉 이야기가 여기저기 들리기도 했고 인력 수급에도 어려움을 겪었습니다. 하지만 지금은 프로젝트도 별로 없고 그로 인해 인건비도 내려가고 권고사직을 하는 회사들도 종종 보이기도 합니다. 특히 개발자 포털이나 구직 사이트 보면 몇 개월 동안 일이 없다는 이야기가 많이 들려옵니다.

사실 여기서 한 가지 생각할 부분이 있습니다. 진정 프로그래머의 수요는 항상 있습니다. 그리고 유행 따라 주가처럼 오르락내리락하는 인건비와 구인에 대한 상황에 휘둘리는 직업은 코더입니다. 

경력이 10년이 넘은 프리랜서 몇 명을 만난 적이 있습니다. 같이 프로젝트를 하는데 PM 인맥으로 뽑았더군요. 개발을 정말 잘한다고 하더군요. 그러던 어느 날 내가 공통으로 만들어준 프로그램을 호출하는데 오류가 났는데 도와달라고 하더군요. 가서 기본적인 디버깅을 하고 오류를 체크해서 알려줬는데 그런 작업을 할 줄 모르더군요. 일 잘하는 개발자들이라 하는데 오류 디버깅도 못하는 것을 보고 잠깐 당황했습니다. 고급 등급이었거든요. 그래서 좀 지켜보니 등급만 높은 코더였습니다. 고급인데도 주체적으로 진행하지 못하더군요.

프로젝트에서 초급 개발자들을 만나면 항상 이런 이야기를 합니다. 우리의 업은 꾸준히 공부하고 연습해야 직급이나 등급이 올라가서 자기 역할을 잘할 수 있다고.

지금 내 옆에 있는 사원 개발자는 개발자가 되고 싶다면서 하루 종일 놉니다. 퇴근하고도 논답니다. ^^

자기 인생은 본인이 책임지는 것이기에 그러려니 하고 있습니다.

성공하는 길은 어찌 보면 어렵지 않습니다. 많은 사람들은 현실에 적응만 하고 미래를 위한 학습은 하지 않습니다. 또한 학습은 하지만 잘못된 학습(성장과 성공에 필요 없는)으로 시간만 낭비하는 경우도 있습니다.

정확한 목표를 세우고 프로의식과 목적을 가지고 꾸준히 학습한다면 성공은 따라올 수밖에 없습니다.

이제 코더(coder)로 돈 벌고 등급 높은 코더(coder)가 되지 말고 꾸준한 학습을 통해 프로그래머(개발자)로 성장해서 멋진 직업인이 되었으면 합니다.

이 포스팅이 끝나면 리액트 학습을 시작합니다.

학습이 끝나면 리액트를 처음 하는 친구들을 위한 포스팅도 준비하고 있습니다.

우리 모두 멋진 프로그래머가 됩시다.

반응형
반응형

[OracleJava Tutorial을 읽고 순서에 의해 정리한 후 본인의 경험과 이해를 바탕으로 작성된 글임을 밝힌다.]

[Java Tutorial, 자바 프로그래밍 기초 배우기, Java Programming, 자바 튜토리얼]

자바(Java)를 접 한지 벌써 20년이 되었다. 실전에서 사용한 건 15년이 돼간다.나의 첫 자바 프로젝트는 2004S*사의 모 사이트였다. EJB 환경에 JSP로 구현된 웹사이트였는데 지금 생각하면 부족함이 많았었다. 특히 델파이나 파워빌더 또는 비주얼 베이직으로 프로젝트를 했던 나에게 웹이란 생소했고 환경을 이해하고 코딩을 하기 전까지 많은 어려움이 있었다. 그래도 끝까지 포기하지 않고 이제는 자바 개발자라는 신념을 가지고 열심히 노력해서 지금까지 개발자로서 잘 지내고 있다.

많은 자바 프로젝트를 하면서 느낀 점이 있다면 많은 개발자들이 자바의 여러 기능의 개념을 잘 모르고 선 개발자들이 만든 소스를 그대로 복사해서 그대로 사용하거나 약간 수정해서 사용하는 경우가 많다는 걸 알았다. 그래서 조금이라도 문제가 발생하면 해결하는데 고생하는 걸 봐왔다. 기본 원리를 잘 이해하고 사용하면 편리하면서 강력한 프로그래밍을 할 수 있게 된다. 물론 선 개발자들이 만든 소스를 활용하는게 나쁘다는 건 아니다. 잘 짜여진 코드를 이해하고 상황에 맞게 사용하면 시간도 절약되고 선 개발자들의 노하우도 익히게 되어 장점이 많다. 하지만 그냥 내용도 잘 모르고 나쁜 코드임을 인식 못하고 사용하는 경우도 있기에 이런 상황이 나중에 큰 문제를 일으킬 수 있다는 걸 알아야 한다.

 

 

지금부터 기본 개념을 잘 익혀서 프로젝트에서 능력을 발휘하길 바란다. 이 블로그에서 게시할 자바 튜토리얼은 오라클의 자바 튜토리얼에 나의 경험을 덧 붙여 설명을 할 것이다. 자바 프로그램을 처음 접하거나 이미 접했지만 초급이라 좀 더 강한 기초를 필요로 하는 초급 개발자에게 도움이 되길 바라며 게시를 해 본다.

많은 도움이 되길 바라며~

자바 튜토리얼 (자바 튜토리얼Java Tutorial )

자바 프로그래밍 기초 배우기 (Java Programming, )

 

  1. 시작하기

간단한 역사를 보면 자바는 선 마이크로시스템즈의 제임스 고슬링이 개발한 객체지향 언어이다. 20094월 선 마이크로시스템즈가 오라클에 인수 합병되면서 자바의 권리와 유지보수는 오라클로 넘어갔다.

자바 기술(Java Technology)는 프로그래밍 언어와 플랫폼을 의미한다.

자바 프로그래밍 언어는 고차원 언어로 다음과 같이 요약할 수 있다.

간단하다, 객체지향. 분산, 멀티쓰레드, 다이나믹, 보안, 높은 성능, 견고함, 이식성, 아키텍처 중립성.

이런 많은 능력을 가진 자바 프로그래밍 언어는 여러분이 개발하는데 즐거움을 줄 것이다. 위의 자바 특징은 앞으로 자바 프로그래밍을 익히다 보면 알게 될 것이다.

자바를 프로그래밍 한다는 것은 자바 언어로 명령어를 이용해서 프로그램을 만든다는 것이다. 그 방식을 설명해 보겠다.

우선, .java 확장자를 가진 텍스트 파일을 만들어야 한다. 물론 자바 언어 규칙에 맞게 만들어야 한다. 이 소스 파일은 javac 라는 명령어를 통해 컴파일되면서. class확장자를 가진 파일로 바뀐다. 이 파일은 우리는 이해할 수 없는 컴퓨터용 언어인 바이트코드(bytecodes)로 변형된다. 이 바이트코드는 자바 가상 머신(Java Virtual Machine, JVM)가 읽을 수 있는 언어이다. JVM을 이용한 자바 런처가 여러분이 작성한 프로그램을 실행한다.

JVM의 능력은 대단하다. 어느 운영체제에서 개발했더라도 다양한 운영체제(윈도우즈 , 유닉스, 리눅스 등등)에서 이 JVM만 있다면 실행이 가능하기 때문이다. 이 부분이 자바의 강점 중 하나이다. 운영체제라는 환경의 영향을 받지 않는다는 의미이다.

자바 플랫폼에 대해 알아본다. 플랫폼은 프로그램이 작동하는 하드웨어나 소프트웨어 환경을 의미한다. Microsoft Windows, Linux, Unix, Mac OS 같은 운영체제도 바로 플랫폼이 된다. 이 환경에서 우리가 만든 프로그램이 작동되는 것이다.

자바의 플랫폼은 다음과 같다.

  1. JVM (자바 가상 머신)

  2. API (자바 응용 프로그래밍 인터페이스, API)

JVM은 이미 설명을 했고 API는 무엇일까?

API는 미리 만들어 둔 컴포넌트의 모음이다. 이 컴포넌트를 활용해서 자바 프로그램을 쉽게 사용할 수 있는 것이다. 유용한 API는 계속 개발되고 버전이 올라가게 된다.

그러면 자바 기술(JAVA Technology)로 할 수 있는 것은 무엇이 있을까?

우선 개발 툴은 여러분이 개발하는 데 있어 필요한 모든 것을 제공한다. 컴파일, 실행, 모이터링, 디버깅, 그리고 여러분의 개발에 대한 문서를 만드는 기능까지 제공한다. Javac 컴파일러, java 실행, Javadoc 문서툴까지 말이다.

다음으로 API이다. 자바 프로그램에 필요한 핵심 함수들을 제공한다. 유용한 클래스들과 기초 객체, 네트워크, 보안, XLM 활용, 데이터 베이스 접속 등등 말이다. 이 핵심 API는 방대하다. 해당 API 목록과 사용법은 문서로 제공된다.

기타 여러가지 기술이나 툴킷을 제공하지만 기본은 우선 기초적인 부분만 알고 넘어간다.

자바의 기본 개념과 특징에 간략하게 알아보았고 이제 직접 코딩을 해보겠다. 프로그램은 눈으로 봐서도 안되고 상상으로 코딩해도 안된다. 직접 키보드를 두들겨서 프로그램(코딩)을 짜 보고 실행해 보고 오류 발생 시 원인을 찾아 수정도 해봐야 실력이 는다. 골프 선수가 동영상만 본다고 해서 절대 실력이 늘지 않는다. 직접 휘둘러 봐야 한다. 것도 수많은 반복적 훈련이 필요하다. 여러분도 능력 있는 프로그래머가 되고 싶다면 지금 당장 키보드를 두들겨 가며 직접 프로그램(코딩)을 짜고 또 짜면 된다.

이 글을 읽는 여러분은 대부분 windows 환경이라고 생각한다. 간혹 UnixLinux 환경도 있겠지만 어짜피 프로그래밍 언어는 같다. 이 글은 MicroSoft Windows 10 환경을 기반으로 작성되었다.

우선 자바 프로그램을 작성하기 앞서 JDK 8과 이클립스가 필요하다. 툴은 다른 것을 써도 된다. 보통 이클립스를 많이 사용하므로 이클립스/콘솔 환경을 겸해서 설명을 하겠다.

그럼 프로그램을 어떻게 짜야하는가?

  1. .java 확장자를 가지는 소스 파일을 만든다.

  2. Javac 로 컴파일 해서 .class 파일을 만든다.

  3. java로 실행한다.

그럼 프로그램을 시작할 때 단골로 등장하는 HelloWorld! 프로그램을 만들어 본다.

이미지로 넣는 이유는 복사해서 사용하지 말고 직접 코딩해 보라는 의미이다. 꼭 직접 코딩을 하기 바란다.

해당 프로그램을 작성하고 HelloWorld.java로 저장한다. 주의할 점은 클래스명과 파일명은 같아야 한다. (HelloWorld.java == class HelloWorld)

Javac HelloWorld.java 로 컴파일을 하면 빈칸 하나 나오고 넘어간다. 오류가 없다는 뜻이다.

그럼 실행을 해보겠다.

Java HelloWorld 로 실행을 하면 HelloWorld!가 표출됨을 확인할 수 있다. 첫번째 프로그램은 성공적으로 실행되었다.혹시 오류가 나면 댓글로 문의 바람)

 

계속~

2019/06/03 - [Software/Java] - [Java_Tutorial]자바 프로그래밍 기초 배우기 (JDK8, Java Programming, 자바 튜토리얼) 2강

 

[Java_Tutorial]자바 프로그래밍 기초 배우기 (JDK8, Java Programming, 자바 튜토리얼) 2강

[Oracle의 Java Tutorial을 읽고 순서에 의해 정리한 후 본인의 경험과 이해를 바탕으로 작성된 글임을 밝힌다.] 2019/06/01 - [Software/Java] - [Java_Tutorial]자바 프로그래밍 기초 배우기 (JDK8, Java Progra..

tiboy.tistory.com

 

반응형