개인회원 메뉴

개인회원 정보

이력서 사진
이력서 사진 없음
로그인 링크
로그인
회원가입 링크
아직 회원이 아니세요?

개인회원 서비스

JOBKOREA

직무인터뷰

직무인터뷰 상세

시스템개발

(주)한드림넷

한드림넷, 전문성이 요구되는 소스코드 창작자

소속
기술연구소
등록일자
2015.05.08
조회수
17,026

최근 BBC는 네델란드 신문 NRC를 인용해 불법 정보 수집 의혹을 받는 미국 국가안보국(NSA)이 세계 네트워크에 다량의 악성코드(악의적인 목적을 위해 작성된 실행 가능한 코드의 통칭으로 자기 복제 능력과 감염 대상 유무에 따라 바이러스, 웜, 트로이목마 등으로 분류된다. 출처: 두산백과)를 심어 놓았다고 보도했다. 이처럼 네트워크 범죄가 급증함에 따라 개인 또는 회사의 정보 보안에 대한 인식이 날로 높아지고 있다. 잡코리아 좋은 일 연구소에서는 네트워크 보안 장비 개발 업체 한드림넷의 기술연구소에 근무하는 한상은 주임연구원을 만나 보안 분야의 `소프트웨어 개발자` 직업에 대해 알아보았다.

 

 



현재 네트워크 장비에 삽입되는 소프트웨어 개발을 하고 있다. 소프트웨어 개발자는 어떤 일을 하는지 설명해 달라.

소프트웨어 개발자는 컴퓨터나 장비에 들어가는 소프트웨어를 연구하고 개발, 설계하는 일을 담당한다. 또 경쟁업체의 제품 및 기술변화 등을 분석하여 새로운 기능을 갖춘 소프트웨어를 기획하고 개발한다. 또 개발된 소프트웨어는 시험 운영을 통해 기능과 성능을 평가한다. 하지만 소프트웨어 개발자도 분야에 따라 일이 조금씩 다르다. 네트워크 보안장비의 개발 분야는 하드웨어, 장비, 펌웨어, 관제시스템 등이 존재한다. 이 중에서 현재 장비 펌웨어에 관련된 소프트웨어를 개발하고 있다.

 

소프트웨어 개발 업무는 어떻게 진행되나.

소프트웨어 개발 업무는 제품 단위로 업무가 이루어진다. 개발할 분야가 정해지면, 필수기능과 고유기능 등 항목을 나열한다. 회사가 이미 보유하고 있는 기술이라면, 새 하드웨어 플랫폼에 동작하도록 포팅(컴퓨터 과학에서 실행 가능한 프로그램이 원래 설계된 바와 다른 컴퓨팅 환경(이를테면, CPU, 운영 체제, 서드 파티 라이브러리 등)에서 동작할 수 있도록 하는 과정. 출처: 위키백과)작업을 한다. 반면, 새롭게 개발해야 하는 기술은 설계 과정을 거쳐 기능을 구현하게 된다. 이 과정에서 소스코드를 만들고, 업무과정을 문서화하는 것도 개발자의 일이다. 이렇게 장비에 포함되는 모든 기능이 개발된 후, QA팀의 검증과정을 거쳐 제품을 출시한다.

 

프트웨어 개발자의 업무는 팀 단위로 진행되나?

팀 작업보다 개인적으로 하는 일이 많은 편이다. 업무는 매주 한 번씩 팀 회의를 통해 결정한다. 회의에서는 개별적으로 진행한 업무 혹은 신제품에 추가될 수 있는 아이디어를 논의한다. 새로운 업무를 팀원들에게 배정하고, 업무 종료 시점을 상의한다. 이렇게 각자 업무를 배분하고, 종료시점을 조율하면, 본격적으로 일이 시작된다.

 

취업 전 예상하던 모습에 비해, 실제 일하면서 가장 달랐던 점은 무엇인가?

완벽한 개발에 대한 부담이 현업에서 일하기 전, 미처 예상하지 못한 부분이다. 현업에서 소프트웨어 개발은 업무가 완료되면, 제품을 바로 시장에 출시한다. 이 제품은 고객사의 보안장비로 사용되기 때문에 오류가 발생하지 않도록 완벽하게 구현해야 한다. 이 과정에서 고객의 요구사항을 모두 충족시켜야 한다는 점도 예상치 못한 어려움 중 하나다.

 

다른 힘든 점은 없나?

소프트웨어 개발에 주어지는 시간이 촉박할 때 가장 힘들다. 이처럼 충분한 검증을 거치기 어려울 때는 오류가 발생할 확률이 높아진다. 평소 개발에 충분한 시간이 주어지면, 자체적으로 검수하기 위해 문서로 개발과정을 만든다. 하지만 시간이 촉박할 때는 이 과정을 제대로 진행할 수 없다. 또 이런 이유로 문제가 발생했을 때는 결과물에 대한 책임을 다하지 못했다는 생각에 구매자에게 죄송한 마음도 들기 때문에 이런 오류가 없도록 개발 시점부터 작은 부분도 계속 확인하고 있다.

 

실수가 용납되지 않는 일인 것 같다. 개인의 실수를 사전에 차단하기 위해 거치는 과정이 있는지 궁금하다.

소프트웨어 개발 업무는 개인이 한 부분씩 맡아서 진행하는 경우가 대부분이이기 때문에 오류가 발생할 여지가 많다. 따라서 이를 예방하기 위해 여러 번의 검수과정을 거친다. 먼저 개발자들은 다른 개발자가 수정한 소스코드를 재확인한다. 이후, QA팀에서 테스트 시나리오를 바탕으로 테스트를 거친다. 이 과정에서 발견되는 문제들을 수정하고, 최종 테스트를 진행한다. 이 과정이 완료되면, 상품을 출시한다.

 

완벽을 추구하는 일일수록 작업자는 큰 스트레스를 겪는다. 일이 잘 안 풀릴 때 대처하는 노하우가 있나?

소프트웨어 개발은 에러를 수정하는 것부터 시작한다고 해도 과언이 아니다. 따라서 오류사항을 검토하기 위해서 업무내용을 문서화하고 있다. 그러나 이런 노력에도 불구하고, 간단한 오류를 찾지 못하는 경우도 간혹 생긴다. 일례로 오류발생 이유인 소스 2글자를 찾지 못해 3일을 고민했던 적이 있다. 하지만 에러가 심각할 경우, 처음부터 다시 프로그래밍을 해야 한다. 이 경우에는 퇴근하고 휴식을 취하는 것도 한 가지 방법이라고 할 수 있다. 한참을 고민하던 부분이 다음날 다시 보면 쉽게 보일 수도 있기 때문이다.

 

취업에 대한 이야기를 나눠보자. 언제 소프트웨어 개발자가 되기로 결심했나?

어렸을 때부터 관심을 갖고 있었고, 고등학교 시절 참여했던 컴퓨터 관련 동아리와 프로그래밍 관련 커뮤니티의 영향이 컸다. 특히 고등학교 동아리에서 경험한 컴퓨터 프로그래밍은 진로 결정의 큰 계기가 되었다. 당시 내가 무엇인가 만들어 낼 수 있고, 그것을 사용하는 사람들에게 도움을 줄 수 있다는 생각은 소프트웨어 개발자에 대한 확신을 갖게 했다. 이후 대학에서는 임베디드(어떤 제품이나 솔루션에 추가로 탑재되어 그 제품 안에서 특정한 작업을 수행하도록 하는 솔루션을 말한다. 출처 : 두산백과)와 리눅스(1991년 11월에 리누스 토르발즈(Linus Torvalds)가 버전 0.02를 공개한 유닉스 기반 개인컴퓨터용 공개 운영체제이다. 유닉스와 거의 유사한 환경을 제공하면서 무료라는 장점 때문에 프로그램 개발자 및 학교 등을 중심으로 급속히 사용이 확대되고 있다. 출처: 두산백과)에 관심이 많아 집중적으로 공부했다.

 

소프트웨어 개발의 대표적인 분야들은 어떤 것이 있는가?

소프트웨어 개발에도 여러 분야가 존재한다. 대표적으로 윈도우 어플리케이션, 모바일 어플리케이션, 웹 시스템 등이 있다.

 

이렇게 여러 분야로 취업할 수 있다면, 소프트웨어 개발 분야에 취업하려는 사람들은 고민이 많을 것 같다.

소프트웨어 개발에도 여러 분야가 존재하기 때문에 취업할 분야를 빠르게 결정하는 것이 좋다. 대학원 진학이 목표가 아니라면, 늦어도 3학년 때부터 목표한 분야에 대해 공부하고 준비하는 것이 좋다. 이 시기에는 학교 수업에 집중하는 것이 필요하다. 원서를 통해 공부하는 경우가 많으므로, 영어로 된 원서를 읽을 수 있을 정도로 영어실력도 쌓아야 한다. 취업을 위해 가장 중요한 것은 소프트웨어 프로그래밍 경험을 하는 것이다. 오픈소스 프로젝트에 참여하는 것도 경험을 쌓는 데 큰 도움이 될 수 있다. 오픈소스 프로젝트는 국내보다 해외 사이트에서 많이 운영한다. 국내에는 NHN의 오픈소스 프로젝트가 있다.

 

주로 참고하는 사이트는 무엇이 있는가?

리눅스 개발자들이 많이 이용하는 KLDP(Korea Linux Document Project, http://kldp.org/)라는 국내 사이트를 주로 참고한다. 문서번역 사이트로 시작했지만, 지금은 커뮤니티로 변화되었다.

 

컴퓨터 언어에도 여러 분야가 있는 것으로 알고 있다. 소프트웨어 개발에서 쓰이는 언어는 무엇이 있는가?

시스템 개발 분야는 C언어(벨 연구소에서 1971년에 리치(D.M.Ritchie) 등에 의해 개발된 시스템 프로그래밍 언어이다. 프로그램을 간결하게 쓸 수 있고, 프로그래밍하기 쉬운 편리한 언어이다. 출처: 두산백과) 혹은 C++(C 언어의 확장판으로 만들어진 객체지향형 프로그래밍 언어이다. 대규모 응용프로그램을 만드는 데 최적의 프로그래밍 언어로 간주되고 있다. 출처: 두산백과) 정도가 가장 많이 쓰이고 있다.

 

그렇다면, C 언어를 잘 배울 수 있는 방법을 추천해달라.

C언어는 프로그램개발에서 기본이 되는 언어이다. 따라서 가장 먼저 마스터한다면, 다른 언어를 배우기 수월해진다. 이 C언어를 배우기 위해서는 프로젝트를 수행해보면서 실력을 늘리는 방법을 추천한다.

 

소프트웨어 개발자가 되기 위해 필요한 자격증이 있나?

현업에서는 자격증보다 실력과 성실감을 더 중요하게 평가한다. 자격증보다 더 높은 수준을 요구하는 경우가 많기 때문이다. 예를 들어, 기술지원 업무에서는 CCNA, CCNP(해외 네트워크 전문회사에서 자사 제품의 전문기술자를 양성하기 위하여 시행하는 자격증은 국제적으로 권위가 인정되고 통용되는 국제공인자격 네트워크 장비업체인 시스코시스템즈사의 CCIE, CCNA, CCNP, CCDP, CCDA, 휴렛팩커드의 OVP-NWM 등이 있다. 출처: 두산백과)와 같은 네트워크 자격이 도움이 될 수 있다. 하지만 소프트웨어 개발자는 네트워크를 전체적으로 잘 다루는 능력보다 특정 분야의 내부 동작 매커니즘을 잘 분석하고, 개발업무를 수행해야 한다. 이러한 이유로 자격증은 중요한 평가 대상이 아니다.

 

그렇다면, 대학에서 배우는 과정을 통해 현업에서 무리 없이 일할 수 있는가?

대학에서 충실하게 전공 공부를 했다면, 현업에서 일할 수 있다. 하지만 기본 학교 교육 이외에 동아리 활동 혹은 교수님과 같이 프로젝트를 진행해볼 것을 권한다. 또 사회에서 컴퓨터 관련 경험을 해보는 것도 좋은 방법이다.

 

채용에서는 어떤 것을 중요하게 평가하는가?

구직자가 경험한 프로젝트들과 실력을 중요하게 평가하고 있다. 한드림넷에 신입사원으로 입사해 올해 6년째 해를 보내고 있다. 다른 회사들의 경우는 잘 모르나, 한드림넷은 지원자의 스펙보다 실력 위주로 선발한다. 따라서 면접이 무엇보다 중요하다. 한 명의 지원자의 면접이 한 시간 이상 진행되는 것은 이곳에서는 일반적이다 면접에서 실력을 평가하기 위해 주로 ‘무엇을 해 보았는가?’라는 질문을 하는 편이다. 지원자가 질문에 답하면, 다시 질문을 하는 방식으로 심층면접을 진행한다. 지원자의 입장에서도 면접은 지원기업에 대해 실무자의 입을 통해 정보를 구할 수 있는 최적의 자리이다. 최대한 많이 질문하고, 취업하고 싶은 곳인지 알아가야 한다.

 



구직자에게는 회사가 어떤 프로그램을 기반으로 일하는지도 중요할 것 같다.

프로그램을 잘 활용할 수 있는 능력이 소프트웨어 개발자의 핵심이다. 이 때문에 구직자는 지원하는 회사가 어떤 프로그램을 기반으로 일하는지를 파악하는 것이 중요하다. 그러나 구직자는 지원한 회사가 어떤 프로그램을 기반으로 일하는지 모르는 경우가 대부분이다. 따라서 지원자는 면접 시 회사업무에 대한 궁금증을 자세하게 물어보는 것이 좋다. 가끔 면접을 보면, 신입 구직자임에도 불구하고 회사에 대한 궁금증을 상세히 물어보는 경우가 있다. 일반적으로 이런 지원자들이 좋은 결과가 나오는 편이다.

 

소프트웨어 개발자에게는 어떤 역량이 필요한가?

소프트웨어 개발에 대한 열정과 배우려는 마음가짐, 그리고 팀원들과의 커뮤니케이션 능력이 요구된다. 팀원들과의 커뮤니케이션 능력이 요구되는 이유는 소프트웨어 개발 일이 결국 팀 작업이기 때문이다. 기본적으로 소프트웨어의 각 기능을 담당하는 모듈은 한 사람씩 맡아서 개발한다. 하지만 소프트웨어 개발을 완성하기 위해 모듈과 모듈을 연결 지을 때는 팀원들끼리 일을 같이 진행하기 때문이다.

 

보안 소프트웨어 개발과 관련해 대학생들이 해볼 수 있는 주제는 어떤 것이 있을지 조언해달라.

기본적으로 채팅과 같은 네트워크 프로그램 개발을 해보는 것이 좋다. 추가적으로 네트워크 공격에 따른 방어프로그램(방화벽), 암호화 프로그램 등을 주제로 프로젝트를 구상해 보는 것도 좋다.

 

대학에서 소프트웨어 개발자로 취업하고 싶은 학생들에게 조언해 달라.

프로젝트에 대한 경험을 갖길 권한다. 프로젝트의 경험이 없으면, 취업 시 능력을 검증하기 어렵기 때문이다. 프로젝트는 규모와 상관없이 자신이 좋아하는 분야에서 목표를 세우는 것이 중요하다. 또 프로젝트를 진행하고 결론에 이르는 과정을 면접에서 설명할 수 있도록 정리하는 것이 좋다. 또 ‘오픈소스 프로젝트’와 같이, 전 세계의 사람들이 조건 없이 참여하는 대외프로젝트에 참여하는 것도 좋은 방법이다. 그러나 이런 프로젝트에서 영어가 부담스럽다면, NHN 개발자 센터의 ‘오픈소스 프로젝트`(http://developer.naver.com)에 참여해 보는 것을 추천한다.


프트웨어 개발자를 꿈꾸는 대학생들에게 추천하고 싶은 책이 있는가?

리눅스나 임베디드에 관심이 많다면, O Reilly 출판사에서 나온 리눅스 책들을 권하고 싶다. 이 책들은 원서 혹은 번역서이기 때문에 처음에는 이해하기 어려울 것이다. 하지만 계속해서 읽고 참고한다면, 소프트웨어 개발에 많은 도움이 될 것이다.

 

외에서는 소프트웨어 개발자들이 고액 연봉을 받는 경우가 많다고 들었다. 국내 소프트웨어 개발자의 연봉 수준은 어떠한가?

소프트웨어 개발 분야는 능력에 따라 연봉을 인상하는 것이 일반적이다. 따라서 개인별로 차이가 심하다. 업계 초임수준은 2,000 ~ 3,000만 원 초반 정도가 일반적이다. 그리고 대기업은 3,000만 원 중반 정도로 알고 있다. 또 국내소프트웨어 개발자도 실력에 따라 억대 연봉을 받는 고액 연봉자도 다수 존재하고 있다.

 

소프트웨어 개발자는 이직이 많은지 궁금하다.

업무능력이 충분하다면, 다른 분야에 비해 보상이 확실하다. 따라서 장기적으로 한 회사에서 일하는 개발자가 많다. 더군다나 소프트웨어 개발자는 경쟁사에서 스카우트를 하는 경우가 드물다. 따라서 이직도 적은 편이다. 휴직 중 업무제의를 받는 경우도 존재하지만, 경쟁사에서 일하는 중 스카우트를 하는 것은 관례에 어긋나기 때문에 사례가 많지 않다.

 

올해로 한드림넷에서 근무한 지 6번째 해를 맡았다.

한드림넷은 지난 99년부터 사업을 시작해 꾸준히 커나가고 있다. 순수 국내기술로써 세계 최초의 네트워크 보안 스위치를 출시하여 일본, 미주 등으로 수출하고 있다. 또 현재 사용자 인증 보안, 네트워크 통합 보안, 인터넷 트래픽관리 솔루션과 통합 보안 관제 시스템을 기반으로 사업을 꾸준히 확장하고 있다. 더불어, 기본교육과정부터 배울 수 있는 2~3개월의 필수 교육과정은 한드림넷의 장점이다. 신입사원들은 이 교육을 통해 현업에서 필요로 하는 전문적이고 깊이 있는 업무지식을 배울 수 있다. 이 교육과정을 마치면, 신입사원들은 쉬운 업무에서부터 단계적으로 업무를 배정 받는다. 또한, 다른 분야보다 지금 일하는 네트워크 소프트웨어 분야에서 더 집중적으로 일해보고 싶다. 네트워크 장비에 추가되는 기능들은 그 분야가 많고 광범위하기 때문에 앞으로 할 수 있는 것들이 무궁무진하기 때문이다. 이런 장점을 살려 앞으로도 한드림넷 네트워크 소프트웨어 분야에서 더 다양한 개발을 해보는 것이 목표다.

저작권은 잡코리아(유)에 있으며, 무단전재 및 재배포를 금지 합니다.

‘시스템개발’ 다른 직무인터뷰