무협지를 보면 많은 무공이 등장하고 그 중에서 고수들이 등장합니다.
고수들의 실력을 초식과 내공으로 구분하는데,
그 성취를 "삼류 - 이류 - 일류 - 절정 - 초절정 - 화경 - 현경 - 생사경" 으로 나누곤 합니다.
SW 개발자, 프로그래머도 이와 같은 경지가 있을까?
무협지의 무공에 비할 수 있는 것으로는 "C", "C++", "Python" 같은 프로그래밍 언어일 수도 있고
"임베디드", "웹", "게임", "데이터베이스", "프론트/백엔드", "보안" 같은 전문 분야로 나눌수도 있겠습니다.
다양한 관점이 있겠지만, 여기서는 결과물인 S/W를 어떤 수준으로 만드냐로 나눠봅니다.
수준 | S/W | 설명 |
1 | 버그 없는 S/W | 버그 없이 동작하는 S/W. 기본 중의 기본. |
2 | 최적화 된 S/W | 메모리, 실행시간을 최적화 한 경제적인 S/W 임베디드 쪽으로 가면, 비용과 관련이 있다. |
3 | 재사용 가능한 S/W | 한번 쓰고 버리는게 아니라, 향후에도 Re-use 할 수 있는 S/W. 객체지향, 모듈화, 디자인 패턴이 이쪽과 관련이 있다. |
4 | 신뢰성 있는 S/W | 의료, 항공, 자동차 쪽 S/W는 사소한 버그가 사람의 생명을 앗아갈 수 있다. 버그가 없고, 충분히 검증 되었다는 것을 어떻게 증명하고, 어떻게 사전에 위험 요소를 예방할 것인가? 각종 S/W 개발 Process, S/W 정적/동적 테스트 기법등이 관련이 있다. |
5 | 기능 안전, 고가용성을 만족하는 S/W |
아무리 조심해도 버그나 시스템의 장애는 생길 수 있다. 이 때 S/W가 장애를 극복하고, 안전하게 동작할 수 있는가? 의료, 항공, 자동차, 금융쪽에서도 신뢰성과 더불어 중요한 부분. |
대학생 수준에서는 1번 단계만 잘해서, 작성한 S/W를 데모만 잘하면 되는 수준입니다.
하지만 직장에 들어가서, "돈 받고 만드는 S/W" 는 2~4단계 수준까지도 만족해야 합니다.
점점 "S/W 개발", 프로그래밍은 업무적으로 어려워집니다.
여러분은 어느 경지인가요?