订阅软件研发RSS CSDN首页> 软件研发

【CTO讲堂】面对世界竞争对手,如何拿到Google PDF开源项目PDFium?

发表于2015-10-20 15:06| 次阅读| 来源CSDN| 0 条评论| 作者蒲婧

摘要:Chrome的PDF渲染引擎组件PDFium初始代码来自全球第二大PDF软件技术提供商Foxit,如何拿下项目的?开发资源有限如何平衡产品开发和客户项目?文化的不同如何影响客户项目及实施方案?本文为Foxit技术副总静楷的分享。

为了帮助IT从业者职业之路拥有更多收获,在诸多C粉的殷切期待下,由CTO俱乐部打造的CTO线上讲堂自登场以来获得大家好评。本期邀请Foxit技术副总静楷带来“面对世界竞争对手,如何拿到Google PDF开源项目PDFium? ”的主题分享。

欢迎加入CTO讲堂微信群与业界大咖零距离沟通,10月23日本期讲堂报名方式拖至文末查看。


分享嘉宾:全球第二大PDF技术提供商Foxit software技术副总 静楷

嘉宾简介:静楷,Foxit software技术副总 ,在美国硅谷15年,先后服务几家公司,在来美国之前,在中国惠普工作。目前在Foxit software管理美国和中国的核心基础技术开发团队,SDK开发团队和售前/售后工程师支持团队。Foxit software是中国人自己创业的软件企业,目前是除Adobe之外的全球第二大PDF软件技术提供商。Google的Chrome和Google Doc中显示PDF技术,以及Amazon Kindle阅读PDF电子书,都是采用了Foxit的技术。公司刚刚在新三板上市,交易代码是832422。静楷大部分时间在美国硅谷,经常出差到北京和福州。拥有计算机软件和工程管理两个硕士学位。

公司简介:福昕软件开发股份有限公司(Foxit Software Incorporated)是全球PDF电子文档核心技术与应用领域的领导厂商,国际PDF标准组织核心成员、中国版式文档OFD标准制定成员。“Foxit”也是中国为数不多的具有全球影响力和竞争力的国际软件知名品牌。

福昕具有完全自主产权的PDF核心技术,提供文档的生成、转换、显示、编辑、搜索、打印、存储、签章、表单、保护、安全分发管理等涵盖文档生命周期的产品技术与解决方案。福昕的核心技术具有跨平台、高效率、安全等优势,产品与服务覆盖桌面、互联网与移动互联网,被广泛应用于各行业的个人、企业、机构的文档应用服务领域。特别是一大批全球知名企业如Google, 微软、亚马逊、英特尔、IBM、三星、索尼、HTC、印象笔记、IKB银行、纳斯达克、摩根大通、腾讯、百度、当当、360等都在使用福昕的授权技术或通用产品,推动了行业解决方案的不断丰富与发展。

以下是10月15日CTO讲堂现场完整速记:

主持人:欢迎嘉宾全球第二大PDF技术提供商Foxit software技术副总静楷(嘉宾目前在硅谷)请您先给大家做一下自我介绍吧。

静楷:大家好。我叫静楷。目前在美国硅谷,已经有15年了。在美国先后服务几家公司,在来美国之前,在中国惠普工作。

目前在Foxit software,国内名叫福昕软件。目前管理美国和中国的核心基础技术开发团队,SDK开发团队和售前/售后工程师支持团队。Foxit software是中国人自己创业的软件企业,目前是除Adobe之外的全球第二大PDF软件技术提供商。Google的Chrome和Google Doc中显示PDF技术,以及Amazon Kindle阅读PDF电子书,都是采用了Foxit的技术。我们的通用PDF reader全球有将近3亿用户。公司刚刚在新三板上市,交易代码是832422。

我在开发团队管理、项目管理、软件工程管理、国际/国内售前项目管理、和项目售后技术支持管理以及PDF国际标准ISO等方面有一些心得,可以和大家一起探讨和交流。

主持人:您是在什么情况下加入了Foxit团队的呢?

静楷:我是3年前加入Foxit。当时刚刚从Zynga离职。在Zynga期间,深深的感受到技术管理对于工程师团队的重要性。大家对Zynga的故事也许已经知道了。

同时也是认识Foxit的执行VP George 和 Foxit CEO Eugene。被他们的专业和专注所吸引。也愿意把自己将近20多年的工作经验和这个良好的平台相结合,为公司,为自己的职业生涯做一些事情。

主持人:请您介绍一下目前Foxit目前的情况以及技术团队构成。

静楷:Foxit目前的工程师团队,主要是由一个基础核心技术团队,2个主要产品开发团队,2个合资开发团队组成。

基础核心技术开发是Foxit一切产品的基础,包括我们自己最核心的PDF 引擎,XFA引擎等。对PDF最核心等处理,如解析,显示等都包括在这部分。

2个主要产品是通用产品和SDK。通用产品系列包括各个平台上免费的Foxit reader。我们功能最全的Phantom(也就是PDF writer。)SDK产品系列包括功能强大的PDF SDK, ActiveX SDK,还包括新产品webPDF SDK,automation toolkits等。

2个合资开发团队,分别专注于国产OFD文档标准的开发,以及Foxit Cloud的开发工作。我主管基础核心团队,SDK,还有美国工程师团队。

主持人:那么Foxit目前的产品及服务有哪些?最初的产品路线选择方面是怎么考量的?

静楷:刚才提到的基础核心技术,因为是Foxit自己开发和完全拥有的核心技术,我们会不断的开发新功能,提高性能,不断的扩充到新的平台,如windows 10。因为不断的快速迭代,我们的优势越来越明显。

通用产品也是不断的扩充新功能的同时,也不断的提高易用性。SDK部门在提高易用性的同时,今年还推出了新产品。大家对我们产品感兴趣,可以访问我们的中文网站,foxitsoftware.cn 和英文web,foxitsoftware.com。对每个产品都有非常详细的介绍。

Foxit目前专注于PDF文档和相关技术的开发。主要的产品和服务也主要关注于此。当然我们也在不断的创新,有两个关键技术如版式文档更好的编辑功能,以及connectedPDF技术等。

版式文档更好的编辑功能,就是结合PDF和Office的优势,让今后对PDF的编辑像office一样简单。

创业之初,公司最初接触到了大量对于PDF文件处理的要求,但Adobe一家把持,很难与其合作。当2006 Adobe公开了PDF文档标准后,公司就决定了专注于PDF的开发了。这里有创业偶然,也有技术沉淀的必然等因数。

主持人:相比其他公司类似产品,Foxit竞争力体现在哪些方面?

静楷:主要是Foxit原创开发了PDF引擎的核心技术,以及相关技术的完整的生态系统和产品。除Adobe外,其他同类公司,要不是不拥有PDF的核心技术,OEM其他公司的。要不就是只能提供通用产品,或是SDK产品中的某一个,这样很难为大型客户提供全套的解决方案。

第二个优势就是全球市场和销售的经验。大家都熟悉国内的软件市场的现状,纯软件很难卖,大家都已经习惯软件应该是免费的,大多数国内知名的IT公司主要的收入和市场都在自己熟悉的国内市场,有人叫他为孤岛效应。Foxit应该是为数不多的依靠自己的努力一点一滴的原生态做到全世界的纯软件中国企业。

第三个优势就是Foxit自己培养起来的员工,我们信奉努力,欢乐和学习。特别是工程师团队,创造了互相学习的良好氛围,员工快乐,努力的工作,并最终提供了优质的产品和服务给我们所有的客户们。

主持人:我们看到目前Foxit已成为国际PDF标准组织核心成员、中国版式文档OFD标准制定成员。请谈谈有关PDF ISO国际标准的参与和感想。

静楷:大家都知道一个常识,与其很好的跟随一个标准,不如去直接参与这个标准的制定,并施加影响力。PDF ISO的国际标准最初是Adobe开源标准后,被ISO全部接纳下来,现在正在讨论下一代PDF 2.0的标准。

Foxit之所以可以加入ISO标准组织,因为Foxit已经成为PDF业界不可或缺的主要的技术和产品提供商。比如Foxit的免费的reader已经有了3亿用户。世界上前5大PC生产商,有四名正在或将要预装Foxit PDF软件等。

我认为主要还是自身的实力吧。Foxit也原创了制定了一些PDF标准的扩充,如对微软RMS的加密/解密的支持,connectedPDF标准等。今后也会逐渐介绍到PDF ISO标准中。PDF ISO这个标准组织包括了全球PDF主要的技术和产品提供商,如Adobe,DataLogics,iText等,也包括了不同地域或国家的组织等,如美国,欧洲,中国等。该组织职责包括提议/讨论/审核下一代的新PDF的标准,新的功能,新的use case来驱动的新的PDF文件格式等。也包括逐渐废弃一些过时的标准等。目前下一代PDF的标准是PDF 2.0。

主持人:现在公司技术团队往往面临着项目多、人手不足的情况,面对有限的开发资源,该如何平衡产品开发和客户项目?请举例分享下您遇到过的情况和应对方案。

静楷:开发资源有限,人手不足,招聘困难应该是每个开发团队的常态了。

如何平衡产品开发和客户项目的工作是我们每周都需要面对,并加以解决的。其实是没有什么捷径,也没有什么通用的标准。我就结合Foxit SDK部门的情况,谈谈我们的一些处理标准。

SDK产品的主要使用用户都是开发人员,他们都面临如何使用Foxit PDF SDK,以及如何和他们的产品很好的结合的一些特定的要求,也就是一些围绕SDK的一些客户项目。

在收集客户需求方面,首先我们需要明确这些需求的通用性,通用的需求可以安排在我们现在或下一个开发周期中,也就是roadmap中。顾客特定的要求,会以客户需要的紧急度,以明确项目范围的方式(SOW的方式)由客户明确预算来完成。SOW=statement of work,也就是项目工作范围。

其次,我们有合理的开发周期,如每3个月,发布新的版本。不愿额外付费客户的通用功能,都可以在下一个新版本中得到。我们的SDK产品严格做到了对旧版本的兼容,这样极大的方便了大多数客户。当然,我们还有特殊大客户的支持,如google,amazon等。

还有对客户项目,我们会按照一定的标准,把客户项目排列出优先级。标准可以是项目金额的大小,实施的难易程度,还有销售的区域等。这里提到的区域,包括对北美,欧洲,中国,日本等不同客户,不同区域的一定的平衡和比例等。

还有,对开发人员,根据不同的时期,不同开发任务,保持通用功能开发和客户项目中的比例和平衡等。因为大多数开发人员喜欢做新功能,而不是客户项目。

主持人:Chrome浏览器的PDF渲染引擎组件名叫 PDFium,是一个开源项目,该项目使Chrome浏览器中的非开源代码大大减少,而项目的初始代码则是来自Foxit,在世界级各路竞争对手中,Foxit是如何拿下项目的,可否讲讲背后的故事?

静楷:其实Google Chome在开源PDFium之前的几年,一直就使用闭源的Foxit的SDK技术来在chrome中显示PDF文档。主要的原因还是Foxit 的SDK功能强,性能高,安全,库体积小等优点,比竞争对手有较大的优势。

google为了全面考察Foxit。专门要求我们提供全部的源代码,请第三方专业的公司审核全部源代码,是否都是原创。第三方公司非常专业,他可以自动搜索网上的源代码。如果Foxit的开发人员copy/past网上的一些通用代码,他们都是可以搜索出来,非常厉害。

还好,Foxit经受了考验,得到了认可后,并提供了多年优质的服务支持后,再合作PDFium开源项目,就比竞争对手有很大的优势了。

当然我们面对是世界顶级的竞争对手,google最高标准的要求,CEO Eugene,执行VP George和当时中国/美国的工程师团队一起配合,全天24小时全球无休的工作和快速响应,最快最好的满足了google的要求,拿下了这个项目。

其中有一些小插曲,如google的标准很严格。PDF业界主要的挑战之一就是有大量的不标准的PDF文件,占总数的30%,这些不标准PDF文件会带来安全问题,有的就是黑客专门创立的。满足google的要求之一,就是需要通过对这些特殊PDF的处理而不引起安全问题。我们可以很好处理这些特殊PDF文件。

还有就是全球开发团队的优势在这个重点项目中都很好的得到了体现,例如,我们采用不同地域(中国和美国)每12个小时在线握手/碰头会,一个团队未解决的,交给另一个团队来完成。12小时后,再把未完成的工作交还回来,这样就做到了全球24无休的工作和快速响应,才能满足google的临时的特殊要求,才能超越竞争对手。还有就是我们美国的office在硅谷Fremont。可以第一时间和google随时联系,开会沟通等,也是能及时响应客户的条件之一。

主持人:很棒的经历,其实对于很多涉及跨国市场的技术公司,往往会面对不同国家和文化背景的客户,文化的不同是如何影响客户项目以及实施方案的呢?

静楷:文化的不同,会带来做事风格的不同。的确实施方案和方式方法都有一些不相同。给大家举个小例子。

比如在美国,主要的实施工作是在签署合同后才开始的,并且会根据合同,制定出不同的实施里程碑,客户会在验收后,提供项目的不同阶段的实施费用。

但在日本,基本需要完成了全部的功能后,才签署合同。合同签署的时候,往往也是项目主要完成的时候了。如果和美国相比,这种方式往往有潜在的风险,也就是合同不签的情况下,前期的工作可以白费了,但往往这种情况并不多发生。还有就是日本项目往往验收的周期较长,这和日本人做事较仔细,测试力度较大有关。

在国内市场,客户项目的情况大家就很熟悉了。合同的签署,项目的实施进度和最后的付费等都被大量的其他因数所左右,这里都不多说了,你懂的。

主持人:现在请谈谈您对敏捷开发、效率衡量以及落地的实施的理解。

静楷:Foxit在开发中也大量的使用了敏捷开发的方法,如快速迭代,自动化,scrum等形势。 举例自动化,我们大量的采用了自动单元测试,自动功能测试,性能测试和安全测试,使用了大量的开源工具,如svn/git,Jenkins,gtest, openstack等,做到了开发,编译,测试,整合发布的快速迭代。

但同时,相比较大多互联网公司的2周,甚至1周的敏捷开发周期和发布,我们的开发新产品发布的周期合理的适当延长。也也算落地吧。

因为大多数互联网公司开发/维护当前的是在线的版本,客户使用的是服务。而较传统的软件公司,需要维护不同的客户使用的版本,我们发布和更新的速度不能超出客户可以承受的合理发布周期。这也是互联网公司优势之一。

所以我们最大限度的加快Foxit内部的开发和迭代速度,但对于给客户的新产品发布的周期还需要在客户的合理范围内。

主持人:看到您简历中目前负责管理公司美国和中国的核心基础技术开发团队、SDK开发团队和售前/售后工程师支持团队,国内和硅谷工程师文化的不同,团队该如何带领,有什么心得分享么?

静楷:有一些不同,但也有很多相同之处。中国的工程师还是世界上最好的。这也和我们从小的教育有关,基本功很扎实。不同有,举个例子,硅谷的工程师较讲究个性的发挥,每个人比较独立,也包括独立思考和执行。国内的工程师比较容易听从权威。

举个例子,在硅谷需要完成一个项目,往往提出要求,由工程师自己来提出完成时间的预估,批准后,大多数情况由工程师自己来把握进度,到时完成就好了。当然是一个较理想的case。

在国内,我刚加入公司的时候,先遇到的情况是,国内的工程师也可以提供预估的时间,但把握进度的能力较弱。最后往往需要由上而下的明确定下最后的期限,习惯加班加点来完成。

关于团队的带领,我喜欢带领这个词,而不是管理。主要我个人受惠普之道,也就是《The HP way》的影响很大。我推崇其中的信条如:

  • “尊重,相信员工”;
  • “相信每个人都愿意把事情做好,有时只是没有提供给他们这个平台”;
  • “生产工具需要共享”;也是相信员工的一周方式,比如在软件开发中,就是源代码共享,知识共享
  • 尽量配置较好的laptop等……
  • “公司的成功是集体的力量,而不是某个人的个人力量”;
  • “公司要回馈社会,要先照顾好员工,通过快乐的员工提供给客户和社区更好的服务”。

我也是这样不断要求自己,也愿意这样带领团队的。

主持人:中国的工程师还是世界上最好的!您说得对!惠普之道,受教了。那么请结合您的切身体会谈谈一名合格的CTO或技术团队管理者应该是怎样的呢?

静楷:我个人认为,CTO和VP of engineering所担负的角色是略有不同的。VP of engineering也就是技术团队管理者。

CTO更关注于现有和今后新技术的把控,关注于今后3年,5年,甚至更长时间后的技术走向,不仅引导整个公司的技术,也在引导所在行业的方向。也就是要求很强的技术前瞻性。向CTO汇报工作的,应该是技术狂人和架构师。

VP of engineering的角色,更多的是整个技术团队的管理者。是深刻了解开发工作的同时,也需要了解产品,QA自动测试,客户的需求和客户项目的进展等工作,需要把这些工作,人员很好的组织起来来达到公司的产品开发路线图的要求,客户项目的要求等。有时甚至需要和销售/市场一起来拜会客户,赢取大的客户项目等。向VP of engineering汇报工作的应该是开发经理,测试经理,产品经理,客户支持经理等。

当然,这两个职责可以由一人来承担,也可以分开。这也和公司的形成历史,文化等有关吧。

主持人:在提升Foxit技术团队方面,您有哪些思考呢?

静楷:我的确做了不少这方面的工作。其中最重要的就是在相信和尊重员工的前提下,最大限度的激发员工自身的积极性,也就是个人是否有自我激励的态度。我个人认为,除了很少数天才外,其实人与人之间的差距是不大的,态度的确决定了很多,也直接可以影响到结果。也鼓励他们去做,去试错。

第二就是学习,包括员工的自我学习和公司/部门培训。再有就是在学习,做事方面的一些技巧,也就是大家经常可以听到的soft skill。

举个例子,在自我激励方面,首先帮助每个员工明确工作职责。根据各自的工作要求,制定自我的目标和承诺,最好在一段时间内进行考核,给每位员工合理/尽量公平的考评,这样向开发迭代一样,员工可以根据要求,持续不断的提高。

再举个例子,提醒一些小的技巧。如在回复客户邮件这样的小的事情上,之前有的员工收到客户需求后,就开始做了,自己心里也有个预估,预估到客户要求的时间内可以完成,一切都挺好的。可是忽略了和客户的沟通。因为从客户的角度,他/她可能都不清楚你是否收到了email,是否同意在这个时间段内可以完成,如果从收到客户请求到完成这段时间内,都没有回复一份邮件,一直到全部完成了,才习惯最后统一回复,这期间客户是崩溃的,也会不断地发邮件来催促。但如果很小的改变,在第一次收到客户的第一个请求后,就回复并告知已经收到,会安排实施,并加上时间的预估,这样就可以达到很好的客户满意度,也很少客户会真的对你的实施方案或所要求的时间来抱怨。

还有就是帮助员工安排工作的优先顺序,做到成竹在胸;使用checklist,今日事今日毕等方法,等等等等。

主持人:恩,确实,及时与客户沟通可以保证高质量工作,提升满意度。那么Foxit的技术团队氛围是怎样的?公司招人过程中,比较看重新人的哪些特质?

静楷:都是好问题!责任,努力,快乐和学习是倡导的氛围。Foxit的工程师团队大都数都是年轻的工程师,大家在一起互相帮助,不断的攻克PDF技术领域的世界性难题。应该是很有成就的,但同时也是孤独的,毕竟国内,甚至世界上专注这个领域的专业人员不多。

所以,我们在招聘的时候,比较注重新人的技术基础知识的掌握和熟练度,还有就是自我学习的能力。因为PDF技术本身是要求很高,包括图形,图像,字体,显示,并行处理,甚至是不同平台下的加速和优化。但PDF并非是开发的热门领域,拥有这方面经验的人员非常少。

主持人:对想在技术路线上走得更远的人,您都有什么建议和忠告?推荐一些您觉得非常不错的书籍吧。

静楷:专注。我个人认为在一个技术领域内成功,成为专家,都需要持续的专注在这个领域。IT领域变化很快,刚刚才谈cloud,一会儿就是大数据,再过一会儿也许就是smart device,物联网了。如果一直在追赶新技术,新潮流,除非是天才,否则很难追赶的上。如果想在某个领域走的更远,持续的专注,并孤独下去,才有可能吧。专注,还是专注吧。

关于书,我介绍大家看看经典的惠普之道,《the HP Way》。

互动环节:我们应该如何在新技术与专注间权衡?好多人说“得跟的上时代”,于是各种技术各种学,到最后也会迷茫。
静楷:的确是一个问题。我个人认为,从开发人员的角度,至少需要有一个自己非常精通的领域。在这个领域内,可以逐渐涉猎相关的技术。比如,foxit专注PDF领域,但同时我们也在涉猎cloud,如何互联所有的PDF文件,互联这些用户等技术。
互动环节:真正有效地实施绩效管理,您觉得哪些因素很重要?在对技术人员的绩效衡量上,如果做到比较合理地量化?我感觉对技术人员的绩效指标,除了时间外,其他评价因素都很主观,您的意见呢?
静楷:关于绩效,我是用一些工具来量化,同时也鼓励为主。也就是考评不是目的,而是修正目标的手段。量化的工具有,代码量,修复bug的数量,百行代码错误率等。
问:我看到的问题是,团队的绩效永远是合格的,但是出来的产品是不合格的,每次都是负责人说是他的问题,与团队无关,这个非常不合理,也无从改进。
静楷:比如考评和奖金相关联,除非特别有问题,而且多次提出的不改的,不一定以扣奖金为目的,还有发现问题,就事论事,及时提出,而不是等到考评,才提出一堆的问题。产品是否可以及时提交发布,客户满意度和愿意再合作等,也是衡量的一些指标。
问:团队管理采用的放权的形式,因为我坚信管理不是控制,而是协调。
静楷:同意,管理是带领,以身作则,还有协调。
互动环节:管理中美两个团队有什么挑战么?团队中的刺头技术高手如何管理的呢,特别是有争论的时候。
静楷:有挑战,关键是自身的,如时间,家庭等。我在美国傍晚的时候,都需要和国内工作,但同时家庭也很需要我。我有两个小孩,有时也需要给他们做饭。
互动环节:方案的制定或者说决定的排版,你倾向于领导决策还是团队意见
静楷:方案的制定即需要由上而下的部分,如CTO的话语权。也需要倾听下面的意见,比较大量的实施问题是做了之后还发现的,也就是架构和实施的结合。
互动环节:Foxit的API服务是免费的,还是收费的,如何收费呢?API及帮助文档在哪里下载?
静楷:PDFium是免费的,也就是我们和google一起开源的。商业的SDK是付费的,文档和demo,都在公司的网站上,也可以私聊我,我告诉你详细信息。



想与业界大咖零距离沟通,欢迎加入CTO讲堂微信群,参与CTO讲堂!

【CTO讲堂第20期预告】

分享主题:支付接入开发的陷阱有多深?


分享嘉宾:Beecloud创始人  黄君贤

嘉宾简介:黄君贤,现任比可网络科技有限公司董事长兼CEO。清华大学本科毕业后获得美国密歇根大学全额奖学金攻读并获得计算机博士学位。曾在微软亚洲研究院,微软硅谷研究院,AT&T研究院和Google硅谷总部从事计算机网络和移动互联网研发。

2014年4月从美国硅谷回国,创办比可网络科技有限公司(BeeCloud),专注于支付云服务。目前,已获得FreeS峰瑞资本与极客帮资本的天使轮投资。 作为典型的技术型创始人,他自己本身就是名骨灰级的移动开发者,09年学生时候就作为个人开发者开发过百万级用户的APP,深知移动开发的痛点。

公司简介:BeeCloud为开发者和企业提供一站式支付解决方案。通过提供易用友好的支付SDK,几行代码高效实现网页、APP支付功能,并提供可靠稳定可靠的分布式云后端服务,保障支付流程安全流畅。BeeCloud现已支持移动支付、网页支付、线下扫码多种支付场景,支持PC,iOS,Android ,H5等多开发平台,让开发者无需后端服务器即可高速集成支付宝、银联、微信等主流支付渠道。

产品介绍

  • “秒支付”是BeeCloud针对支付集成这一痛点推出的系列产品,开发者不需要自己搭建支付模块写冗长代码直接接入“秒支付”,几分钟就可快速完成支付功能开发。
  • 继秒支付SDK之后,团队今年5月份推出颠覆性产品秒支付Button,完全无需SDK,三行代码即可完成网页支付的集成。除了为开发省力,BeeCloud 也同时支持支付订单管理统计以及企业级私有云部署等定制化支付方案设计。

分享时间地点:10月23日(本周五)10:30 , CTO讲堂群

加入方式:扫描二维码加“C粉儿小助手”好友,申请入群。

还不是CTO俱乐部成员的各公司技术负责人,欢迎立即加入俱乐部:cto.csdn.net 。

更多俱乐部动态,欢迎扫码关注微信号:

0
0