迅雷会员帐号分享平台-爱密码网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

搜索

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

2016-10-29 12:25| 发布者: 管理-小猪| 查看: 554| 评论: 0

摘要: 迅雷公司有过三位首席工程师,本文邀请了其中两位,刘智聪、敬宓,聊聊程序员的职场发展之路,为保持技术大牛的风格,以下文字源于两位首席工程师的原创。刘智聪,迅雷首席工程师1984年出生,从小自学编程,毕业于南 ...

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


刘智聪,迅雷首席工程师


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. 对程序员工作的前三年?有什么建议?



鲜花

握手

雷人

路过

鸡蛋

相关分类


QQ|小黑屋|手机版|Archiver|爱密码网 ( 粤ICP备12085165号-2

GMT+8, 2017-1-24 17:04 , Processed in 0.083852 second(s), 19 queries .

Powered by Discuz! X3.2 Licensed

© 2001-2013 Comsenz Inc.