我与IT三十年:1998,蝴蝶落到表单上
1997 年那只在浏览器里飞来飞去的蝴蝶到了 1998 年突然落到了表单上。这句话听起来有点扫兴。蝴蝶多轻。页面会动坐标会变浏览器像刚学会走路的小孩笨拙但兴奋。表单则很重。姓名、部门、编号、日期、金额、状态、审核人、备注、打印、查询、统计。它们一点也不浪漫甚至有点枯燥。可真正让软件进入多数公司日常的往往不是蝴蝶而是表单。1998 年我开始做 MIS 开发。MIS 是 Management Information System管理信息系统。今天这个词已经有点旧了甚至显得土。但在那个年代它代表的是一家公司、一所学校、一个机关、一个业务部门开始认真把纸面流程搬进电脑。那是软件落地的另一面。浏览器告诉我们世界正在变大MIS 告诉我们世界变大以后办公室里的每一张表也要跟着变。企业信息化最早不是酷技术很多技术史喜欢写大事件浏览器大战、搜索引擎、开源运动、操作系统、芯片、AI。那些当然重要。但对大量程序员来说真正开始工作后首先遇到的常常不是改变世界的平台而是一个又一个业务系统。它们可能叫人事管理系统、库存管理系统、财务管理系统、客户资料管理系统、设备管理系统、教学管理系统。名字听起来都不性感但每个系统背后都有一套真实的组织流程。谁能录入谁能修改谁能审核数据错了怎么办报表按什么口径统计打印格式为什么和原来的纸质单据不一样这些问题放在今天仍然是企业软件的核心问题。只不过今天我们把它们包装成 SaaS、BPM、ERP、CRM、低代码、数字化转型。1998 年的时候它们更多时候就叫 MIS。做 MIS 的第一课是承认用户不关心你的技术有多漂亮。用户关心的是这张单子能不能录进去明天领导要的报表能不能打出来上个月的数据能不能查到权限有没有弄错系统坏了会不会影响他们下班。这和 1997 年那只蝴蝶完全不同。蝴蝶飞得不够顺最多不好看。企业系统错一条数据可能就有人真着急。Delphi 为什么让人怀念写到 1998 年就绕不开 Delphi。Delphi 不是 1998 年才出现的Delphi 1 早在 1995 年就已经发布。到 1998 年前后Delphi 3、Delphi 4 这些版本已经成为很多 Windows 桌面数据库应用开发者非常熟悉的工具。我后来很长一段时间都觉得那个年代最好用的 IDE 是 Delphi。这不是情怀滤镜。Delphi 的好用是具体的。打开 IDE拖一个按钮拖一个输入框双击事件写几行 Object Pascal连上数据库放一个数据表格控件一个能跑的窗口应用很快就出来了。对做 MIS 的程序员来说这种效率非常直接。更重要的是它让程序员的思维方式变了。在更底层的年代你首先想的是文件、内存、函数、编译、链接。到了 Delphi 这种工具里你开始想窗口、控件、事件、数据源、数据集、表单、报表。程序不再只是代码执行流程它开始长得像用户正在使用的东西。企业信息化最朴素的一步把纸质表单、审批流程和报表变成数据库里的记录。图为按年代氛围生成的示意图。Borland 这家公司也值得记一笔。很多年轻程序员可能只听过 Microsoft、Oracle、Sun、Netscape却不一定对 Borland 有感觉。但对 1990 年代和 2000 年代初的一批开发者来说Borland 是非常有存在感的名字。Turbo Pascal、Borland C、Delphi、CBuilder这些工具陪过很多人入门也陪很多人做过真实项目。Borland 的工具有一种工程师友好感。它不像某些企业级工具那样笨重也不像后来很多 Web 工具那样需要一堆脚手架和配置。它给你的感觉是我知道你要做程序我尽量让这件事直接一点。Delphi 尤其如此。它并不完美也有自己的生态、版本、组件和部署问题。但在那个 Windows 桌面应用和数据库应用大量增长的年代它确实给了程序员一种很强的生产力。表单背后是组织刚开始做 MIS很容易把问题看简单。不就是增删改查吗建几张表写几个窗口做几个查询打印几张报表。代码复杂度好像也不高。和汇编、图形学、网络协议比起来这些东西似乎都很“业务”。后来才知道业务系统的难不在算法而在现实。现实里的数据不干净。一个部门叫法可能有好几种一个人会调岗一个编号会沿用旧规则一个字段本来设计成必填结果历史数据里大量为空。现实里的流程也不稳定。今天是三级审批明天变两级这个领导出差审批要代理月底要临时加一张表年底统计口径又变了。技术系统最怕的不是复杂而是含混。MIS 系统恰恰要处理大量含混的东西。纸面流程里很多规则靠人脑补靠一句话解释靠老员工经验。变成软件以后你必须把它写成字段、状态、权限、校验和流程。这会逼着组织照镜子。原来谁都能改的数据现在要不要限制原来口头说一下就行的审批现在要不要留痕原来每个部门各算各的指标现在统计口径到底听谁的这些问题最后都会落到程序员面前。你以为自己在写表单其实你在帮一个组织整理自己的规则。这也是企业软件最有意思、也最折磨人的地方。它表面上是技术项目内里是组织项目。数据库让软件开始有记忆1998 年做 MIS数据库是核心。没有数据库表单只是临时输入。数据存下来系统才有记忆。能查询、能统计、能追溯、能对账、能打印历史报表软件才真正参与管理。那时很多项目使用关系数据库。表结构设计、主键、外键、索引、事务、查询语句这些东西会慢慢进入日常。你会开始理解字段不是随便加的类型不是随便选的索引不是越多越好报表慢不一定是界面问题可能是查询写得差也可能是表结构一开始就没想清楚。从这时候开始程序员很容易形成一种本能先看数据。界面可以重做流程可以调整代码可以重构但数据一旦错了就麻烦得多。企业系统最宝贵的不是窗口也不是按钮而是多年积累下来的业务数据。这句话后来在不同系统里不断被验证。做银行系统时如此做互联网平台时如此做大数据平台时如此今天做 AI 应用时仍然如此。模型、界面、算法都会变数据质量始终决定系统能走多远。1998 年的 MIS 系统用今天眼光看很朴素但它让我很早就明白软件真正变重要是从它开始承载数据开始的。Windows 98 和办公室电脑1998 年Windows 98 发布。这对个人电脑和办公室电脑来说是一个非常有年代感的节点。那时的办公桌上越来越多地出现米黄色主机、CRT 显示器、键盘、鼠标、打印机。电脑不再只是少数技术人员的设备也开始进入普通部门。操作系统、Office、数据库客户端、MIS 系统、打印机驱动、网络邻居这些东西一起构成了当时办公室的信息化体验。这种体验一点也不丝滑。驱动会冲突打印机会卡纸系统会蓝屏网络共享会找不到数据库连接会失败用户会把窗口关掉以后说系统没了。今天我们习惯了云服务和浏览器很多客户端问题都被藏到了服务端和网页里。可在当年桌面环境本身就是软件交付的一部分。这也是 Delphi 这类工具的重要性所在。它生成的是用户眼前能打开的 Windows 程序。这个程序有菜单、有工具栏、有表格、有按钮、有打印预览。对那个年代的用户来说这就是“软件”的样子。Web 当然在成长但大量企业内部系统仍然是桌面应用。蝴蝶在浏览器里飞表单在 Windows 桌面上落地。1998 年的另一条线互联网入口正在成形有意思的是1998 年不只有 MIS、Windows 98 和办公室电脑。那一年Google 成立。如果站在今天回看这当然是超级大事件。但站在当年一个搜索引擎创业公司和我们正在做的企业系统好像离得很远。一个面向全球网页一个面向单位内部流程一个处理链接和排名一个处理字段和报表一个后来改变互联网入口一个当时只是在办公室里让人少填几张纸。但它们其实都在处理同一件事信息如何被组织。MIS 把组织内部的信息结构化Google 把公开网页的信息排序。前者关心权限、流程、报表后者关心链接、相关性、入口。一个向内一个向外。它们共同说明1998 年的软件世界已经不只是“让机器执行命令”而是开始围绕信息本身建立秩序。同一年XML 1.0 成为 W3C 推荐标准开源运动也以更明确的方式出现。信息交换、标准、协作、开放这些词都在那一年变得更有重量。当时未必看得清。你坐在办公室里改一个表单字段可能不会想到搜索引擎会改变世界也不会想到开源会重塑整个软件产业。你只知道这个字段今天必须上线明天用户要用。技术史的大事总是和日常工作并行发生。很多时候我们不是站在时代浪潮上而是在浪潮旁边修一个按钮。从小程序到业务系统1996 年我还在回望 386、PDP-11 和汇编。1997 年我写过那只会飞的 JavaScript 蝴蝶。到了 1998 年事情突然变得具体字段、表、报表、权限、打印、用户。这三年连起来看很像程序员成长的三个台阶。第一步你理解机器。第二步你理解界面。第三步你开始理解业务。理解机器让你知道程序不是魔法。理解界面让你知道用户看到的东西很重要。理解业务则让你知道软件最终要进入现实世界和人的流程、组织的规则、历史数据、责任边界纠缠在一起。MIS 给我的训练就是第三步。它不酷但扎实。它不像浏览器动画那样让人兴奋也不像底层开发那样有技术纯度。它更像一门手艺把现实里的混乱尽量整理成用户能用、数据能存、流程能跑、出了问题能查的系统。后来我做过很多平台级、互联网级、数据级的系统但这种训练一直有用。因为再大的系统最后也会落到某些很朴素的问题上数据从哪里来谁能改错了怎么查用户为什么这么用报表为什么不一致系统坏了谁负责。这些问题1998 年的 MIS 已经问过一遍。下一年表单连上了银行前置机1998 年的企业系统多数时候还在办公室内部转。到了 1999 年我会进入另一个更硬的场景给银行开发使用 SCO UNIX 做前置机真正在生产中使用 socket 编程。那就不是表单和报表的问题了。那是连接、协议、稳定性、生产环境和金融系统。如果说 1998 年让我看到软件如何整理组织内部的信息那么 1999 年会让我看到软件如何在真实交易和生产链路里承担责任。下一篇就写银行前置机和真正的 socket。1998 年 IT 大事记Google 成立。1998 年 9 月Google 公司成立。它最初只是搜索引擎创业公司后来成为互联网最重要的入口之一。它改变的不只是搜索也包括广告、数据中心、分布式系统、浏览器、移动操作系统和后来的 AI 基础设施。Windows 98 发布。Microsoft 在 1998 年发布 Windows 98。它延续 Windows 95 的桌面体验并进一步把 Internet Explorer 等互联网能力整合进个人电脑使用场景。对很多办公室用户来说Windows 98 是那个年代电脑普及记忆的一部分。XML 1.0 成为 W3C 推荐标准。XML 在 1998 年 2 月成为 W3C Recommendation。它一度被寄予厚望成为数据交换、配置文件、文档格式和企业系统集成的重要基础。后来 JSON 更轻量地占据了很多 Web 场景但 XML 在企业软件和标准化接口中的影响非常深。Open Source Initiative 成立。1998 年Open Source Initiative 出现“开源”这个说法开始以更商业友好的方式传播。它和自由软件运动有不同语气却共同推动了后来 Linux、Apache、MySQL、Python、GitHub 以及整个云原生生态。Netscape 宣布开放浏览器源码。1998 年 Netscape 宣布开放 Communicator 源码Mozilla 项目由此开始。虽然早期过程并不轻松但这条线后来会走向 Firefox也会成为浏览器开放生态的重要一环。iMac G3 发布。Apple 在 1998 年推出 iMac G3。它用半透明彩色外壳重新定义了个人电脑的消费级形象也帮助 Apple 走出低谷。它不是企业 MIS 的主角却是 1998 年个人电脑审美转向的标志。PayPal 前身 Confinity 成立。Confinity 在 1998 年成立后来与 X.com 合并并发展为 PayPal。它代表了互联网支付和线上交易基础设施的早期探索也预示着互联网不只是看网页和发邮件还会进入真实资金流转。VMware 成立。VMware 在 1998 年成立。虚拟化后来会深刻改变服务器利用率、开发测试环境、数据中心管理并为云计算铺路。对当时普通程序员来说它还不是日常工具但它开启的方向非常关键。腾讯成立。1998 年 11 月腾讯在深圳成立。它后来从即时通讯走向社交、游戏、内容、支付、云和企业服务成为中国互联网最重要的平台公司之一。1998 年看起来只是互联网创业早期的一粒种子。京东早期公司成立。京东的早期公司可追溯到 1998 年后来从线下零售逐步进入线上零售和电商基础设施。它提醒我们很多后来的互联网大厂一开始并不一定以今天最熟悉的形态出现。Apple iMac G3。图片来源Wikimedia Commons。参考资料Google公司历史MicrosoftWindows 98 发布背景W3CExtensible Markup Language XML 1.0 RecommendationOpen Source InitiativeHistory of the OSIMozillaMozilla 项目历史AppleiMac G3 发布背景PayPal 公司历史VMware 公司历史Tencent公司历史JD.comOur HistoryWikimedia CommonsApple iMac G3 图片