VisiCalc과 하드웨어를 사게 만든 소프트웨어
VisiCalc은 스프레드시트를 발명했을 뿐 아니라, 소프트웨어가 하드웨어를 팔 수 있음을 증명해 컴퓨팅의 경제학을 바꿨습니다.

VisiCalc 이전의 개인용 컴퓨터는 취미가들의 장난감이었습니다. VisiCalc 이후에는 업무 도구가 되었죠. 과장이 아닙니다. Apple II의 판매 궤적이 이를 보여 줍니다. 틈새 취미용 기계에서 업무의 필수품이 된 것은 회계사들이 종이 스프레드시트를 그만 쓰게 만든 단 하나의 소프트웨어 덕분이었습니다.
Dan Bricklin과 Bob Frankston이 1979년에 VisiCalc을 출시했습니다. 1년 만에 Apple II 판매량은 여섯 배로 뛰었습니다. 사람들은 컴퓨터 매장에 들어가 'VisiCalc이 돌아가는 기계로 주세요'라고 말했습니다. 하드웨어를 살 이유가 될 만큼 강력한 소프트웨어, 즉 '킬러 앱'이라는 개념이 이때 탄생했습니다. 이 패턴은 컴퓨팅 역사 내내 반복되었고, 하드웨어와 소프트웨어가 지금의 관계를 맺게 된 이유를 설명해 줍니다.
VisiCalc이 실제로 한 일
돌아보면 스프레드시트는 당연해 보이지만, 1979년에는 그렇지 않았습니다. 종이 스프레드시트, 즉 재무 계산에 쓰는 큰 격자무늬 용지는 모든 회계 사무실의 표준 도구였습니다. 예산 예측을 하는 회계사는 행과 열에 숫자를 채우고, 합계와 수식을 손으로 또는 계산기로 계산해서 해당 칸에 결과를 적었습니다.
문제는 반복 작업이었습니다. 가정 하나가 바뀌면, 예를 들어 예상 성장률이 8%에서 10%로 올라가면, 회계사는 그 가정에 의존하는 모든 칸을 다시 계산해야 했습니다. 복잡한 모델에서는 수작업 재계산에 몇 시간이 걸렸고, 계산을 다시 할 때마다 실수할 기회가 생겼습니다. '만약 이러면?' 분석, 즉 가정이 결과에 어떤 영향을 주는지 살펴보는 작업은 품이 너무 많이 들어서 제대로 하는 경우가 드물었습니다.
VisiCalc은 이 과정을 완전히 자동화했습니다. 칸 하나를 바꾸면 그 칸에 의존하는 모든 칸이 즉시 갱신됩니다. 회계사가 몇 시간 걸리던 일이 몇 초로 줄었습니다. 핵심 가치는 '종이 대신 컴퓨터를 쓰자'가 아니라 '예전에 시나리오 하나를 돌리던 시간에 50가지를 검토하자'였습니다. 재무 분석으로 무엇을 할 수 있는지를 질적으로 바꾼 것입니다.
설계를 형성한 기술적 제약
VisiCalc은 32KB RAM, 1MHz 프로세서, 40열 텍스트 화면을 갖춘 Apple II에서 돌아갔습니다. 이런 제약 때문에 내린 설계 결정들은 나중에 보니 선견지명이 있었던 것으로 드러났습니다.
격자 모델, 즉 각 칸에 값이나 수식을 담는 행과 열 구조는 부분적으로 제한된 화면에 대한 대응이었습니다. 40×24 문자 화면은 격자를 자연스럽게 보여 줄 수 있습니다. 자유형 문서 캔버스였다면 당시 하드웨어가 감당할 수 없는 스크롤링과 레이아웃 알고리즘이 필요했을 겁니다. 격자 구조 덕분에 인터페이스는 설명 없이도 바로 이해되었습니다. 데이터의 구조가 한눈에 보였으니까요.
VisiCalc의 수식 체계는 기본적으로 상대 셀 참조를 사용했습니다. 예를 들어 C1의 수식이 A1과 B1을 참조하면, C2로 복사했을 때 자동으로 A2와 B2를 참조합니다. 대부분의 스프레드시트 수식이 행이나 열을 따라 같은 패턴을 따른다는 관찰에서 나온 설계 결정입니다. 모델을 만드는 작업량을 크게 줄여 주었습니다. 수식을 한 번 정의하고 열 아래로 복사하면 끝이었습니다.
32KB밖에 없었기 때문에 VisiCalc은 거대한 격자를 메모리에 담을 수 없었습니다. 해결책은 데이터가 들어 있는 칸만 저장하는 것이었습니다. 빈 칸은 메모리를 전혀 차지하지 않았죠. 이런 희소(sparse) 표현은 지금의 스프레드시트도 여전히 쓰는 방식입니다. Excel의 이론상 격자는 170억 칸인데, 이를 모두 밀집(dense) 방식으로 저장하면 페타바이트가 필요할 겁니다. VisiCalc을 희소 저장으로 몰아간 제약은 메모리 크기와 상관없이 구조적으로 옳은 결정이었던 셈입니다.
'킬러 앱' 패턴
VisiCalc은 이후 기술 업계를 계속 움직인 패턴을 확립했습니다. 소프트웨어가 엄청난 가치를 만들어 내서, 그것을 돌리는 데 필요한 하드웨어 비용을 정당화하는 구조입니다.
- VisiCalc → Apple II. Apple II는 1,300~2,700달러(오늘날 화폐가치로 약 5,000~10,000달러)였습니다. VisiCalc은 100달러였죠. 기업들은 100달러짜리 소프트웨어를 돌리려고 2,000달러짜리 컴퓨터를 샀습니다. 생산성 향상으로 몇 주 만에 본전을 뽑을 수 있었기 때문입니다.
- Lotus 1-2-3 → IBM PC. VisiCalc의 IBM PC 이식이 늦어지자, Lotus 1-2-3이 그 빈자리를 채우며 IBM 호환 기종의 킬러 앱이 되었습니다. Lotus는 IBM PC 하드웨어에 맞춰 특별히 설계되어, 비슷한 작업에서 VisiCalc보다 빠르게 돌아갔습니다.
- PageMaker → Macintosh + LaserWriter. 데스크톱 출판은 Macintosh의 높은 가격을 정당화했습니다. Mac과 LaserWriter 조합은 7,000달러가 넘었지만, 5만 달러짜리 조판 장비를 대체했습니다.
- 웹 브라우저 → 인터넷 연결. Netscape Navigator는 기술에 익숙하지 않은 사용자에게도 인터넷을 쓸모 있게 만들었고, 그 결과 ISP 구독과 네트워크 인프라에 대한 수요를 이끌었습니다.
- ChatGPT → GPU 클러스터. 현재의 AI 붐은 NVIDIA 하드웨어에 대한 전례 없는 수요를 만들고 있습니다. AI 애플리케이션이 그 비용을 정당화할 만큼 가치를 만들어 내기 때문에, 기업들은 GPU 인프라에 수십억 달러를 쓰고 있습니다.
이 패턴은 놀라울 만큼 일관됩니다. 누군가 하드웨어를 호기심 대상에서 필수품으로 바꾸는 소프트웨어를 만들면, 하드웨어 제조사가 엄청난 이익을 얻습니다. Apple의 사업은 사실상 VisiCalc이 세웠다고 해도 과언이 아닙니다. 그러나 소프트웨어 제작자는 가치의 적은 몫만 가져가는 경우가 많습니다. Dan Bricklin과 Bob Frankston의 회사 Software Arts는 결국 자기들의 출판사에 적대적 인수를 당했습니다. 그들이 발명한 스프레드시트는 매년 수조 달러의 경제적 가치를 만들어 내지만, 그들이 받은 몫은 극히 적었습니다.
스프레드시트가 살아남은 이유
VisiCalc은 Lotus 1-2-3에 밀렸고, Lotus 1-2-3은 Excel에 밀렸으며, Excel은 이제 Google 스프레드시트의 도전을 받고 있습니다. 그런데도 값과 수식을 담고 자동 재계산되는 격자라는 핵심 개념은 45년 동안 바뀌지 않았습니다. 왜일까요?
스프레드시트는 아마도 지금까지 만들어진 가장 성공적인 프로그래밍 환경일 겁니다. 비개발자들이 쓰는 수식은 구조적으로 보면 함수형 프로그래밍 언어와 같습니다. 수식은 부작용이 없는 순수 함수이고, 셀 참조는 항상 현재 값을 돌려주는 참조 투명성을 가지며, 입력이 바뀌면 변화가 자동으로 전파되는 반응형 업데이트를 합니다. Excel 사용자가 1년 동안 작성하는 '코드'의 양은 전문 프로그래머 전체보다 많을 겁니다.
VisiCalc이 제대로 짚었고 이후 모든 후속작이 지켜 온 핵심 통찰은 즉각적인 피드백입니다. 값을 바꾸면 결과가 바로 보입니다. 컴파일 단계도, 배포도, 기다림도 없습니다. 이렇게 촘촘한 피드백 루프 덕분에 스프레드시트는 탐색적 데이터 작업, 빠른 계산, 즉흥적 분석에 자연스러운 도구가 되었습니다. 스프레드시트를 '제대로 된' 소프트웨어(전용 예산 도구, 비즈니스 인텔리전스 플랫폼, 맞춤형 애플리케이션)로 대체하려는 시도는 모두 한 가지 사실을 넘어야 했습니다. 스프레드시트는 3초 만에 작업을 시작하게 해 준다는 것입니다.
VisiCalc 재구성하기
VisiCalc을 원본 소스 코드로 재구성한 최근 프로젝트들은 극한의 제약 속에서 소프트웨어가 어떻게 만들어졌는지를 흥미롭게 보여 줍니다. 원래 Apple II 버전은 전부 6502 어셈블리 언어로 작성되었습니다. 32KB에 들어가면서도 대화형 재계산에 충분히 빠른 고수준 언어는 현실적으로 없었습니다.
재구성 코드를 읽어 보면, 1MHz 프로세서에서 프로그램이 반응성 있게 느껴지도록 얼마나 많은 기교가 들어갔는지 드러납니다. 재계산 엔진은 보이는 칸을 우선했습니다. 화면에 표시된 칸을 먼저 다시 계산해서 사용자에게 즉각적인 시각적 피드백을 주고, 의존하는 칸들은 백그라운드에서 갱신했습니다. 이런 인지적 최적화 덕분에 VisiCalc은 실제보다 빠르게 느껴졌습니다.
셀 저장 구조는 열 기준으로 정렬된 연결 리스트를 사용했고, 각 열 안에서는 행 순서로 정렬했습니다. 이 덕분에 열 단위 작업(열 합계, 열 삽입)이 빨랐습니다. 재무 스프레드시트는 보통 열에 시간 구간을, 행에 항목 분류를 두는 방식으로 구성된다는 가정을 반영한 것입니다. 이 자료구조는 회계사가 어떻게 생각하는지에 대한 도메인 가정을 코드에 담은 셈입니다.
메모리 관리는 전부 수동이었습니다. VisiCalc은 자체 힙을 관리하며 압축(compaction)까지 했습니다. 셀을 삭제하면 남은 셀 저장소를 압축해서 메모리를 되찾았죠. 사실상 어셈블리로 작성된 수동 가비지 컬렉터이며, 메모리 보호 기능도 없는 시스템 위에서 돌아갔습니다. 그것이 안정적으로 동작했다는 사실 자체가 엔지니어링 품질의 증거입니다.
현대 소프트웨어를 위한 교훈
풍부한 컴퓨팅 자원이 넘치는 시대에는 간과하기 쉬운, VisiCalc 성공의 교훈들이 있습니다.
- 실제 사람들의 실제 문제를 해결하라. VisiCalc은 시장을 새로 만든 것이 아니라, 수백만 명이 이미 수작업으로 하던 업무 흐름을 자동화했습니다. 최고의 소프트웨어는 능력을 만들기보다 지루한 반복 작업을 없앱니다. 회계사들은 이미 재무 모델을 만들 줄 알았습니다. VisiCalc은 그 작업을 100배 빠르게 만들었을 뿐입니다.
- 제약이 좋은 설계를 이끈다. 32KB 메모리 제한은 희소 저장을 강제했습니다. 40열 화면은 격자 인터페이스를 강제했습니다. 1MHz CPU는 인지적 최적화 기법을 강제했습니다. 각 제약은 어떤 규모에서도 옳았던 설계 결정으로 이어졌습니다.
- 피드백 속도는 기능이다. VisiCalc을 매력적으로 만든 즉각적인 재계산 원리는 현대 개발 도구의 핫 리로딩, 디자인 도구의 실시간 미리보기, REPL 기반 개발과 같은 원리입니다. 변경을 하고 결과를 보기까지의 시간은 사람들이 작업을 생각하는 방식에 직접적인 영향을 줍니다.
- 발명가가 가치를 가져가는 경우는 드물다. Bricklin과 Frankston은 스프레드시트를 발명했지만, 그에 비례하는 재정적 이익은 얻지 못했습니다. 이 패턴은 반복됩니다. 혁신적인 소프트웨어를 만든 사람들은 대개 하드웨어 제조사, 플랫폼 소유자, 또는 유통을 장악한 후발 주자에게 가치가 흘러가는 것을 봅니다. 무언가를 만들기 전에 비즈니스 모델을 먼저 고민할 가치가 있습니다.
VisiCalc이 나온 지 45년이 지났지만, 우리는 여전히 그것이 만든 세계에 살고 있습니다. 스프레드시트는 여전히 즉흥적인 데이터 작업의 기본 도구입니다. '킬러 앱' 패턴도 여전히 하드웨어 판매를 이끕니다. 다만 VisiCalc을 ChatGPT로, Apple II를 NVIDIA H100으로 바꿔 읽으면 됩니다. 그리고 소프트웨어가 하드웨어보다 더 큰 가치를 만든다는 원칙은, 100달러짜리 프로그램이 2,000달러짜리 컴퓨터를 호기심 대상에서 업무의 필수품으로 바꾸던 그때만큼이나 지금도 유효합니다.


