1.4 최근 소프트웨어 개발의 문제점
증가하는 복잡성, 수많은 추상화 계층, 스택 오버플로 관리 외에도 최신 소프트웨어 개발에는 다음과 같은 또 다른 문제들이 있다.
• 기술이 너무 많다: 프로그래밍 언어, 프레임워크, 라이브러리까지 모든 것이 굉장히 많다. 심지어 npm(Node.js 프레임워크의 패키지 관리자)에는 문자열 끝에 공백 문자를 추가해주는 left-pad라는 과도하게 단순한 라이브러리가 존재할 정도이다.
• 패러다임 중심적이며, 따라서 보수적이다: 많은 프로그래머는 프로그래밍 언어, 모범 사례, 디자인 패턴, 알고리즘, 데이터 구조 등을 마치 고대 외계 민족의 유물로 생각하며 이것들이 실제로 어떻게 동작하는지 모른다.
• 기술은 자동차처럼 점점 불투명해지고 있다: 과거 사람들은 자기 차를 수리할 수 있었다. 엔진이 점점 더 고도화되면서 후드 아래 보이는 것은 금속 덮개뿐이다. 마치 이집트 파라오 무덤에 있는 덮개처럼 그것을 여는 사람에게는 저주받은 영혼이 빙의되는 줄 안다. 소프트웨어 개발 기술도 크게 다르지 않다. 이제는 거의 모든 것이 오픈 소스이지만, 새로운 기술의 소프트웨어 복잡성이 커졌기 때문에 1990년대 바이너리 파일을 역설계한 코드보다 현재의 기술이 더 모호하다.