作为技术研发人员,有时候会有一个灵魂拷问:你跟牛人的差距在哪里?
学历?大厂好项目机会?名师指点?个人勤奋努力?IQ?会玩名词?会站队?当然这里从技术牛人角度说,会站队当舔狗这个不在本文讨论范围内。高层次科技技术人才每天都在干什么,什么才能算是展现你技术能力的杀手锏,多看看外面的世界或许就能找到答案。这里提一个最高逼格的杀手锏:“学术思维能力”。
众所周知,研究生阶段的教育主要就是关注“学术思维能力”的培养,就像去医院看病需要吃“药”一样,学生思维就需要读Paper(论文)。例如领导让你搞个培训,要想有深度,那还是需要弄几个论文参考下。怎么才能进入这个科学学术的大门?就像我们刚接触电脑一样,那必须会用“百度”啊。
本文为你普及一下基础的学术搜索知识,仔细研究下或许能提升你的一个level,当然学术大佬可以略过。然后分享一篇论文《What Makes A Great Software Engineer?》,没错这里直接使用英文了,门槛就是门槛,不过可以借助翻译软件,后续会提到,翻译过来就是《怎么造就一个伟大的软件工程师?》。
1. 谷歌学术
网址:https://scholar.google.com.hk/?hl=zh-CN
我们输入英文索引就可以去查各种资料了,例如这里我们输入:what makes a great software engineer
看到PDF就是有资源,可以直接下载就可以了。一般是高校自己的网站或者某个教授自己的个人主页会提供免费下载。但是去IEEE和ACM上下载就需要付费用户了,一般高校都是买过授权付费的。对我们来说就只能根据索引找点免费的看看了,或者找高校的朋友给你下载。
2. 百度学术
网址:https://xueshu.baidu.com/ 如果谷歌访问不了,那国内的百度学术也能凑合用,例如这里我们输入:what makes a great software engineer
这个免费下载也可以下载到。
另外如果在高校,可能直接推荐你用IEEE或者ACM去搜索。当然知网这种国内的平台,我们基本可以忽略。都研究到学术了,非英文的论文应该是价值很小,一些好学校的论文还可以。
3. 伟大软件工程师的特质
其实这篇文章主要想分享下这个论文,就顺带提了下怎么搜论文。另外看上面是2015年的文章,这里可能有一个误解:这么古董的文章还值得看的不?这里要解释下科研界和工业界有一个时间差,计算机也需要一二十年,医学甚至需要50年以上。也就是从理论论文的提出,到最后的应用估计要等几十年后。这个就是现实,科研界的很多思路真是吊打目前的应用,所以转化也是比较难的,甚至很多理论完全没有经济价值,可谓纯纯的“屎上雕花”。但是思想的开发是要鼓励的,即便是没用的东西,思路开阔,没准有一天能衍生出来有用的东西。进入正题,论文网址:https://faculty.washington.edu/ajko/papers/Li2015GreatEngineers.pdf
微软的工程师和华盛顿大学合作写的论文,用的英文,pdf可以直接翻译成中文,想看的快的话,用搜狗翻译也不错。这里也不一定非要看英文的,如果时间紧急,翻译成中文可以一目十行,但是英文看一行老费劲,还看完就忘记。但是要锻炼内功还是多看看英文比较好。
3.1 摘要和索引
- 重要性:Good software engineers are essential to the creation of good software.
- 提出问题:what are all the distinguishing attributes of great engineers (technical expertise and beyond)?
- 解决问题的思路:We took a first step in addressing these gaps by interviewing59 experienced engineers across 13 divisions at Microsoft, uncovering 53 attributes of great engineers. -成果:We explain the attributes and examine how the most salient of these impactprojects and teams. We discuss implications of this knowledge on research andthe hiringand training of engineers.
总结下:在微软的13个部门里面采访了59名优秀员工,找到优秀软件工程师的53个特点,这些特点对公司特别的重要。当然对我们从业者或者相关管理者和很重要,所以才分享这篇文章。
3.2 介绍
- 研究的问题:whatmakes a software engineer great?
- 需求:employers want to hireand retain great engineers, universities want to train great engineers, and young engineers want to become great.
总结下:就是其他研究者的一些成果和方向的缺点,自己的为什么不同,为什么好,感觉就是扯皮一下,为自己正名。一般这个环节,感觉就是在忽悠或者错误引导,来突出自己,不过别让人找到破绽就可以。所以这个学术思维有时也很偏激,但是偏激还有利于科学技术的发展。如果什么都中庸,和事佬就不搞什么研究了。
3.3 正文(优秀软件工程师的特质)
这里进入正文,挑一下主要的点讲下,希望能够借鉴,尽量文字少,因为懂的就一个口诀就懂,不懂的长篇大论也是无用,重在实践。
- 内部属性:个性和做出有效决策的能力
- 外部属性:伟大的工程师对人和产品的影响
对工作充满热情并不断改进的人;谁开发和维护实用的基于理论和经验的决策模型;他们发展自己的能力,生产出优雅的、有创造性的、预见需求的软件;他们在多个抽象层次上评估权衡,从低级技术细节到宏观战略;队友信任并喜欢一起工作的人。
关于个人特征:
- 追求进步:对现状不满,不断的改进自己、产品、环境。不断更新自己的知识体系
- 热情:对领域内的技术和牛人都很热衷,不只是为了挣钱,有时甚至有些信仰
- 思想开放:愿意接受新的信息和思维方式,特别是进入高价值领域,即使什么都不懂
- 数据驱动:量化评价事物的好坏,而不是个人期望、喜好和直觉
- 好奇:希望知道为什么
- 高效:快速的编码和debug
- 努力:努力超过预期目标,面对陌生的技术能自力更生
- 专注:不被会议什么的干扰,快速使用新环境
关于决策:
- 了解周围的人和组织:了解同事的责任、知识和倾向,以与正确的人沟通来调整他们的工作
- 看到树木和森林:在多个抽象层次上考虑情况,包括技术细节、行业趋势、公司愿景和客户/业务需求。可以快速准确地在各个层次进行推理,从许多不同的角度看待事物。做出全局最优的决策,避免局部优化。
- 心智模型:有自己体系认知,并不断的优化,不循规蹈矩,尽量站在历史正确的一边
- 复杂性问题处理:可以将不同的事情联系起来,有架构思维。轻松处理复杂性,敏捷地理解和推理复杂且相互交织的想法。
- 了解客户和业务:熟悉他们的软件产品在客户生活中扮演的角色,以及随之而来的业务主张。
- 了解项目的组成和工作流程:了解项目各个点的优缺点,构建最佳实践,了解目的并高效完成,评估出时间和成本。
关于队友:
- 有效沟通:了解你的沟通对象,把要说的话拉到沟通对象的层次。了解对方的需求和语言,促成跨团队合作。
- 目标一致:根据不同人的动机,进行协作。例如伟大的工程师通常对细节有更好的理解;管理者通常对形势有更广阔的视角。统一目标,避免资源浪费。
- 维护团队稳定:多鼓励,有成长,人才会留住
- 诚实可信:不为了自己的利益歪曲事实,或者推卸责任。创造个人影响力,建立信任,有自己的立场,有一定的人格魅力,号召力。
- 愿意帮助他人:积极给予他人指导,对于认同的政策积极推动。
关于软件产品:
- 优雅的:设计简单直观,容易理解,避免复杂性。
- 创造性:基于环境约束、现有方案局限性进行创新。
- 预测需求:可以预见产品的规模(例如更多用户)、可行性(例如技术进步到可能出现新事物的程度)和集成(例如与其他软件产品一起工作)
- 细节和迭代:对开发过程中的错误处理、内存消耗、性能和风格进行约束,并迭代解决小问题。
3.3 总结
首先对研究的有效性和重点进行了说明。然后强调了下文章的对象和作用:
- 软件工程师:都适用
- 新手工程师:评估是否适合这个公司
- 管理者:招聘人才可以用,提高团队人员能力
- 教授:为软件工程增加怎么样成为伟大工程师的课题。
3.4 未来工作
对伟大工程师的这些属性,进行组合或者深入细微的研究,并对重要性进行排序。不仅限于软件工程师,进行多领域扩展。评估使用影响效果。
最后就是感谢,一般就是金主门,大公司或者美国国家科学基金会。
麻雀虽小,五脏俱全,这么一篇英文论文就读完了。虽然其好像没谈论什么技术,但是软件工程这种问卷调研也算冷门的技术,也是能发表的,而且你也不能说它没用,其调研的对象的时间都非常的金贵的啊。其他的论文可以自己把名字翻译成英文在谷歌学术里面自己搜,越高深的技术,研究的人越多,甚至都被研究烂了。
另外对于搜索出来基本理论论文的时效性,不用太怀疑,有时候50年前的理论还是有用的,一场跨越时空的思想碰撞。特别是我们现在学的数学是欧洲200年前的知识,你能信?拿近两年爆火的大数据模型来说,也是18年谷歌出的transform论文,但是21年底的时候,突然openAI拿这个算法训练了一个超级大的数据集而引发智力涌现,才火爆起来,也就是说理论老早有了,但是当时都不知道怎么用。突然有了一个落地应用才爆火,然后资本才一拥而上。
后记:
分享的这篇论文就是讲程序员怎么能力提高,里面的提到的点,如果你的领导阻止你进行,那就是你的领导不希望你的能力提高。在国内这个环境下,这样的领导估计大有人在,害怕能力太突出的下属而威胁到自己。但是真金不怕火炼,努力构建自己的圈子,要么革命要么成为他们,但是无论如何打铁需要自身硬,弱者抱怨环境,强者改变环境,干就完了。
本篇文章写的其实有点托大,笔者其实很拉胯,也没什么资格说这些,一同分享学习共勉。希望程序员牛马们,努力干活的的同时也要停下来看看脚下的路,思考下怎么能变的更好。