출처 : https://github.com/EBvi/dev-matrix/blob/master/%E1%84%89%E1%85%B5%E1%86%AB%E1%84%8B%E1%85%B5%E1%86%B8%20%E1%84%80%E1%85%A2%E1%84%87%E1%85%A1%E1%86%AF%E1%84%8C%E1%85%A1%20%E1%84%8B%E1%85%A7%E1%86%A8%E1%84%85%E1%85%A3%E1%86%BC%20%E1%84%91%E1%85%A7%E1%86%BC%E1%84%80%E1%85%A1.md




신입 개발자 역량 평가

  • 각 단계의 마지막 mastery는 우리가 기대하는 신입의 수준을 넘어갑니다만, 가끔은 이런 단계에 오른 신입들도 존재하기 때문에 넣어뒀습니다
  • 평가 그 자체에 너무 부담을 갖지는 말아주세요. 저희는 신입 개발자가 가져야될 가장 중요한 자질로 잠재력에 초점을 두고 있습니다
  • 맨 마지막 항목에 여러분의 잠재력을 어필해주세요

퍼블리싱

1. 웹페이지 코딩

  • 간단한 HTML 문법과 CSS 문법을 알고 사용할 수 있다
  • div로 레이아웃을 잡고 코딩을 할 수 있다 (Box model을 이해한다)
  • 웹 표준을 어느 정도 이해하고 있다 (DTD를 알고 있다)
  • 웹 접근성과 시맨틱한 마크업에 대해 숙지하고 있으며 관심이 깊다

2. 크로스 브라우징

  • 인터넷 익스플로러밖에 사용해 보지 않았다
  • 특정 모바일 디바이스에 최적화된 페이지를 만들어 본 경험이 있다
  • 각 브라우저의 렌더링 이슈를 알고 있으며 해결해 본 경험이 있다
  • 브라우저핵의 존재를 알고 있으며, 우아한 퇴보 기법의 일부를 숙지하여 코딩할 수 있다

3. jQuery

  • 간단한 셀렉터와 실행 문법을 알고 있다
  • 다양한 플러그인을 사용해본 경험이 있다
  • 제법 복잡한 셀렉터를 다룰 수 있고, 메소드 체이닝을 알고 있으며, 거의 모든 문법을 자유 자재로 다룰 수 있다
  • 플러그인 제작이 가능하고 jQuery가 어떻게 구현되었는지 상당 수준을 이해한다

4. JavaScript

  • 아주 기초적인 JavaScript 문법을 알고 있다
  • Context의 역할과 this의 용법을 안다
  • closure를 이해하고 익명함수를 다룰 수 있다
  • 각 브라우저별 JavaScript 엔진의 차이를 이해하고 크로스 브라우징이 가능한 코드를 작성할 수 있다

운영체제

1. 리눅스 경험

  • 윈도우밖에 사용해 보지 않았다
  • 몇 종류의 리눅스를 사용해 보았으며 쉘 명령어를 좀 알고 있다
  • 리눅스에 특정 벤더사의 서버를 설치, 세팅해본 경험이 있다
  • 리눅스로 서비스를 운영해 보았으며 각종 트러블 슈팅에 대한 경험이 있다

2. 윈도우 경험

  • 특별한 경험이 없다
  • 백업과 복원을 할 줄 알고, 시스템을 새로 설치하는 데에도 문제가 없다
  • 각종 고급 테크닉을 숙지하고 있으며 최적화나 튜닝에 대해서도 관심이 많다
  • 오류가 발생하면 덤프를 뜨고 로그를 읽어 어떤 문제가 발생했는지 알고 해결할 수 있다

전산학 이해

1. 자료구조

  • 배열(array)과 List의 차이를 모른다
  • 배열과 Linked List, dictionary의 차이를 설명할 수 있다
  • 트리와 그래프를 알고 사용할 수 있다
  • 각종 상황에서 효율적인 자료구조를 결정할 수 있다

2. 알고리즘

  • 배열에 들어있는 값의 평균을 낼 줄 모른다
  • 정렬, 검색, 순환 알고리즘을 안다
  • 퀵 정렬에 대해 설명할 있고, 직접 코드를 작성할 수 있다
  • 다익스트라나 A*, 또는 그 밖의 알고리즘을 알고 있다

3. 시스템 프로그래밍

  • 컴파일러, 링커, 인터프리터를 구분하지 못한다
  • 컴파일러, 링커, 인터프리터를 설명할 수 있다
  • 커널모드/유저모드 차이를 설명할 수 있다
  • 스레딩/멀티스레딩, 동기화와 락을 이해하고 어떻게 구현되었는지 설명할 수 있다

설계

1. 객체 지향

  • 인터페이스를 왜 써야하는 지 모른다
  • 캡슐화와 추상화를 이해하고 어떤 상황에서 써야하는지 알고 있다
  • 디자인 패턴과 안티 디자인 패턴을 상당수 알고 있다
  • 이를 통해 프레임워크를 구축해본 경험이 있다

2. DI

  • DI나 IoC가 무엇인지 모른다
  • 왜 빈을 주입해야 하고 왜 이것이 낮은 결합도를 만드는지 안다
  • 스프링에서 DI가 어떻게 구현되어 있는지 알고 있다
  • DI와 IoC에 대해 하루종일 설교할 수 있다

3. 모델링

  • 논리적 모델과 물리적 모델이 무엇을 말하는지 모른다
  • 논리적 모델과 물리적 모델을 구분하여 모델링할 수 있다
  • L자형 테이블이 왜 위험한지 알고 있다 (필드가 많이 늘어나는 것이 어떤 영향을 미치는지 이해한다)
  • 정규화를 알고 이를 적용하여 모델링을 할 수 있다

Java

1. 문법

  • 간단한 문법을 이해하고 프로그램을 작성할 수 있다
  • 리플렉션을 이해하고 사용할 수 있다
  • 어노테이션을 어떻게 쓰고 어떻게 구현할 수 있는지 알고 있다
  • 인터페이스와 클래스의 각종 고급 문법을 알고 적용할 수 있다. 디자인 패턴의 존재를 알고 있다.

2. 빌드

  • IDE(이클립스)가 아니면 빌드를 할 수 없다
  • 커맨드라인으로 빌드를 만들 수 있다
  • 빌드 스크립트를 직접 작성할 수 있다
  • 문서, 설치 스크립트, 릴리스 노트를 포함한 빌드 스크립트를 작성한다

3. 테스트

  • 테스트를 하지 않는다
  • System.out.print를 사용하여 문자열을 찍어본다
  • 유닛 테스트를 작성한다
  • TDD를 이해한다 (반드시 TDD를 하고 있어야 한다는 의미가 아님)

데이터베이스

1. 쿼리 작성

  • 기본적인 CRUD를 작성할 수 있다
  • inline view를 사용하여 복잡한 질의문을 작성할 수 있다
  • 각종 join을 다룰 수 있으며, 집계 쿼리, group by 등을 사용할 수 있다
  • 100만 건 이상의 데이터가 누적되어 있는 상황에서 쿼리를 작성해본 경험이 있다

2. 대용량 데이터베이스

  • 실행 계획이 뭔지 모른다
  • Clustered Index와 Non-clustered Index의 차이를 안다
  • 실행 계획을 변경하기 위해 hint를 사용할 수 있다
  • 파티셔닝과 병렬 처리를 제어할 수 있고, 각종 튜닝 방법에 대해 알고 있다

3. 데이터베이스 개념

  • 제대로 데이터베이스에 대한 개념을 학습하지 못했다
  • ACID, 정규화, 트랜잭션을 이해한다
  • 스키마를 정규화해서 정의할 수 있고, 뷰, 스토어드 프로시저, 트리거, 사용자 정의 타입을 다룰 수 있다
  • 쿼리 트랜스포머를 어느 정도 이해하고 있으며, 내부적으로 인덱스가 어떻게 저장되어 있고 작동하는지 이해하고 있다

기타

1. 책

  • 간단한 문법을 다룬 책을 위주로 몇 권 읽어 봤다
  • 코드 컴플리트를 비롯한 스티브 맥코넬의 저서 또는 켄트벡이나 마틴 파울러의 저서를 읽어 봤다 (방법론에 대한 책)
  • 이펙티브 C++, 이펙티브 Java, 그 외 각종 실용적이면서 중급 사용자에게 적절히 도움이 되는 책을 읽어 봤다
  • 아트 오브 컴퓨터 프로그래밍, 자바스크립트 닌자의 비밀, 대용량데이터베이스 솔루션 등의 고급 서적을 읽어 봤다

(어떤 책을 읽어봤는지 추가로 서술해주셔도 좋습니다)

2. 인터넷 커뮤니티 활동

  • 개발과 관련된 어떠한 커뮤니티 활동도 하지 않는다
  • 자주 가는 블로그, 또는 개발자 위주로 된 트위터 리스트를 갖고 있다
  • 프로그래밍에 관한 개인적인 통찰이나 생각을 표현하는 블로그를 갖고 있으며 이것을 다른 개발자와 공유한다

3. 외국어 수준

  • 한국어가 아닌 자료로는 기술 습득이 불가능하다
  • 영어로 된 기술 교재를 읽고 기술을 파악한다
  • 미국인/영어권 사용자로부터 개발 업무를 지시받고 업무 수행 후에 결과를 보고할 수 있다
  • 영어권 사용자로부터 SW를 발주 받아, 인도/중국인에게 개발 업무를 아웃소싱하고 국내 팀과 연계하여 국제적인 프로젝트를 진행할 수 있다

그리고

무엇이라도 좋습니다. 사진, 그림그리기, 만화, 인터넷 활동, 음악, 글쓰기, 잉여력 발산, 게임 등 지금까지 했던 활동 중에서 어떤 걸 어디까지 알고 있는지 자랑할 만한 것이 있으면 기술해주세요. 다만 너무 길게 쓰지는 말아주세요. 저희는 이 항목에 대한 평가를 가장 중요하게 생각합니다.

+ Recent posts