10
回答
【开源访谈】腾讯云平台陈子舜:由前端开发到全栈开发 人生就是不断地挑战
终于搞明白,存储TCO原来是这样算的>>>   

陈子舜,目前是腾讯云的平台产品中心的业务负责人。腾讯前端开发 T4 专家工程师,10 多年的前端技术架构和 Web 性能优化经验,拥有丰富的项目经验,曾负责管理 QQ 空间和农牧场的大前端技术团队。作为腾讯云的平台产品中心的业务负责人,陈子舜负责整体腾讯云小程序全栈方案,以及腾讯云开发者、腾讯云网站、域名等工作。

访谈实录

(一)开源方面

1)PJBlog 博客系统,发布了 3 个版本,在这过程中是否有遇到难以攻破的技术难关?如何解决的?

对于 PJBlog 博客系统,我自己亲自开发了从 1.0 到 3.0 的三个版本。

开发 1.0 版本是最大的挑战,因为当时没有开发一个完整的 Web 系统的经历,不了解如何从后台到前端搭建一个完整的系统,这是当时最大的难关。所以只有不断地学习,学习的过程中也花了很多的时间研究别人的代码,把以前学习的关于计算机的原理理解透彻。

开发 2.0 版本已经是一年之后,这个时期重新回过头看自己以前写的代码,看代码的质量如何,不断挑战自己,不断地去进行性能调优,提升代码的架构,扩展性,因此,开发 2.0 版本最大的挑战就是不断地重构和性能优化。

3.0 版本最大的技术难关是安全方面的问题。因为在这个阶段,已经积累了大量的用户。用户量一高,自然就会引起黑客的攻击,黑客们会不断地发现问题,寻找漏洞,比如说是否有数据泄露漏洞、是否能注入、XSS 等。而且,这些情况逐渐增多。恰恰是因为安全这件事,我认识到了一些业内对安全十分在行的朋友,他们给我提供了很多建议。所以,在这阶段最大的难关就是如何解决系统安全问题。

2)维护开源软件及社区绝非易事, 在维护 PJBlog 的 4-5 年时间里,有什么心得体会吗?

首先我们应该有一个这样的认识,社区存在的主要意义是让开源软件作者能了解到使用者对开源项目的反馈。社区是为了建立一个双向沟通交流的渠道而存在。

我最初的想法是把这个博客系统当做一个产品去打造,并不仅仅是实现基本功能,然后提供给用户下载。因此社区作为和用户沟通的一个渠道,它可以让我不断地收集用户通过社区反馈的意见,进而不断地优化产品。所以从这方面来看,社区对于我的帮助就是把这样一个环节打通了。

既然是用户众多的社区,自然会有各种不同的声音,赞赏、批评和吐槽等各种声音都会有。不过当时我遇到的情况不是太糟糕,用户的吐槽并没有太过分,因为当时 PJBlog 与商业挂钩不是很大,毕竟我们也没从这个项目中获利。所以用户的容忍度相对来说也比较高。

回到刚开始说的,社区对于开源项目来说是一个十分重要的场所,但是维护社区会十分消耗开源项目维护者的精力。所以当时的情况是我自己很少去亲自打理社区,主要是一些朋友负责社区的管理,我更多的工作是观察用户普遍会遇到哪方面的问题,是否需要采纳进来以满足他们的需求。

因此,开源需要结合社区才能做得好。哪怕到今天,一个开源项目也是离不开社区的,因为对于开源项目,聆听用户的声音十分重要。离开了社区,便会缺少交流,缺少交流,项目就会慢慢地被用户遗忘,甚至不再使用。再者,大家选择开源项目,十分看重的一点是该项目是否有一个健康的社区,如果一个开源项目缺少一个社区(或者其他的形式的场所)供大家讨论,那么用户怎么知道自己提出的反馈是否会被解决?

3)近期有一位开源项目作者的开源作品被某大公司拿去申请专利的事件,您怎么看待这种现象?

我之前也经历过类似的事情,虽然和这个案例的情况不完全一样。不过对于这种情况,我认为开源作者需要学会保护自己的开源作品,但很多时候开源作者缺少的恰恰是这种知识产权保护意识,这就导致他们花了大量的心思和精力完成一件作品后,被别人拿去获利了。可能很多开源作者对于开源协议不太关注,不了解协议能对他的项目产生怎样的保护作用,如果遇到问题能找到怎样的法律渠道解决问题,很多开发者缺少的就是这样一种保护意识。

因此,我认为开源作者首先要具备这种知识产权意识,需要知道每个开源协议对自己来说有什么作用,因为每个协议可能涵盖的内容都不太一样。这样才能在遇到问题时,知道如何保护自己的知识产权。

还有一个问题,应清楚认识到开源协议在中国的法效性如何。腾讯内部也做开源,但很多人会觉得腾讯公司开源一个项目的流程会很繁琐。事实上,这些流程有部分是和法务相关的。因为公司性质的对外开源如果没经过层层的把关,开源之后如果遇到一些法律的问题,这时候需要个人承担的后果就严重了。毕竟,这和个人的开源项目是不一样的情况。

所以,我认为开源项目的作者应多去了解相关的法律知识,具备一定的法律意识十分有必要。

4)现在越来越多的项目走上开源之路,您如何看待这种现象?

越来越多的项目走上了开源之路是一件好事,但我还是更希望这些开源项目可以走得更好。

我认为一个好的开源项目应该具有国际影响力,中国的技术经过了这么多年的发展,真正有国际影响力的开源项目其实是比较少的。有国际影响力的开源项目,它在任何地方都能提供很多的支持,所以我希望国内未来能诞生更多这样的项目。

VUE 就是一个很好的例子。这个前端开发框架的作者是国人,但这个项目在国外也有着很高的知名度,在 GitHub 上除了中国开发者在维护之外,很多海外的开发者也在不断地贡献代码和工具,因为一个好的开源项目必定是全球化的,它能吸引不同圈子的开发者参与进来为其贡献,所以我希望中国可以有更多的开源项目走向国际化。

5)你认为国内开源的现状如何?你理想中的开源是怎样的?

我们可以和前几年的对比一下。前几年,很少看到由国人发起而且得到海外开发者认可的开源项目,绝大部分是我们本土的开发者给别的项目贡献代码,我们是充当着贡献者和使用者的角色。

现在慢慢地,随着我们技术水平的提升,掌握了更强的技术实力,也在逐渐往国际化的方向走了,因为只有这样才能获得更大的影响力。

我理想中的开源就是我希望国内开发者自己有主导权的开源项目能走到海外,具有国际影响力。

(二)技术方面

1)匠人之心,讲究精雕细琢,从技术层面谈谈你对 “深度”对理解(如何定义技术的深度)

我的理解有两个方面:一是对自己不断的挑战,另一方面是对自己没接触过的领域,不断地去探索。这两点都是深度的体现。

就我自己而言,我自己的技术历程不敢说走得很深,不过我很愿意去挑战自己,挑战自己做过的技术能否做得更好。之前我所在的 QQ 空间团队会有一种氛围,我们讨论问题,会讨论这个问题是否会有更多的解决方案,同时,我们也喜欢去挑战一些可能当时不需要掌握或覆盖的技术面。比如说,在很久以前作为一名前端开发,可能对于网络或者浏览器内核方面知识的掌握程度要求不是很高。但事实上,如果不关注网络状况,就不能帮助所做的业务实现更高的性能,如果对浏览器的引擎不了解,也很难定位到出现问题的地方。

这里再举一个例子,之前公司的一位同事提到一件事,王者荣耀的开发团队加入了一个与 WiFi 相关的硬件协会。我有点不理解,问他们为什么加入这个协会。他们说发现了一个跟 WiFi 相关的问题。有时候我们会发现发现使用 WiFi 会比 4G 更慢,但又不知道原因,后来技术人员层层排查后,终于把问题定位到 WiFi 的设计上,原来是它本身设计上的技术限制,没考虑到像王者荣耀这样的复杂实时的网络场景。这个也是“深度”的一个体现。

因此,对技术进行深挖之后,能看到的东西会更多,解决问题的思路也会更开阔。

2)从 QQ 空间到云平台,技术能力得到了怎样的拓宽与提升?

之前在 QQ 空间团队的时候,工作内容是特别“专”的一个技术领域,它对前端开发的要求在某个领域钻研的非常深。加入了云平台之后,我感受到的最大区别是,之前在 QQ 空间团队时一些 To C 的思维需要完全转变。在云平台,需要有更广阔的技术面,因为接触到的技术点都是不一样的。对我而言,这些其实都是不一样的领域,需要花很多的时间去研究、理解里面的每一个技术细节。

同时,对于我自身的技术专业也有很大的挑战,原来更习惯于对网站做更多的性能优化,提升访问速度等。到了云平台后,技术能力不仅仅局限于专业技术上,更需要从整体业务,技术广度进行思考。看待技术问题的时候,判断和选择也发生了很大的变化。

3)从深钻细研技术(深度)到走上管理(广度),(心理、技能等)各方面发生了怎样的变化?

说没变化是不可能的。因为从技术走上管理,而且现在管理的团队也挺大,我现在不仅管理着研发团队,还管理着产品团队,所以很多时候朋友也会问我是技术总监还是产品总监。其实是成为了一个业务线负责人。

作为业务线负责人,很多时候在思考问题时不再像以前那样,原来更多的是专注于某技术点,现在更多的是考虑如何建立更好的机制,流程,组织结构去管理团队,让有能力的人在团队中做好这件事情,同时还需要考虑很多原来没有考虑的问题,例如商业模式、产品力,生态等等,这些其实都超出了技术的范围。

对于思路方面的变化,在当程序员的时候,产品提了需求,我会想能不能有更多的解决方案,因为我会告诉产品经理,现在有三个解决方案,你觉得哪个更好,但是作为技术人员最终未必会为选择具体的解决方案负责。到了现阶段,情况就不一样了,现在我必须要找到最佳的方案,而且要和更多的团队、个人去讨论这个方案应该用什么样的方式去实现。和做技术时不一样,之前技术负责提供专业的意见帮忙找到最佳方案即可,但现在的工作就是找到最佳的方案,这两者的思路不一样。毕竟,管理层需要做决策。

对于技术,现在更多的是在关注技术动态,客户的技术痛点。毕竟从事云相关领域的工作,不可能脱离技术。对于这个领域的技术,也许不能亲自 coding,但我会去学习和了解,否则这么多技术,怎么知道这些技术能解决什么样的问题,能解决客户怎样的痛点,能解决开发者怎样的问题?

因此,还是需要保持学习,保持对技术的敏感,知道技术本身的意义何在。即便不做具体的技术,但是对于技术的了解还是需要更大、更广。

4)如何看待大家对您的评价,“一个非常专注于技术的 leader”

之所以有这个评价是因为当年我当技术负责人的时候,我会亲自去写代码,因为我比较喜欢写代码。即便现在,我仍然是一个很喜欢写代码的人。毕竟技术出身,总会有一些技术情结。

对于这个评价,不能说好,也不能说坏,但有时候会影响团队对我决策的判断,因为我现在也负责腾讯云开发者产品,例如实验室,证书,开发者工具等产品。实现技术和把技术产品化,其实是两个完全不同的模式。不过我自己喜欢技术,也许现在投入在上面的实现的时间偏少,但我还是喜欢保持兴趣去研究一些新的技术。

(三)腾讯云实验室

实验室平台开发过程中有没遇到什么阻碍?如何解决?

技术方面有不少阻碍,比如 Windows 服务,不过目前还没发布。因为Windows 协议比 Linux 的协议和交互习惯要复杂很多,我们需要解决 H5 和客户端之间的协议通信问题,保证我们可以指导用户去完成实验,同时也需要通过网络协议打通复制粘贴能力,因为我们认为这个能力非常重要。

还有就是如何更好地灵活分配资源、管理资源,怎么样保证这些资源上线后不被别人不合理刷资源,里面也需要考虑很多的技术细节。

其实,在实验室平台上不管是开发 Web IDE 编辑器还是搭建支持 Markdown  的实时教程环境都需要研发人员投入很大的精力去解决很多技术和体验细节问题,虽然最终呈现给用户的东西很简单,但它背后很多复杂的逻辑需要团队不断地去解决。

同时,实验室还提供了开放接入能力,我们也希望能把实验室灵活资源管理能力和在线动手实验的能力公有云化的方案提供给合作伙伴,和教育机构,以及一些有需求的技术团队或者开源团队,帮助大家降低技术入门的门槛。

举报
局长
发帖于2个月前 10回/2K+阅
顶部