무협지를 보면 많은 무공이 등장하고 그 중에서 고수들이 등장합니다.

 

고수들의 실력을 초식과 내공으로 구분하는데,

그 성취를 "삼류 - 이류 - 일류 - 절정 - 초절정 - 화경 - 현경 - 생사경" 으로 나누곤 합니다.

 

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 개발", 프로그래밍은 업무적으로 어려워집니다.

 

여러분은 어느 경지인가요?

+ Recent posts