소프트웨어 개발은 요구사항 변경이 잦고 예측하기 어렵다는 이유로 전통 공학과 다른 특별한 분야로 여겨지곤 합니다. 하지만 이는 전통 공학의 실제 작업 과정을 오해한 데서 비롯된 통념일 수 있습니다. 터널 공사나 토목, 전자 분야에서도 점진적 개발과 현장 적응이 활발히 이루어지며, 공급업체 폐업이나 예상치 못한 지질 특성처럼 계획을 뒤엎는 문제는 전통 공학에서도 흔하게 발생합니다. 즉, 소프트웨어만이 특별히 예측 불가능하다는 주장은 설득력이 약합니다.
소프트웨어와 전통 공학의 가장 큰 차이점으로 흔히 꼽히는 '폭포수(Waterfall) 모델'과 '애자일(Agile) 모델'의 구분 역시 지나치게 단순합니다. 1970년대에도 소프트웨어 개발자들은 스파이럴 모델(Spiral Model)이나 V 모델(V Model) 같은 점진적 방식을 사용했으며, 애자일은 단절적인 혁명이라기보다 당시 흐름의 자연스러운 결과에 가깝습니다. 전통 공학이 사전 설계를 많이 하는 이유는 폭포수 모델의 경직성 때문이 아니라, 물리적 제작의 반복 비용이 크기 때문입니다. 회로 기판을 다시 만들려면 수천 파운드와 수주의 시간이 추가될 수 있어, 한 번의 작업을 더 오래 계획하는 것이 합리적입니다. 또한, 오스트리아식 터널 공법처럼 전통 공학에도 반복 개발과 현장 즉흥 대응에 의존하는 애자일과 유사한 방식이 존재합니다.
그렇다면 소프트웨어만의 실제 차이점은 무엇일까요? 첫째는 '일관성'입니다. 소프트웨어는 논리로 완전히 합성되므로 물리적 마모가 없어 다른 공학 결과물보다 훨씬 일관적입니다. 물리적 재료는 기본적으로 편차가 존재하며, 같은 저항기 100개도 실제 측정값은 다를 수 있습니다. 둘째는 '변경 속도'입니다. 소프트웨어는 코드를 변경한 뒤 수초 안에 전체 테스트를 실행할 수 있을 정도로 빠르게 수정할 수 있습니다. 이는 다른 공학 분야가 설계 도구와 시뮬레이션에 소프트웨어를 더 많이 사용하는 이유이기도 합니다. 하지만 이러한 빠른 변경 능력은 전자·기계 장치의 물리적 문제를 코드 우회책으로 해결하려는 압박으로 이어져 보잉 737 MAX 추락 사고처럼 치명적인 결과를 초래할 수도 있습니다. 셋째는 '제약과 되돌릴 수 없는 변경'입니다. 소프트웨어 제약은 대부분 넘을수록 상태가 나빠지는 '소프트 제약'인 반면, 전통 공학의 제약은 넘으면 제품이 작동하지 않는 '하드 제약'인 경우가 많습니다. 물리적 임시방편은 영구적인 구조물이 되기 쉬워 이후 모든 변경에서 계속 고려해야 합니다.
결론적으로 소프트웨어는 특별하지 않으며, 다른 공학 분야와 마찬가지로 사전 추상적 사고, 정돈된 작업, 적절한 임시방편을 중시하고 변화하는 요구사항과 미지수를 마주합니다. 소프트웨어 엔지니어가 기계공학을 모르는 만큼, 화학공학 엔지니어도 다른 공학의 실제 업무를 알기 어렵습니다. 소프트웨어가 특별하지 않다는 인식은 오히려 다른 공학 분야에서 개선 방법을 배우고, 전통 공학이 소프트웨어에서 기록, 검증, 자동화 같은 강점을 배울 수 있는 기회를 제공합니다. 각 공학 분야는 서로 고립되기보다 교류를 통해 함께 발전할 수 있습니다.