본문 바로가기
Homo Ware

프로그래머와 스펙

by javauser 2009. 9. 21.

'스펙' - 어쩌다가 이 단어가 사람에게까지 붙게됐는지 모르겠다. '스펙' 이라는 단어가 'specification' 이라는 단어의 줄임말인 것은 모두 알 것이다. 프로그래밍에서 스펙은 명세를 의미한다. 즉, 해당 API의 구문론적(syntactic)이고 의미론적(semantic)인 의미를 뜻한다. 구문론적인 의미는 겉보기의 모습을 말한다. 해당 오퍼레이션의 시그너처이다. 의미론적인 의미는 그 오퍼레이션의 컨텍스트(context)를 말하며, 사전/사후의 조건/상태, 불변의 진실 등을 가리킨다.
'스펙'은 프로그래밍에 있어서 상당히 중요한 의미이며, 이는 요구사항 분석과 같이 개발 초기 단계에 식별되어서 고정(fix)되는 것이 중요하다. '스펙'이 바뀌게 되면 많은 부분이 어그러지며, 전체 시스템에 변경 영향도가 상당히 크다.
이런 의미의 '스펙'이 사람에게 붙는다는 것은 그 사람을 고정시켜놓겠다는 의미하고 동일한 의미이다. 사람을 어떤 규격에 맞춰놓고 그러한 규격에 맞는지 그렇지 않은지를 따지겠다는 것이다. 다시 말하면, 이는 분명 사람 중심이 아닌 규격 중심, 체제 중심의 시각이 그 바탕이 된다. 하지만, 이러한 '스펙'이라는 것 그 자체도 어찌보면 불변의[고정된] 형태가 아니다. 프로그래밍에서도 급격하게 바뀌는 사회 환경에 영향으로 말미암아 적응성(agility)라는 말이 떠오르고 있는데, 고정적이고 불변적인 성격의 API는 이러한 사회적인 환경에 따라 바뀔 수 있는 유연한(flexiblity) 형태로 진화하거나 바뀌어야 한다.
'잣대'라는 것과 동일한 개념으로 사용할 수도 있겠지만, '스펙'은 하나의 참고사항일 뿐이고, 그 '스펙'을 기준으로 모든 것을 맞춘다는 것은 의미가 없다.
또한, '스펙'은 표준의 의미가 있지만, 강제성이 없다. 표준적인 형태의 프로그래밍은 확장성과 보편성을 보장하겠지만, 해당 특수한 비즈니스를 구현하는데 상당한 불편함을 감수해야 한다. 즉, 변화나 혁신을 위해서는 기존의 '스펙'을 무시할 수도 있어야 한다는 의미이다.
대부분의 유명한 '스펙'들은 '스펙'이 먼저 존재하고, 프로그램들이 구현된 것은 아니다. 실제로 구현된 내용이 좋고, 많이 사용되다 보니, '스펙'을 필요로 했고, 이러한 '스펙'이 나름 유명해진 것들이다. 즉, '스펙'에 맞추는 구현보다는 나름대로 효과적이고 효율적인 구현 상태를 만들고 이를 표준화시키는 '스펙'을 만드는 것이 필요하다는 이야기이다.

'스펙'을 먼저 말하는 사람은 이는 항상 '표준'이 무엇인지를 따지고, 이를 좇는 사람 밖에는 안된다. 이 사람은 아무리 잘해야 2인자 밖에 할 수 없으며, 결코 1인자가 되지 못한다. 하지만, 무엇보다도 과연 사람을 표준화시킨다는 말이 옳은 것인가는 한번쯤 생각해볼 필요가 있다.
반응형