"Software Engineering" Is Not Engineering
소프트웨어 공학에 대한 논쟁은 객관적인 비교 기준이 없다는 점 때문에 발생합니다. 소프트웨어 분야가 과학이나 공학의 패턴을 따르지 않기 때문에, 소프트웨어 설계의 '올바른 방식'을 객관적으로 비교하기가 어렵다는 것이 핵심입니다. 엔지니어링이 물리 법칙에 엄격하게 구속되는 것과 달리, 소프트웨어 설계는 요구사항과 실행 시간 제약 외에는 객관적인 측정 기준이 부족합니다.
대부분의 소프트웨어 기법과 패러다임은 충분한 시간과 자원을 주면 어떤 명시된 알고리즘이든 구현할 수 있는 튜링 등가성을 가지므로, 결과물을 도출하는 것이 구별 요소가 되지 않습니다. 따라서 어떤 알고리즘이 더 좋다는 것이 반드시 '정답'을 의미하지 않으며, 인공지능과 같은 특정 분야에서는 성능을 연속적인 척도로 평가하는 방식이 사용됩니다.
소프트웨어는 수학과 유사하게 무한한 모델을 생성할 수 있는 능력을 가지며, 이는 게임과 같은 가상 현실을 구현하는 데 활용됩니다. 개발자 생산성 역시 측정 가능한 지표이지만, 너무 많은 변수가 얽혀 있어 여전히 측정하기 어려운 영역입니다. 결국 소프트웨어의 힘과 한계는 외부 세계보다는 개발자의 사고방식에 달려 있으며, 여러 패러다임을 마스터하는 것은 매우 어려운 일입니다.
대부분의 소프트웨어 기법과 패러다임은 충분한 시간과 자원을 주면 어떤 명시된 알고리즘이든 구현할 수 있는 튜링 등가성을 가지므로, 결과물을 도출하는 것이 구별 요소가 되지 않습니다. 따라서 어떤 알고리즘이 더 좋다는 것이 반드시 '정답'을 의미하지 않으며, 인공지능과 같은 특정 분야에서는 성능을 연속적인 척도로 평가하는 방식이 사용됩니다.
소프트웨어는 수학과 유사하게 무한한 모델을 생성할 수 있는 능력을 가지며, 이는 게임과 같은 가상 현실을 구현하는 데 활용됩니다. 개발자 생산성 역시 측정 가능한 지표이지만, 너무 많은 변수가 얽혀 있어 여전히 측정하기 어려운 영역입니다. 결국 소프트웨어의 힘과 한계는 외부 세계보다는 개발자의 사고방식에 달려 있으며, 여러 패러다임을 마스터하는 것은 매우 어려운 일입니다.