본문 바로가기

DevOps/소프트웨어공학

개발자에게 은총알(silver bullet)은 없다.

슈퍼맨에 나오는 악당들은 성가신슈퍼맨을 물리치기 위해 크립토나이트(은탄환)를 사용한다.


There is no silver bullet - 은탄환은 없다.

울버린, 늑대인간, 드라큘라와 같은 괴물들에게 은탄환(one seeks bullets of silver)은 한번에 무력화 시킬 수 있는 최고의 도구이다.

- Fred Brooks, 『Silver Bullet-Essence and Accidents of Software Engineering』

1986년 프레드 브룩스가 쓴 소프트웨어 공학 논문에서 은탄환의 존재에 대해 최초로 언급하였다. 이와 동시에 소프트웨어 개발의 복잡성을 한번에 해소할 마법같은 솔루션(은탄환)은 없다고 선언한다.


소프트웨어는 복잡성을 내포하고 있으며 여러가지 문제(essential complexity, accidental complexity)를 포함하고 있다. 이러한 문제를 단번에 해결할 단일 개발, 기술, 관리 방법은 없으나, 지속적인 혁신을 통해 필수적은 복잡성은 개선할 수 있다고 논문에서는 말한다.


Essential complexity : 애플리케이션이 해결해야하는 본질적인 문제에 따른 복잡성 - 비즈니스 로직

Accidental complexity : 애플리케이션 개발을 위해 사용하는 도구에 따른 복잡성 - 언어, 기술, 도구

- Fred Brooks, 『Silver Bullet-Essence and Accidents of Software Engineering』


원영's 블로그에서는 여러가지 언어, 솔루션을 소개하고 제안한다. GitKrakenGolangHazelcast 기타 등등. 


상기 언어, 솔루션들은 은탄환이 아니다. 


Golang이 심플하고 생산성이 높다고 한들 오랫동안 한국에서 사랑받는 Java를 한번에 대체할 수 없을 것이다. 마찬가지로 Hazelcast가 효과적인 성능을 보인다고 해서 모든 data grid를 효과적으로 사용할 수 있는 것은 아니다.


모든 회사는 조직과 시스템이 서로 다르다. 여러가지 소프트웨어 솔루션, 언어들이 우리에게 적합한지 그리고 얼마나 적극적으로 적용할 수 있는지는 다양한 요인에 의해 좌우된다.


그러므로 개발자는 자신이 아는 솔루션, 언어에 대해서 은탄환이라는 고정관념을 버리고 다양한 시각으로 수용하는 마음으로 문제에 접근해야 할 것이다.


-원영