국내 IT 인력시장은 지난 2년동안 성장가도에 있다. 그동안 들어난 고용 통계는 흥미로운 트랜드를 보여준다: 회사는 onshore의 강력한 어플리케이션 개발자와 offshore의 초급/신입 레벨 개발자 고용을 선호한다. 게다가 고용담당자는 “올라운드“ 지식의 고용자를 찾는다. - 혼자서도 잘하고, 독립적이고, 기술적 우위를 가지고, 비즈니스 마인드 등등을 가지는 사람들 말이다.

이게 지역 개발자인 우리에게 무슨의미를 가질까? 현재 면접과정이 그 어느 때보다도 열정적(?)이라는 것을 말한다. 기술면접은 단지 전체 면접과정의 일부분에 지나지 않는다. 잘못을 하게 하지마라(?) ; 기술면접은 여전히 필수적인 요소이다. 그러나, 궁극적인 결정을 하는데 있어서 유일한 요소는 아니다. 현대 onshore 개발자는 프로그래머에 비즈니스 분석자, 디자이너, 아키텍쳐, DBA, 그리고 때때로 프로젝트 조정자가 된다. 만약 당신이 그냥 프로그래머라면 당신은 현상황을 재평가하고 발전하는 잡마켓 안에서 발전을 시작해야만 한다. 왜냐하면 당신의 일자리는 위험에 처해있기 때문이다.

만약 IT분야의 새 포지션을 찾는다면 고용담당자가 살피는 것이 무엇인지 보자.

  1. 대인기술
    면접 과정에서, 당신은 적어도 아래 리스트의 7개중 3개는 보여야 할 것이다.
    1. Self-Discipline : 작업을 선택하고, 공격적인 계획을 짜고, 그 계획을 실행할 수 있는 능력
    2. Motivational Skills : 요구되는 목표로 전진하기 위해 다른이들을 자극할 수 있는 능력
    3. Organizational Skills : 시간제약적인 환경에서의 효과적인 자원 관리 능력
    4. Communication Skills : 발료, 작문, 듣기 기술을 사용해서 다른 이들과 효과적인 의사소통 능력
    5. Strategic Skills : 어떤 포지션을 개선하기 위해 (조직의) 시스템적으로 집중과 노출의 방법론적 적용 능력
    6. Conflict Resolution : 어떻게 그룹 환경의 충돌(?)을 다루고 해결하는 능력
    7. Assertiveness : 자신을 리더와 권위있는 사람으로서 차별화하는 능력

    위의 어떤 징후도 가지고 있지 못하고 생각든다면 그 것들을 얻기 위한 계획을 짜야만 한다. 이런 기법들을 얻을 수 있는 수많은 책들이 있으니 부디 다음 책들을 생각해보길 바란다.

    • Cairo, Jim. 2004. Motivation and Goal-Setting - How to Set and Achieve Goals and Inspire Others. New York: Career Press.
    • Chandler, Steve and Richardson, Scott. 2005. 100 Ways to Motivate Others. New Jersey: The Career Press.
    • Steven W. Flannes and Ginger Levin. 2005. Essential People Skills for Project Managers. New York: Management Concepts.
    • Gregg Lee Carter. 1994. How to Manage Conflict in the Organization. New York: AMACOM.
    • Stewart Levine. 2002. The Book of Agreement: 10 Essential Elements for Getting the Results You Want. New York: Berrett-Koehler Publishers.

    추가로, 면접할 동안 위의 기법들로 네 강점(?)을 보여주기 위해 이전 직장(?) 경험에 대해 논의할 준비가 되어 있어야 한다.

  2. 기본기
  3. 면접을 진행할 때 , 나는 항상 몇가지 기본적인 질문을 한다. 도대체 내가 왜 그렇게 하는 것일까? 지원자들이 그들의 “의무-근면“(?)을 잘 해왔었는제 확인해보고 싶어서이다. 그들이 준비를 해왓는지 알고 싶은 것이다. 예를들면, 나는 선임 자바 개발자에게는 다음과 연관있는 쉬운 질문들을 묻는다.

    • 참조형 변수와 기본형 변수는 무엇인가?
    • 자바에서 어떻게 상수를 구현하는가?
    • 표현식이란 무엇인가?
    • 자바의 연산자 10개를 대라.

    이 질문들에 대답할 준비가 항상되어 있어야 한다. 기억해라, 네 면접관은 단지 네가 스스로 선입 개발자 말했다고 곧이 곧대로 믿지는 않는다; 증명을 해보여야 한다.

  • 심화 주제들
  • 만약 선입 어플리케이션 개발자 라면 당신은 프로그래밍 언어의 심화 주제에 대해 논할 준비를 해야한다. 다음 리스트는 자바 개발자를 대상으로 한 심화 주제들을 강조하고 있다. ( 자바 개발자가 아니라면 다음으로 넘어가라)

    1. OO Design Pattern : 어플리케이션 개발자라면 적어도 5개의 “디자인 패턴“에 대해 알아야 한다. 선입 개발자라면 경력에서 많은 디자인 패턴들을 깊은 인상을 가져야 한다. 그러나 어떻게 각각의 패턴이 동작하고 그이익이 다른 패턴 들과 다른지 효율적으로 설명할 방법은 몰라도 되겠다. 면접 전에 읽을 만한 몇가지 읽을 거리를 추천해주겟다. 시작은 여기가 좋다: http://en.wikipedia.org/wiki/Design_patterns.

    2. UML: 정형 모델 언어이 비지니스 분석가들, 소프트웨어 개발자들, 아키텍쳐들, UI 디자이너들 , 데이타 베이스 전문가들, 테스터들, 그리고 프로젝트 매니저들을 위한 필수 기술이 된지 오래다. UML은 스펙, 시각화, 구축 그리고 소프트웨어 시스템의 산출물 문서화를 위한 표준화된 언어로쏘 사용된다. UML은 비지니스 모델링과 다른 비 소프트웨어 시스템을 위해 사용되기도 한다. 다음과 같 선입 자바 개발자가 만들지 알아야할 다이어그램이 적어도 3개는 있다.

    * 유스케이스 다이어그램: 어플리케이션 사용자와 어플리케이션 기능들과의 상호작용을 보여준다.

    * 시퀀스 다이어그램: 상호작용을 일으키는 객체들 사이의 일렬의 순서를 묘사한다.

    * 클래스 다이어그램: 클래스와 인터페이스간의 관계와 협업의 정적 상태를 보여준다.

    3. 프레임워크: 요즘 대부분의 어플리케이션 개발직은 여러개의 프레임워크에 대한 지식을 요구한다. 예를 들어 자바 개발자에게는 적어도 몇 개의 데이타 퍼시스턴스 프레임워크 (JDBC와 SQL, 엔티티 빈즈, 자바 데이타 객체(JDO) , 스프링, 그리고 Top Link 나 CocoBase, Hibernate), 비지니스 로직 프레임워크( EJB들, EC2J 같은 것들), 캐시 프레임워크, 테스팅 프레임워크, 그리고 Model-View-Controller 프레임워크(스트럿츠)들에 대한 지식을 소유하고 있어야만 한다.

    4. XML/XLS: XML/XSL을 사용해 데이타를 저장하고 전달하는데 있어서 장점과 단점을 이해할 수 있어야 한다. 또한, 여러가지 파서의 구현에 대한 지식도 필요하다.

    5. State Management: 상태 관리는 새 어플리케이션을 디자인 할 때 매우 중요한 사항이다. 예를 들면 상태없는 어플리케이션과 상태유지 어플리케이션 같은 차이점을 이해해야만 할 것이다.

    6. 분산/비분산 아키텍처: 아키텍처 구조의 깊은 이해를 가져야 하고, 분산과 비분산 아키텍처에 대한 각각의 강점과 약점만큼이나 잘 이해해야 한다.

  • 4. 비지니스 이해
  • 비지니스에 대한 이해가 기술적인 스킬에 추가할 가장 중요한 것이라는 사실은 의심의 여지가 없다. 이전에 같은 비지니스 분야에서 일한 경험을 가지고 있는 후보자 면접 기회를 날려버릴 고용주은 없다. 고용주에게는 불행하게도(당신에게는 행운이다) 좋은 커뮤니케이션 스킬과 동시에 업무에 대한 구체적인 비즈니스 지식을 기술적으로 숙련된 사람을 찾는다는 것은 거의 불가능하다. 게다가 고용주들은 기반 산업에 일반적인 경험이 있는 후보자를 찾는다. (중계업, 금융업, 제조업, 출판업 등등).

    만약 당신이 전에 겅험해보지 못한 산업에 속하는 포지션에 면접하게 된다면 무엇을 할 수 있겠는가? 한가지 방법은 네 자신을 다른 후보자들과 구별되도록 업무의 구성체계에 대한 너의 흥미와 지식을 표현하는 것이다. 이 특정 산업에 대한 어플리케이션 개발 세부사항에 대해 더 구체적으로 네가 인터뷰 하는 부서에 맞춰서 알아내도록 노력해라. 예를 들어 만약 출판 회사에 면접을 본다면, 면접관에게 그 업계가 도전할 하다는 것과 그곳에서 일하는 것의 이익에 대해 이해하고 있다는 것을 보여주어라. 예를 들어 만약 네가 면접 보는 부서가 고객과 상품 데이타 유지와 사용자가 그 데이타를 보고 수정할 수 있게 해주는 것에 대한 책임이 있다면, 그런 어플리케이션을 생성하고 유지하보수하는데 관련된 도전의식을 가지고 있다는 것을 설명하도록 노력해야할 것이다.

  • 5. 관계형 데이타 베이스 지식
  • 관계형 데이타베이스에 연결되지 않은 어플리케이션을 한번 대봐라. 생각해보니... 한개도 못찾겠다. 대부분의 현대 어플리케이션은 관계형 데이터베이스와 동작한다. 이것이 후보자들의 깊은 데이타베이스 지식이 필수적인 이유이다. 네가 반듯이 알아야할 것들은 무엇이 있나? 기본적인 주제들은 SQL, 엔티티 관계도, 데이타 타입, 테이블 정의 언어를 포함한다. 심화 주제는 최적화, 스토어드 프로시저, PL SQL, 트리거, 튜닝, DBMS 명령어들을 포함한다. 데이타베이스 관리자 만큼이나 능숙하게 다루어야한다고 웅변하는 것은 아니지만 심화 주제에 대해 자유롭게 토론할 정도는 되어야 한다. 만약 이전 직장에서 심화 데이타베이스 지식을 얻지를 못했다면, 그 주제에 대해 기술적인 강의를 들어서 배울 수 있다.

  • 6. 전문 지식 영역
  • 당신의 전문 분야는 무엇인가? 나 같은 경우 J2EE를 사용한 웹기반 어플리케이션 개발이다. 어플리케이션 개발에 있어서 당신의 전문 분야를 골라 전문가가 되기 위해 계발해야만 한다. 나는 후보자들이 자신이 웹 기반, 비동기, 팻 클라이언트 어플리케이션의 전문가라고 주장할때 회의적이다. 만약 웹 기반 어플리케이션 개발자를 요구한다면, 나는 배부분 웹 기반 어플리케이션 개발 경험이 있는 사람을 찾는 편이 더 좋다. 만약 주어진 분야의 문제에 봉착한 상태라면, 네가 원하는 일자리를 얻는데 꽤나 큰 기회를 가진 것이다.

  • 7. 이력서
  • 명백한 선언을 용서하길 바란다: 당신의 이력서는 당신의 첫번째 인상이다. 그래서, 이력서는 깔끔하고 정보를 잘 전달할 수 있어야한다는 사실과 마찬가지로 두가지 특징을 가지고 있어야 한다:

    1. 경영자 다운 요약. 경영자 다운 요약 정리라는 것은 3~4가지 문장으로 네가 찾고 있는 포지션과 네가 그 포지션을 위해 가지고 있는 가장 가치 있는 스킬들을 반드시 설명하고 있어야 한다.

    2. 이력서 길이. 나는 2페이지가 넘어가는 수많은 이력서들을 봤었다; 단기 길이 때문에 거절하고는 했다. 나는 긴 이력서가 후보자들의 업무 경력의 측면에서 가장 중요한 것들을 찾아 간략하게 요약에대한 무능력 혹은 부적절한 단어 선택 능력이라고 여긴다. ( 이중 여백, 잘못된 폰트와 크기, 넓은 여백 공간)

  • 8. 전체 어플리케이션 개발 단계
  • Monster.com(가장 인기좋은 구직 사이트)에 올라오는 거의 대부분의 일자리는 다음 줄을 포함한다: “후보자는 모든 소프트웨어 개발 생명 주기 과정에 대한 경험을 가지고 있어야 한다.“ 이것은 고용담당자가 전체 개발 주기 경험에 가치를 둔다는 것을 의미한다. 시스템 개발 과정을 한번 어보자.

    * 프로젝트 계획, 가능성 연구: 범위를 정하고 프로젝트 차터 생성.

    * 시스템 분석, 요구사항 정의: 프로젝트 활동사항 정의, work-breakdown structure, 프로젝트의 기술 관점들

    * 시스템 디자인: 요구기능과 스크린 레이아수, 비즈니스 룰, 프로세스 다이어그램, 의사코드, 기타 문서를 포함하는 자세한 동작 기술

    * 구현: 이 구간 동안 실제 코드가 작성된다.

    * 통합 테스트 : 모든 조각을 특정 테스트 환경으로 모은다. 제품은 QA 테스트를 받는다.

    * 인수, 설치, 배포: 개발의 마지막 단계, 완전한 산출물이 제품 사용 준비가 되어 있다.

    * 유지보수: 소프트웨어 생명의 남은 기간동안 무슨일이 벌어지나?: 변경, 수정, 추가, 다른 컴퓨터 환경으로 이전, 등등

    전체 개발 생명 주지에 있어서 실질적으로 무엇에 참여했나? 당신은 프로젝트의 모든 프로세스에 대한 지식을 가져 갔다.- 이해 관계자들간의 관계, 구현과 테스팅 팀간의 역학관계, 통합 변경 관리 프로세스, 비즈니스 요구사항, 시간/비용/예산 제약들, 위험, 자원/조달/의사소통 관리. 이 모든 것들이 성공적인 프로젝트들의 요소로 이해하고 시작하면 되겠다.

    내가 완전한 한 어플리케이션 개발 생명 주지를 해야한다고 주장하기 전의 어플리케이션 개발자로서 나의 전문적인 경력은 3년이 걸렸다. 성공적인 프로젝트 완수(제시간에 예산보다 적고, 범위에 따라서)의 뜻밖의 일은 크지 않다; 2000년에 있어서 모든 프로젝트의 28%만이 성공으로 간 주 될 수 있었다.

  • 9. 질문 사항
  • 인터뷰 동안/ 끝날 때까지 적어도 3개의 질문을 하는 것이 좋다. 질문을 할 때에는 면접관이 그 포지션에 대한 당신의 관심을 알도록 해야한다. 또한, 이 일자리가 당신에게 맞는지 아닌지에 대한 근거있는 결론을 내리도록 만들어야 한다. 다음과 같은 애매한 질문은 피해라.

    1. 그룹의 크기과 구조는?

    2. 당신이 지원하고 개발하는 어플리케이션은?

    3. 내년을 위한 예산이 있나?

    4. 전문가로 성장할만한 기회가 있나?

    5. 내 일상 모습은 어떻게 될 것인가?

  • 10. Offshore and Onshore
  • “만약 그들을 부수지 못한다면, 그들에 합류해라.” Offshoring과 아웃소싱 계획은 모든 조직의 행태와 어플리케이션 개발의 모든 관점에 있다. 만약 네가 일하는 회사가 요즘날 어플리케이션에 일부분을 아웃소싱하지 않는 다면, 그것은 내일 반드시 그렇게 될 것이다. 그러나 좋은 소식이 있다: 아웃소싱이 왔을 때 onsite와 offshore 자원 존재는 평형이 확실하다; 조직은 그 업무 모두를 완전하게 아웃소싱 할 수 없다. 어플리케이션 개발에 있어서 프로세스가 비현명하거나 아웃소싱이 불가능하다. 아웃소싱은 비용절감에 관한 것이다. 그러나, 비용절감을 할 때 어떤 일이 발생할까? 프로젝트 범위와 스케쥴 압박 받는다. offshore자원으로 분리할 때, 감수해야 한다.(때때로 논쟁도 한다) 뿐만 아니라, 절대적으로 offshore/아웃소싱 어플리케이션 개발의 이점을 알아야만 한다(때때로 논란도 있다.)

    결론

    이 글은 성공적인 어플리케이션 개발 면접을 위한 10가지 알아야할 강조이다. 자신감, 적절한 드레스 코드, 시선 맞추기, 제 때 오기 같은 이러한 면접 팁은 이 글의 논외이다. 그러나 면접관들은 대충 보지는 않을 것이다. 포괄적인 인상이 일자리를 갖게 해 줄 것이다.

    작자

    Aleksey Shevchenko

    역자

    허혁

    출처: http://www.developer.com/tech/article.php/3675081

Posted by 헉군

댓글을 달아주세요:: 네티켓은 기본, 스팸은 사절


BLOG main image
안녕하세요. 안정된 코딩, 여유로운 프로젝트, 떠오르는 코더 by 헉군

카테고리

분류 전체보기 (120)
direct (68)
indirect (29)
transmissive (13)
agenda (6)
idea (3)

달력

«   2020/12   »
    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31    
12-04 16:40