行业AI实战手册来了!洞察金融风险、辅助诊疗、检测缺陷、体验AI课堂,尽在AI...... 了解详情
写点什么

这么多年,我在 WPS 折腾些什么?

2021 年 7 月 31 日

这么多年,我在WPS折腾些什么?

2021 年是金山全面转型移动互联网的第十年。7 月初,金山软件董事长雷军在一封公开信中说,作为一家从通用软件转型而来的老牌技术公司,金山在移动互联网大潮涌起时毅然扔掉枷锁,不畏挑战,最终实现金山办公、游戏业务、金山云三大业务版块成功布局移动互联网。其中,金山办公的背后,是几代 WPS 人书写了一个坚持梦想并最终取得胜利的励志故事。


近日,InfoQ 有幸走进金山办公位于广东珠海的办公园区,参加了一场规模不大、气氛却很活跃友好的技术开放日活动。与我们常见的技术开放日有所不同的是,金山办公特地挪了半天时间,邀请了几位资历深厚的程序员大佬,娓娓道来过去 30 多年来金山的一些人和事,也让我们开始了解到这些程序员甘于“囿于”此地多年的原因。


以下内容整理自金山技术开放日多位嘉宾的分享:

不能只单纯盯着收入规模,而是能不能再活 30 年

一个为 IT 圈所熟知的故事是:1988 年 5 月至 1989 年 9 月,24 岁的求伯君在深圳的旅馆里独自写出了 WPS 1.0,用十多万行代码揭开了中文排版、中文办公时代的帷幕。


但 WPS 的发展并非一帆风顺,2002 年金山决定将 WPS 代码全部推倒重写,3 年后发布 WPS 2005 版并宣布个人版免费;2011 年是中国智能手机元年,在雷军的一声号令之下,金山办公宣布全力投入移动互联网转型,WPS 发布移动版,也因移动互联网再度获得新生;2018 年,金山办公发布 WPS Office 2019、金山文档等新品,让用户随时随地拿起手边设备就能工作;2019 年,WPS for Mac 正式发布,填补了 WPS Office 在苹果生态的最后一块空白。


当时金山办公转向移动互联网战略也面临着巨大压力,据金山办公高级副总裁庄湧讲述, “当时内部争议很大。因为移动这个事,我们也没经验。但是当时内部流行的一句话是,‘理解要执行,不理解也要执行,执行的过程中就会有理解’。于是我们迅速调整心态,有条件也要上,没有条件创造条件也要上。”



今天要是把多年来的最终成果做个简单量化,这背后便是一代又一代的程序员在一个个小格子间里敲出了 5000 万行代码,敲出了承载 4.94 亿月活量的 WPS


金山办公的最新核心产品战略是“多屏、内容、云、AI、协作”。庄湧称,金山办公的业务规模过去几年都在保持高增长,但内部更注重的是能不能持续健康地走下去,就像雷军在金山集团 30 周年会上所说,更看重的是整个金山能不能再活 30 年。目前,金山办公是科创板里技术研发投入比例最高的几家企业之一。

WPS 程序员的特质:不断“折腾”,精益求精

庄湧表示,金山办公的技术人员具备一些独特特质,比如喜爱不断“折腾”、精益求精等。他还提出希望技术人员能够保持乐观坚韧的优良传统,具备“浪漫的革命主义情怀”,对外要紧跟时代发展,对内不要“重复造轮子”。


具体来说,金山一代代传承下来的优秀程序员在写代码之前都会有多个维度的思考,从深度性到通用性,再到可维护性以及可扩展性


2002 年那次 WPS 代码推翻重写,内核引擎也同时进行了重塑。金山办公重做的三大办公软件引擎——文字排版引擎、表格计算引擎、演示动画引擎,都印证了上述四个思考维度。排版引擎难度最大的地方是要把方方面面的情况都考虑进去,如果考虑不够清楚而只做了表面或临时性的工作,结果反而会得不偿失,甚至导致返工。


通用性方面,一开始演示团队做的图形引擎,金山内部术语叫对象引擎,这套图形(所有的方框、图片甚至艺术字等等)不单单要在演示中用,也要能在文字、表格里使用,所以如果只是单纯定位在或只考虑到演示能接入,而不考虑一些通用性问题,很有可能在文字里面、特别是当要嵌入到排版引擎中,又带来一些新的问题。


可维护的必要性很显而易见,企业每年都有一批新鲜血液注入,而 WPS 已经有 5000 多万行代码的累积,如果在做的过程中不好好地把模块、架构等梳理清楚,“新人”进来就会像看到乱七八糟的电线图,一头雾水,没法做维护工作。


而可扩展性则更进一步,以存盘文件的格式为例,这就非常考验架构未来是否可扩展。很多时候,每个用户安装的 Office 的版本新旧不同,如果存盘文件格式考虑不周到,就可能导致很差的用户体验。比如当用旧版本的 Office 打开新版本存的某个文件的时候,且不说旧版本的 Office 可能不认识这个文件,还有可能会丢失数据,处理不好甚至还会崩溃。“所以不单单要做到当老版本打开新版本的文件,虽然不认识新加的功能、存下来的数据,但是绝不能让它丢掉,在继续编辑的过程中还是要能保持着新版本存的数据不丢失,这非常考验我们设计架构的功底,当然这个过程中我们也借鉴了微软 Office 存盘数据的架构。”庄湧介绍道。


随着金山办公全球化布局的推进,每一位技术人员在写代码的过程中,不单单要考虑中文的排版布局,每一行代码也要考虑多语言、多地的情况,包括阿拉伯文(阿拉伯文的阅读顺序是从右到左,与其他语言相反)。以上种种要素整合在一起,对每一位程序员的功底要求非常高,每一个维度都需要长时间的投入。


久而久之,不断“折腾”、精益求精便成了 WPS 程序员的重要特性。庄湧称,金山办公内部也会有好多具备这些特性的典型的新一代程序员,比如有一位程序员他自己的本职工作做完了,但是在下班之后,偶尔还会去翻看原来的老代码,看看有没有可以进一步优化的地方。随着代码量不断增加,有时候会发现好多地方有重复性,那么是不是可以把重复的东西抽象出来共用一个模块,这是非常值得赞赏的行为。


由于用户体量大、数据量也大,金山办公的程序员也特别注重的产品的性能和安全维护。


“本身我们做的这些事情都是很长久的,需要有耐心,没有耐心稳固下来的话,往往也走不下去。我们以前叫‘浪漫的革命主义情怀’,耐得住寂寞,顶得住诱惑,特别在 2000 年那段时间,那时候收入、规模也没有起来,如果没有坚强的革命主义情怀,我们这个团队早就散了,且不说外面公司的诱惑,整个金山集团内像游戏业务,只要某款游戏成为爆品,收入规模都是非常好的,我们的子公司相互之间也都看得到,所以如果没有这份情怀在的话,没有带着这份情怀做 Office 产品、做这份事业的话,寂寞也耐不住,诱惑也顶不住,要走的人早就走了。”庄湧总结道。

金山办公的那些“行话”

与此同时,在技术开放日这天,四代 WPS 核心程序员相继对 WPS 在 PC 时代、移动时代、云端时代以及 AI 时代的重要发展节点进行了梳理。


PC 时代绝地重生

2003 年加入金山,曾深度参与 WPS PC 时代重要版本研发的金山办公高级专家朱熠锷,以“V6”、“绝地重生”、“兼容”、“轻量”这四个关键词概括了 WPS PC 时代。据他介绍,V6 是 WPS2005 的内部研发代号,也就是代码全部推翻重写的那次。


当时的市场大趋势是个人 PC 的操作系统逐渐向 Windows 平台迁移,WPS 在这个过程中面临非常大的压力,因为微软的 Office 经过多年的推广已经变成了市场主流和行业标准,WPS 之前的架构在兼容性上面临很大的挑战。因此 2002 年 V6 立项的时候就是以推倒重来的心态来做,即把之前的代码全部废掉,从 0 开始,三年时间写了数百万行代码,以一个全新的架构来兼容微软办公软件的文件格式。2005 年,新的 WPS 版本发布,个人版开放下载,三个月之内下载量突破 3800 万次,整体来看是很不错的成绩,所以这个版本可以看作是 WPS 这条产品线的“绝地重生”。


V6 的一个主要目标在于兼容微软办公软件的文件格式,因为包括政府和企业在内的很多客户,都已经在用微软的 Office 制作文档,要保证他们之前的文档资产能在 WPS 很好地打开、显示和编辑。所以兼容这块对微软的文件格式做了相当深入的分析,最后达到的兼容效果也非常不错,以文字排版为例,在大多数样张上基本可以做到一字不差。


轻量,也是 V6 的一个项目目标,之前的 WPS 发展了很多年,会有一些历史上的包袱,在 2005 这个版本里,因为采用了全新的架构,从头开始写,所以当时在模块化、分层、接口的抽象、模块的复用上做了相当多的工作,最后这个版本的安装包只有 16MB。在当时网速并不快的环境下,安装包的大小对于普通用户来说是蛮关键的考虑因素。

移动时代弯道超车

2003 年加入金山,先后经历过桌面端 WPS2005 发布、2011 年移动版研发的黄嘉宁,如今是金山办公高级总监。据他讲述,2011 年,当时微软还没在移动市场出手,手机上没有几款可以使用的办公文档类 App,在要不要跟进移动互联网这件事上,是“雷总(雷军)一脚把我们踹进了移动互联网的门”。


当时的移动设备性能比较弱、屏幕小,怎么能在这些不利条件下让一个办公软件展现出来以及跑起来,这是一个比较大的挑战。


以前做 PC 只有 Windows,后来做移动版设备种类就多了很多,不同的手机品牌下各产品有不同的屏幕分辨率,还有系统方面,虽然基本是安卓或 iOS,但每个手机厂商自己定制的手机系统都有不同的表现,WPS 要在这上面适配非常多的机器。


要超车,速度必须要快。PC 时代桌面版一般是每月升级一个更新包,到了移动时代,WPS 团队更新的频率甚至做到了以周为单位。对于一个千万行级别代码量的产品来说,当时要做到如此快的迭代速度挑战极大,在研发质量和测试的细致性上对大家提出更高的要求。


总的来说,由于金山办公在移动赛道上快速推出了自家的版本,且从这么多年来在 App Store 和 Google Play 的下载量、市场占有率上看,WPS 移动版广受用户认可,可以说是实现了“弯道超车”。

云端一体

金山办公高级总监黄传通于 2009 年加入金山,最初参与了第一代金山快盘的研发,后来参与云文档的研发,现在在云平台负责 WPS 全球云服务的推广与研发。他通过“10087”、“云端一体”、“1 亿”这三个关键词分享了他眼中金山办公云时代的几个里程碑事件。


“2013 年,WPS 云账号系统马上要发布的那天,我跟我们的产品经理 yeppy 聊账号系统的 ID 要从哪里开始算起的问题。后来想到要不致敬一下 10086,当时就定了把 10087 开始作为 WPS 第一个云账号系统的起始 ID,那天晚上账号系统上线之后我本人就去注册了一个账号,所以我自己的账号就是第一个 WPS 云账号,这意味着 WPS 云账号体系从 0 到 1、从到软件时代步入到云时代。”黄传通回顾道。


当金山办公 2013 年开始把云作为后续发展的核心战略之后,要实现的目标是多屏、多设备之间的文件存储和文件打通,也就是“云端一体”。黄传通进一步解释道,“快盘是我们的前身,在快盘之后我们就用了云端一体,把云的能力完完全全地嵌入到所有端上,只要在 WPS 上登录了账号系统,你的文件就能在云端看得到,不管是换设备、换屏幕,还是从移动端换到 PC 端。”


云端传输需要做到“瞬间”,只要一端传完马上就可以在另一个设备端上看到,这被称之为“文档的漫游功能”。黄传通直言,“做云”最大的难点在于规模,现在整个 WPS 月活已经达到 4.9 亿,对比一下互联网行业巨头微信,其全球月活用户是 12 亿,而整个互联网能达到几亿级月活的产品“十个手指能数得完”。金山办公在 2020 年文件量就已经存到了 100 多 P,到今天已经超过 150P 了,所以主要挑战在于大数据上的处理、存储与传输。

AI 时代轻松办公

“简单创作、轻松表达、实现价值的连接”,这是金山办公的企业使命 slogan。近些年 AI 技术飞速发展,并应用于各行各业,办公领域自然不在话下。2017 年,金山办公成立了 AI 中台。


轻松办公,是金山办公在 AI 时代要实现的目标。那么,怎么才算轻松办公?金山办公副总裁、AI 中台负责人姚冬给出的答案是,提升用户的效率和体验。


姚冬举例道,“一个成熟的办公软件应该学会自己做 PPT”,让办公人群更多的心思花在分享干货、分享实实在在的内容,降低做美化、排版、布局、配色的心智负担,这相当于提高了效率。


目前,WPS 围绕办公领域开发了近 100 项 AI 能力,涵盖全文翻译、文档校对、智能写作、PPT 美化、数据分析等多项应用。


在本次技术开放日上,金山办公发布了一款人工智能深度学习推理框架KSAI-lite。据悉,KSAI-lite 在立项时确立了四个目标:通用、高性能、轻量和专业。在后续的技术实践中,KSAI-lite 团队围绕这四个目标进行了技术方案的设计和研发,在多框架支持、适配、性能、功耗、内存等方面都进行了专门优化。


此外,金山办公当天还同步发布了 KSAI OCR 开源模型。OCR 模型以及库文件大小不超过 9MB,可轻量化部署,该模型在文本检测、文本分类和文本识别上都表现出了较好的性能。

“我为什么加入金山办公?”


从薪酬竞争力来看,金山办公或许没有太大优势,但一直以来,金山办公都能吸引到一些不错的人才加盟。


朱熠锷认为,原因可能有二:第一是求伯君、雷军等人在程序员的心目中有一定影响力,某种“英雄主义”在驱动着大家选择追随他们做事。第二是成长性,办公软件算是非常复杂的通用软件品类,在软件工程规模上有比较高的门槛。WPS 产品做了这么多年,国内估计找不到第二个产品有如此深的积累,所以复杂度也极高。“举个简单的例子,很多人都用 WPS 文字或用微软的 Word,但你们都写过文章、调过格式,我估计只会用到其中功能的 5%-10%,随便打开一个字体对话框,里面的属性选择非常多,段落对话框就有另外一大片,各种各样的组合和复杂规则,只有做了以后才会知道,这在软件工程上其实是蛮大的挑战,我们的研发人经过了这样的历练,在能力上可以达到不错的水平。”


就像前面提到过的金山办公人的特质——不断“折腾”,精益求精。黄嘉宁称除了文字排版引擎、表格技术引擎、演示动画引擎的重构,大家也花了几年时间来重新打造一套更好的内核代码,更轻便、更快速、更有效率。


而重构这件事在内部要如何推动?黄嘉宁分享了一位老程序员的故事。WPS2005 年发布之后,bug 实在太多,有一位同事觉得改不动了,随后离职。半年后,这位同事拿着自己新写的代码,重新入职 WPS,他带来了一个新的框架,而现在那个框架还在,解决了以前挺多没法解决的问题。黄嘉宁称,这个案例比较“极端”,但公司其实非常鼓励大家平时抽出时间想想框架的事,试着去搭建框架代码,看是否能改善现有的框架。

写在最后

WPS 在办公软件领域已经有 30 多年的技术积累,尽管金山经历过大起大落,但 WPS 始终未曾被舍弃。战事虽悠长,但金山最擅长的恰恰是长跑。

2021 年 7 月 31 日 23:514037
用户头像
罗燕珊 InfoQ中文站记者

发布了 137 篇内容, 共 49.6 次阅读, 收获喜欢 226 次。

关注

评论 7 条评论

发布
用户头像
"这背后便是一代又一代的程序员在一个个小格子间里敲出了 5000 万行代码",请问老板,能不能把负责弹窗广告的那1000万行代码注释掉?
2021 年 08 月 09 日 12:29
回复
哈哈哈哈,又要免费,又要无广告。是用户的终极体验
2021 年 08 月 10 日 09:57
回复
用户头像
只用office 365, 只有office才能100%还原office文档,即使是openXML的也不例外
2021 年 08 月 03 日 08:50
回复
用户头像
wps的使用体验很棒,大学时代的手机基本都要用wps比word好用多少倍,现在更是wps云化了,还是免费的,安装还是很省心,推荐使用
2021 年 08 月 01 日 11:29
回复
用户头像
快 15 年没用过 WPS 了,现在 WPS 的内嵌“推广”还多不多呢?
2021 年 08 月 01 日 09:04
回复
总得让人有饭吃吧,可以花钱买无推广版本。
2021 年 08 月 02 日 19:54
回复
稳定性很差,用QT做的多平台版本,崩溃是常事,只能继续用word。
2021 年 08 月 03 日 14:40
回复
没有更多了
发现更多内容

也谈Python编码格式

ITCamel

Python 编码格式

一文带你学会AQS和并发工具类的关系

伯阳

AQS java 并发 ReentrantLock 多线程高并发 lock锁

【得物技术】代码覆盖率原理与得物app实践

得物技术

测试 原理 代码 得物技术 覆盖率

9. 细节见真章,Formatter注册中心的设计很讨巧

YourBatman

Converter ConversionService Formatter

我们为什么打比方

石云升

28天写作 确认偏误 打比方

IO和NIO的对比篇

Java架构师迁哥

JavaScript04 - JavaScript语法

桃夭十一里

JavaScript

使用 kubectl-rabbitmq 部署和运维 K8S 上的 RabbitMQ 集群

郭旭东

RabbitMQ kubectl kubectl plugin

区块链2021狂想曲:迎接以技术为名的春天

脑极体

Python列表对象入门

赵开忠

28天写作

详解HDFS3.x新特性-纠删码

五分钟学大数据

hadoop hdfs

这份30天获得40k+星,多次登上榜首的算法宝典,带你刷爆LeetCode

Crud的程序员

程序员 架构 算法

JavaScript05 - JavaScript数据类型

桃夭十一里

JavaScript

超越身边80%的人,其实没有你想象的那么难

架构精进之路

认知提升 成长笔记 七日更 28天写作

APICloud AVM多端开发 |《生鲜电商app开发》项目源码教程

APICloud

前端开发 移动开发 APP开发 APICloud

阿里表哥甩我一份Redis笔记,看完还进不了阿里让我卖豆腐去

互联网架构师小马

Java 数据库 nosql redis 面试

为什么印度不会成为世界工厂?

JiangX

印度 28天写作 世界工厂

在GitHub中向开源项目提交PR的过程

worry

GitHub pull request

Java并发编程实战(4)- 死锁

技术修行者

Java 并发编程 多线程 死锁

JavaScript01 - 基础

桃夭十一里

JavaScript

技术创新是PC市场发展基石,英特尔占据明显领先优势

新闻科技资讯

JavaScript02 - js的引入方式

桃夭十一里

JavaScript

保姆级 tomcat 快速入门

田维常

tomcat源码解读

一文带你学会AQS和并发工具类的关系

比伯

Java 编程 架构 面试 计算机

自动驾驶分级,小白能理解的那种(28天写作 Day8/28)

mtfelix

自动驾驶 28天写作

JavaScript03 - window对象的方法

桃夭十一里

JavaScript

使用nodejs和express搭建http web服务

程序那些事

HTTP nodejs 异步IO 程序那些事 web服务

案例研究之聊聊 QLExpress 源码 (七)

小诚信驿站

聊聊架构 规则引擎 28天写作 QLExpress源码 聊聊源码

Spring Boot 集成Thymeleaf模板引擎

武哥聊编程

Java springboot SpringBoot 2 thymeleaf 28天写作

限时开放!阿里P8大师终于把这份微服务架构与实践第2版PDF分享出来了

云流

Java 编程 程序员 微服务 架构师

[5/28]产品运维保障体系的质量实践

俊毅

MySQL 核心特性与优化

MySQL 核心特性与优化

这么多年,我在WPS折腾些什么?-InfoQ