소프트웨어 개발에 있어 은빛 탄환이란 존재하지 않는다.
늑대인간은 은총알로 잡을 수 있다.
하지만, 소프트웨어 개발에 있어서는 은총알은 없다. 이 이야기는 아주 오래전부터 이야기된 것이고, 실제 2018년 현재까지도 이 내용은 유효하다.
모놀리틱, MSA? 에자일? 소프트웨어 공학? 그 어떤것도 은총알은 아니다. 개발자들이 서로 소통하면서 서로 성장을 자극하는 형태로 개발조직이 구성되는 것이 최선이며, 만나는 문제나 해결되어야 할 서비스들은 대부분 그 각각의 해법과 그 시기, 그 상황, 그 조직에 맞는 요구사항이 있을 뿐이며, 그것을 최대한 만족시키면서 개발하는 것이 최선의 방법이다.
물론, 환상의 은총알이 소프트웨어 개발에 있다고 믿는 사람도 있다. 그것에 대한 좋은 답변에 대해서 가장 많이 알려진 논문이 https://ieeexplore.ieee.org/document/1663532/ 에 있다.
1986년에 프레드 브룩스가 쓴 논문이며, 논문의 내용을 읽어 보면 인공지능이나 자동 프로그래밍 등으로도 작은 문제는 해결할 수 있어도, 본질적인 문제는 해결하지 못한다는 내용이 들어있다. 근본적으로 소프트웨어 개발이라는 것이 빠르게 진전되는 것보다는 문제를 해결하기 위한 소프트웨어 공학의 접근을 최대한 한다고 하더라도 원래 엄청 어려운 일이라는 점을 서술했다.
현대에 있어서 많은 부분들이 조금은 편해졌다. 만들어진 오픈소스, SaaS로 지원되는 서비스, 클라우드 환경 등... 하지만, 결론은 명확하다.
소프트웨어 개발이 필요한 조직은 다음과 같은 방법을 선택하면 된다.
1. 도메인 지식이 풍부한 설계자를 키우거나 찾아내라.
2. 훌륭한 멘토나 스승을 붙여서 관리하라.
3. 그리고, 성장시키고 소통하라.
고객을 대상으로 어떤 서비스를 제공하려는 회사라면, 이 3가지를 잘 지켜야 한다. 그리고, 그것을 우직하게 진행시키면 된다. 하지만 이 3가지 원칙이 정말 어렵고 힘들다.
시간과 비용 때문에 키우지 못하거나, 좋은 사람을 붙이지 못하거나, 성장시키지 못하기 때문이다.
좋은 IT회사는...
이 3가지 원칙에 비용과 시간과 사람을 투자한다. 그뿐이다.