- 소프트웨어의 본질적 역할은 자신이 해결해야 할 문제를 명확히 알고, 그 한계를 인식하는 데 있음
- 좋은 소프트웨어는 모든 기능을 담으려 하지 않고, 개선이 필요한 부분만 다루며, 목적을 벗어나지 않음
-
ls명령어가 AI 기능으로 대체되는 가상의 사례를 제시go, 기존 도구가 불필요하게 확장되는 현상을 풍자 - 37Signals의 ‘Getting Real’ 과 ‘Rework’ 에서 제시된 원칙을 인용해, 제약을 장점으로 삼고 불필요한 기능 요청을 거부해야 함을 강조
- AI 열풍 속에서도 기존 표준의 안정성과 명확한 문제 정의가 새로운 유행보다 더 큰 가치를 지닌다는 점을 상기시킴
소프트웨어의 역할과 한계
- 글은 리눅스 배포판을 업데이트한 후
ls명령어가 AI 기반 디렉터리 인텔리전스로 바뀌는 상상의 장면으로 시작- 새로운
als명령어는 사용자의 의도를 예측하고 파일을 순위화하며, 기존ls는 30일 후 지원이 중단된다는 메시지를 표시 - 이 장면은 기능 과잉과 불필요한 혁신을 풍자하는 예
- 새로운
- “다행히 이런 일은 실제로 일어나지 않는다”며, 좋은 소프트웨어는 자신이 언제 멈춰야 하는지 안다고 강조
좋은 소프트웨어의 핵심 원칙
- 좋은 소프트웨어는 자신이 어떤 목적을 수행하는지 알고, 모든 것을 하려 하지 않으며, 언제 멈출지와 무엇을 개선할지를 구분
- 인간의 ‘최대주의적 사고방식’ 은 모든 것을 더 크게, 더 복잡하게 만들려는 경향이 있음
- 그러나 소프트웨어는 자신이 속한 역할과 위치를 명확히 정의해야 하며, 새로운 아이디어가 기존 비전과 맞지 않는다면 별도의 프로젝트로 분리해야 함
37Signals의 제품 철학
- Basecamp 창립자들이 쓴 ‘Rework’ 과 ‘Getting Real’ 은, 제품 설계에 중요한 교훈을 제공함
- 제약은 장점(Constraints are advantages): 작은 팀, 제한된 예산, 제한된 범위가 더 나은 의사결정을 유도
- 기능 요청 무시(Ignore feature requests): 사용자가 요청한 기능을 그대로 구현하기보다 근본 문제를 이해하는 접근 필요
- 빠른 출시와 반복(Ship early, ship often): 완벽하지만 출시되지 않은 제품보다 불완전하지만 실제로 작동하는 제품이 더 가치
- 핵심 중심 설계(Epicenter design): 네비게이션이나 주변 요소보다 핵심 인터페이스와 상호작용부터 설계
- 기본적으로 ‘아니오’라고 말하기(Say no by default): 새로운 기능은 복잡성, 유지보수 비용, 예외 처리 증가라는 숨은 비용 존재
- 자신이 필요로 하는 것을 만들기(Scratch your own itch): 자신이 실제로 필요한 문제를 해결하는 제품이 더 나은 의사결정 가능
변화보다 지속의 가치
- 최근 여러 제품이 AI를 중심으로 이름과 기능을 재구성하는 흐름이 있음
- MinIO → AIStor
- Oracle Database → Oracle AI Database
- 모든 것이 극적으로 변할 필요는 없음
- 특정 문제 영역에서 사실상 표준(de facto standard) 으로 자리잡는 것이 더 큰 가치를 지님