개발자 역량 측정 메트릭
저번에 이어서 가장 많은 항목이 있는 프로그래밍에 대해서 정리한 내용이다.
★프로그래밍
- 프로그램 분해
- 긴 코드로 Copy & Paste 한다.
- 함수로 나눠서 코딩한다.
- 재사용 가능한 객체 코드로 작성한다.
- 디자인 패턴을 적용가능하고 모듈화에 대해 고민하며 작성한다.
- 적절한 알고리듬 제네릭/OOP 방법으로 써서 변경이 있을 부분을 고려하며 캡슐화 하면서 코딩한다.
- 시스템 분해
- 파일 클래스, 클래스 1개 이상 범위밖에 생각하지 못한다.
- 같은 플랫폼, 같은 범위내에서는 문제를 분리해서 설계한다.
- 복수개의 기술과 시스템에 걸쳐 있는 문제에 대한 솔루션을 만들어낸다.
- 복잡한 다수개의 제품을 가시화하여 재 설계하고 , 외부 시스템 및 예외 운영에 대해서 설계할수 잇다.
- 의사 소통
- 아이디어와 생각을 표현하지 못한다.
- 동료가 무슨 말을 하는지 알아 듣는 수준이다.
- 효과적으로 의사 소통할 수 있다.
- 모호한 상황에서 생각 / 설계 / 스펙을 이해하고 소통할수 있고 해결책을 타인에게 설명할수 있다.
- 파일 내의 코드 구성
- 코드 파일 내에서 구조화가 되어 있지 않다.
- 메소드들이 논리적으로 되어있고 나름 구조화가 되어있다.
- 코드가 영역별로 Grouping이 되어있고 주석(Comment)으로 설명이 잘되어있다.
- 파일의 요약및 정렬이 일정하고 헤더 및 라이브러리 처럼 구성되어 있다.
- 파일 내의 코드 구성
- 파일간에 어떤 구조도 없다.
- 파일들이 폴더로 단순 구분되어 있다.
- 파일별로 고유한 목적에 의해 구분되어 있다.
- 코드 구성이 설계와 잘 매치되어있어서 이름(Naming)만 보더라도 설계에 대한 이해가 가능하다.
- 코드 가독성
- 단음절 변수명
- 파일, 변수, 클래스에 대한 이름이 알맞다.
- 긴 함수는 없고 통상적이지 않는 코드나 예외상황, 버그에 대해서 코멘트를 달아 둔다.
- 전체 조건 등은 assert로 검증한다. 네스팅 단계가 깊지 않고 자연스럽게 코드가 흐른다.
- 방어적 코딩
- 방어적 코딩에 대해서 무지 하다.
- 인수를 체크하고, 크리티컬한 조건에 대해서 assert 를 사용한다.
- 리턴값, 예외처리에 대해서 항상 체크하고 미리 사전 방지한다.
- 방어적 코딩을 하기위한 자신만의 라이브러리가 있다. 실패 케이스를 시험하는 유닛 테스트 코드를 작성한다.
- IDE(Integrated Developement Environment)
- 대부분 텍스트 에디팅에서만 사용한다.
- 인터페이스의 숨겨져있는 단축키를 사용한다.
- 거의 모든 IDE를 단축키로 사용가능하다.
- IDE에 매크로를 정의해서 사용한다.
- API
- 문서를 항상 봐야한다.
- 기억속에 자주 쓰는 API는 알고 있다.
- API에 대해서 폭넓고 깊이 있는 이해를 하고 있다.
- 자주 사용하는 것에 대해서 API위에 라이브러리를 추가 개발하고, 부족한 점은 직접 구현해서 채운다.
- 프레임 워크
- 코어 플랫폼 밖의 어떤 프레임워크도 사용하지 않는다.
- 유명한 것은 알기만 하는 수준이다.
- 여러가지 프레임웤을 능숙하게 쓰고 전형적인 방법을 알고 있다.
- 직접 개발한다.
- 스크립팅
- 스크립팅 툴을 모른다.
- 배치 파일 , 쉘 스크립을 한다.
- Perl/Python/Ruby/VBScript/Powershell 류의 스크립팅을 한다.
- 재사용 가능한 코드를 짜고 공개한다.
- 데이터 베이스
- 엑셀을 데이터베이스라고 생각한다.
- 데이터베이스의 기본 개념과 정규화, 트랜잭션을 이해하고 단순 REST에 대해서 알고있다.
- 실행된 질의문에 대한 관계 및 스키마에 대해 이해하고 트리거, 클러스터드 인덱스를 이해하고 ORM 툴을 사용한다.
- 기본 관리 색인, 고급 Select Query 등 데이터 베이스 미러링 및 관리, 페이스 커밋을 이해한다.
마찬가지로 위에 나열된 항목은 절대적인 수치나 평가 기준은 아니지만 자신의 수준을 알수 있는 대략적인 가이드가 되었으면 좋겠습니다.
★★★☆☆
반응형
'개발 > 개인적인 생각' 카테고리의 다른 글
개인생각) AI의 발전의 고도화 (0) | 2019.10.25 |
---|---|
개인생각) 나쁜 프로그래밍 습관 (0) | 2019.10.21 |
개인적인생각) 롤 IP 확장 (0) | 2019.10.17 |
자료) 개발자 역량측정 메트릭( 전산학 이해, 소프트웨어 엔지니어링) (0) | 2019.08.11 |
개인생각)좋은 기획자란..? (0) | 2019.08.02 |
댓글