迅雷首席工程师:程序员成长之道

31c5c07ac52f650bff0622915c757412
迅雷公司有过三位首席工程师,本文邀请了其中两位,刘智聪、敬宓,聊聊程序员的职场发展之路,为保持技术大牛的风格,以下文字源于两位首席工程师的原创。

刘智聪,原迅雷首席工程师

1984年出生,从小自学编程,毕业于南昌大学化学系,加入迅雷后设计开发了多款迅雷核心产品,是多个领域的技术专家,也是BOLT界面引擎的发明人。现为巴克云创始人、小应用云架构师。

1. 自己作为技术路线的应聘者,在校招时候,是如何选择第一份工作的?考虑过什么因素?最后为何选了第一家公司?

刘智聪:我化学系毕业,大四一直在实验室待到了快毕业,所以并没有时间参加传统的校招。

第一份工作是和朋友一起来的深圳,在科技园凭缘分找到~

2. 目前工作几年?做过几个项目?在技术方面,有怎样的成长?

刘智聪:工作11年,做的项目非常多了,比较成功的是迅雷的一系列产品。 技术方面主要还是完成实现了不少自己的想法,到过一些无人区吧。

3. 让你获得进步和成长的方法,有哪些?

刘智聪:首先是正确的学习方法,我们这行算是一个终身学习,终身成长的行业,好的学习方法能让学习更有效率。

大的流程就是: 问题发现->提炼总结->在知识树上找位置->补充基础知识->自己尝试解决问题->研究行业已有解决方案。

这比简单的 “问题发现->研究行业已有解决方案” 的路子要学习效果更好。

4. 在作为程序员工作的第一年,遇到过的最大问题是什么?如何解决的?

刘智聪:如果从2005年开始算,我那时候都写了10年程序了,最大的困难应该是自己的能力无法匹配自己的野心吧:)

5. 对今年的技术背景的毕业生,有什么校招的建议?例如笔试、面试的方法,注意什么?

刘智聪:我从2008年开始做校招,在这个问题上还是比较有发言权的,主要说说技术岗吧。

首 先是简历,一定要简洁(最好压缩到一页),然后突出亮点。什么是亮点呢?名校/GPA特别优秀/实际的项目经验/高水平竞赛获奖/学界认可的研究成果 (Paper)一些和技术不太相关的经历和获奖就不用往简历上写了,尤其不要写精通Office,Photoshop之类……技术能力测试的时候起决定性 因素的是CS专业的基本功(数据结构,操作系统,网络,组成原理),当然有一些当下流行技术的项目经验也是加分的。

面试的时候我喜欢对解决问题的能力进行测试,希望看到你在一个非常难的问题面前的思考过程,比如对问题进行分析,拆分,总结问题,思考思路,在确定思路前提出验证方法这样。

面试的时候不要一直沉默,即使思考不完整也可以和面试官沟通交流,沟通能力也是面试时的重点。

面试的时候的另一个关键点是“志”。立志要早,这样在工作中面对选择的时候,才能做出有连贯性的选择,不过遗憾的是在学生时代就能想清楚自己志向的同学太少了。

面试的时候注意真诚,不必刻意迎合面试官和目标公司(因为面试官都是人精,大部分时候都是能看出来的)

6. 对程序员工作的前三年?有什么建议?

刘智聪:把工作中用到的技术的基础知识学扎实。基本功扎实才能让你飞的更高。

工作中要勇于承担责任,主动要求承担困难的工作,多和buddy沟通,工程上的很多问题有人指导解决起来非常快。但一定要注意事后的复盘和总结。

工作前几年最重要的就是个人的成长,这是拉开差距并能在未来抓住机会的关键阶段。所以选择工作的唯一标准就是“能得到什么成长”,而不是待遇,公司福利之类的细节,当然公司有一个好的,愿意带你的老师是非常关键的资源,要好好抓住。

敬宓,迅雷首席工程师

迅雷星域CDN项目的创始人。

1. 自己作为技术路线的应聘者,在校招时候,是如何选择第一份工作的?考虑过什么因素?最后为何选了第一家公司?

敬宓:校招时选择工作的原因比较简单,主要还是兴趣驱动,尽量选择自己未曾深入研究学习的方向进一步学习。

由 于我一贯是兴趣驱动,所以我的选择方法和大部分应届同学不太一样:我是从小学3年级左右开始做简单机械、无线电设计相关的学习,小学毕业后开始自学编程, 考虑到电子和机械是小时候未能深入的方向,大学特意选择了机械电子。从入学第二周开始到大四毕业,基本没有假期地参与各种项目,到大四时断断续续积累了近 10年的编码经验,对单纯软件开发、网站开发、安全、游戏开发、硬件开发都有一定的涉猎,所以选择公司时放弃了这些方向和公司,主要考虑后台和系统开发方 向的工作,面试了百度和当时还属于雅虎全球的雅虎中国。

面试这两家公司主要考虑了他们的技术属性,当时百度是国内少有的技术驱动的公司,而 雅虎在当时更是全球最大的 FreeBSD (我最热爱的系统)的维护、贡献者和使用者。另一个原因是因为此前已经干小作坊式的开发很多年了,所以希望毕业后进入更大的平台开阔视野,为以后的创业做 准备。最后选择了百度。

2. 目前工作几年?做过几个项目?在技术方面,有怎样的成长?

敬宓:目 前工作9+年,编码经历20+年,经历过的项目比较多,如果从规模、耗时、人力上有个范围设定会比较好统计。从项目类型上,经历过 Windows 客户端开发、网站前后台开发、系统运维、游戏、安全、操作系统、搜索引擎、自然语言处理、分布式存储和数据库、P2P、CDN 网络加速、模式识别、数据分析和挖掘这些方面的技术项目,这也基本反应了在技术方面的成长。

3. 让你获得进步和成长的方法,有哪些?

敬宓:获得进步和成长的方法主要依靠向开发论坛、社区的大牛请教学习方向,然后研究相关规范和标准,最后是不断实践。

这 里要特别说一下方向的重要性:这些年面试了数百位候选人,很多人具有不错的开发能力,他们可以使出巧妙地招式,但是由于各种原因,他们对基础和细节的重视 不够或者急于求成等原因,导致在实际的开发中总是或多或少遇到各种无法解释的现象,比如写 C/C++ 的工程师,很少有对 C 和 C++ 区分对待的能力,对他们各自的标准规范更是不了解,最后的表现就是代码出现各种诡异的问题。

工作第一年在百度修复了一个全公司几乎所有项目 都使用的 hash 函数的序列点问题,那可能是百度诞生时就有的代码,但这个 bug 却存在了很多年。类似的问题还有很多,知乎上有个讨论最难调试的 bug 的讨论,其实很多都是由于对基础环境、条件的不了解,错误的做出了假设导致,如果完全熟悉整个体系的每一个环节,就会大大减少诡异 bug 的存在。

4. 在作为程序员工作的第一年,遇到过的最大问题是什么?如何解决的?

敬宓:作 为程序员在第一年主要遇到的问题有两个:对项目难度和工作量预估不足,以及对工作计划做的不够好,这两个问题都直接导致了后来项目的大幅延期。当时因为项 目需要,带一个小团队从头开始计划写一套分布式的数据存储和统计系统,结果延期了2、3个月也没有完成。最后根据需求重新设计了系统,同时申请了更多资源 大幅扩展了团队规模解决。此后有幸和一个国外团队创业,学习和实践了项目管理的一些方法和技巧,更清楚的认识到之前在这些方面的不足。

5. 对今年的技术背景的毕业生,有什么校招的建议?例如笔试、面试的方法,注意什么?

敬宓:校招主要是重视基础。

6. 对程序员工作的前三年?有什么建议?

敬宓:建议是:尽可能的拓展自己的视野,对所有技术心怀学习的热情和好奇心:不能因为是写代码的,就忽略对硬件的学习;不能因为是写前端的,就减少对算法的了解;不能因为是写 C/C++ 的,就鄙视写 PHP 的;不能因为是做数据、算法研究的,就放弃对工程技术的专研。

本文来自BLUES公众号(微信号:BLUEMIDOU)

余下全文(1/3)
分享这篇文章:

请关注我们:

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注