**신입 개발자 역량 평가로 자신에게 질문해 보자!!**
퍼블리싱
1. 웹페이지 코딩
- 간단한 HTML 문법과 CSS문법을 알고 사용할 수 있다.
- div로 레이아웃을 잡고 코딩 할 수 있다.(Box model을 이해한다)
- 웹 표준을 어느 정도 이해하고 있다.(DTD를 알고 있다.) 1
- 웹 접그성과 시맨틱한 마크업에 대해 숙지하고 있으며 관심이 깊다.
2. 크로스 브라우징
- 인터넷 익스플로러밖에 사용해 보지 않았다??
- 특정 모바일 디바이스에 최적화된 페이지를 만들어 본 경험이 있다.
- 각 브라우저의 렌더링 이슈를 알고 있으며 해결해 본 경험이 있다.
- 브라우저핵의 존재를 알고 있으며, 우아한 퇴보 기법의 일부를 숙지하여 코딩할 수 있다.
3. jQuery
- 간단한 셀렉터와 실행 문법을 알고 있다.
- 다양한 플러그인을 사용해본 경험이 있다.
- 제법 복잡한 셀렉터를 다룰 수 있고, 메소드 체이닝을 알고 있으며, 거의 모든 문법을 자유 자재로 다룰 수 있다.
- 플러그인 제작이 가능하고 jQuery가 어떻게 구현되었는지 상당 수준을 이해한다.
4. JavaScript
- 아주 기초적인 JavaScript 문법을 알고 있다.
- Context의 역할과 this의 용법을 안다.
- closure를 이해하고 익명함수를 다룰 수 있다.
- 각 브라우저별 JavaScript 엔진의 차이를 이해하고 크로스 브라우징이 가능한 코드를 작성하라 수 있다.
운영체제
1. 리눅스 경험
- 윈도우밖에 사용해 보지 않았다.
- 몇 종류의 리눅스를 사용해 보았으며 쉘 명령어를 좀 알고 있다. (Ubuntu, CentOs 등.. 2개는 써봄, 주로 Ubuntu)
- 리눅스에 특정 벤더사의 서버를 설치, 세팅해본 경험이 있다.(AWS, DigitalOcean 사용해봄! 서버설치)
- 리눅스로 서비스를 운영해 보았으며 각종 트러블 슈팅에 대한 경험이 있다.(웹 사이트 운영경험 있음.)
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를 하고 있어야 한다는 의미가 아님) 2
데이터베이스
1. 쿼리 작성
- 기본적인 CRUD를 작성할 수 있다.
- inline view를 사용하여 복잡한 질의문을 작성할 수 있다.
- 각종 join을 다룰 수 있으며, 집계 쿼리, group by등을 사용할 수 있다.
- 100만 건 이상의 데이터가 누적되어 있는 상황에서 쿼리를 작성해 본 경험이 있다.
2. 대용량 데이터베이스
- 실행 계획이 뭔지 모른다.
- Clustered Index 와 Non-clustered Index의 차이를 안다.
- 실행 계획을 변경하기 위해 hint를 사용할 수 있다.
- 파티셔닝과 병렬 처리를 제어할 수 있고, 각종 튜닝 방법에 대해 알고 있다.
3. 데이터베이스 개념
- 제대로 데이터베이스에 대한 개념을 학습하지 못했다.
- ACID, 정규화, 트랜잭션을 이해한다.
- 스키마를 정규화해서 정의할 수 있고, 뷰, 스토어드 프로시저, 트리거, 사용자 정의 타입을 다룰 수 있다.
- 쿼리 트랜스포머를 어느 정도 이해하고 있으며, 내부적으로 인덱스가 어떻게 저장되어 있고 작동하는지 이해하고 있다.
기타
1. 책
- 간단한 문법을 다룬 책을 위주로 몇 권 읽어봤다.
- 코드 컴플리트를 비롯한 스티브 맥코넬의 저서 또는 켄트벡이나 마틴 파울러의 저서를 읽어봤다.(방법론에 대한 책)
- 이펙티브 C++, 이펙티브 Java, 그 외 각종 실용적이면서 중급 사용자에게 적절히 도움이 되는 책을 읽어봤다.
- 아트 오브 컴퓨터 프로그래밍, 자바스크립트 닌자의 비밀, 대용량 데이터베이스 솔루션 등의 고급 서적을 읽어 봤다.
(어떤 책을 읽어봤는지 추가로 서술해주셔도 좋습니다.)
2. 인터넷 커뮤니티 활동
- 개발과 관련된 어떠한 커뮤니티 활동도 하지 않는다.
- 자주 가는 블로그, 또는 개발자 위주로 된 트위터 리스트를 갖고 있다.
- 프로그래밍에 관한 개인적인 통찰이나 생각을 표현하는 블로그를 갖고 있으며 이것을 다른 개발자와 공유한다.
3. 외국어 수준
- 한국어가 아닌 자료로는 기술 습득이 불가능하다.
- 영어로 된 기술 교재를 읽고 기술을 파악한다.
- 미국인/영어권 사용자로부터 개발 업무를 지시받고 업무 수행 후에 결과를 보고 할 수 있다.
- 영어권 사용자로부터 SW를 발주 받아, 인도/중국인에게 개발 업무를 아웃소싱하고 국내 팀과 연계하여 국제적인 프로젝트를 진행할 수 있다.
그리고
무엇이라도 좋습니다. 자신이 가장 집중하고 몰두 했던 일을 써주세요!!!
reference : 신입 개발자 역량 평가
'컴퓨터공학 기초 이론 (old)' 카테고리의 다른 글
ip 정의 관련 (업무하면서,,) (0) | 2022.06.22 |
---|---|
Hadoop 이론 정리 + github code (0) | 2017.11.19 |
네트워크와 TCP/IP (0) | 2017.10.04 |