我理解的优秀软件工程师

最近越来越多人的在谈论 全栈工程师 (full stack),从某种意义上来说,一个优秀的工程师,必然是一个全栈工程师,或者至少一两种跨语言、平台工作的能力。 就我个人的理解,来探讨一下如何定义一个优秀的工程师。

简单版本

聪明、好沟通、自我驱动、有激情。

复杂版本

  • 有扎实的基础知识。理解计算机、操作系统、编译、链接、装载等各个环节的原理;理解网络原理;熟悉常见算法和数据结构。
  • 深刻的理解至少一门计算机语言。有完整的用一种语言实现一个产品的经历,有10万行以上的编码经验;完整掌握整套工具链。
  • 有良好的学习能力。可以阅读英文文档,经常上几个活跃的英文网站看文档、代码。可以在几个星期内上手一门语言。
  • 良好的沟通能力。可以有条理的描述事情、问题;能根据对方的背景,用对方更能理解的语言沟通;习惯编写友好的文档;有良好的心态接受挑战,并从中找到积极因素。
  • 良好的自我管理能力。可以在复杂繁多的问题里,找到最能推动项目前进的点;在有限的时间内,达到既定目的,并能控制风险。
  • 有追求更好最佳实践,更佳方法的激情。

除了上面列举的具体能力,还有一个非常重要,或者可能最重要的是,知道自己什么东西不懂。

虽说列举了很多,但个人感觉还不够。一个以技术为导向的公司,顶级工程师的能力直接决定了整个公司的能力。

最近观察美国的几个小而美的互联网创业公司,几乎都有很好的技术实践,有的创始人更是跨 产品设计、视觉设计、软件设计、文档编写的更大范围的 full stack。

关于作者:

Tiger

weibo: @Tiger_张虎, 云巴 (yunba.io) 创始人,yunba.io 云后端服务。 JPush 创始人,原CTO。 Oracle VM 创始团队成员。

时间: 2024-11-11 00:34:35

我理解的优秀软件工程师的相关文章

哪个才是优秀的软件工程师

感觉写程序和修路很像,比如同样是修一条高速公路,工期5年: 软件工程师A,一开始就会设计好路线,规划好使用的材料及工具,充分考虑到在实施过程可能出现的新需求或者未知情况的应对策略,结果就是用了2年又快又好的保质保量完成任务,顺利通车,剩下3年开始坐着收钱. 软件工程师B,一开始啥也不知道,对需求不太理解,自己也没有顺手的工具,反正是风风火火的干起来了,所有的东西都堆到一起,并且自己不停地造轮子,干到哪里想到哪里,结果就是不停的挖坑填坑,不停的改变路线,用了4年半的路才勉强通车,虽然最终也收了点钱

一位软件工程师的6年总结

一位软件工程师的6年总结 一位软件工程师的6年总结http://www.jsjbbs.cn/thread-3001-1-1.html(出处: http://www.jsjbbs.cn/) “又是一年毕业时”,看到一批批学子离开人生的象牙塔,走上各自的工作岗位:想想自己也曾经意气风发.踌躇满志,不觉感叹万千……本文是自己工作6年的经历沉淀或者经验提炼,希望对所有的软件工程师们有所帮助,早日实现自己的人生目标.本文主要是关于软件开发人员如何提高自己的软件专业技术方面的具体建议,前面几点旨在确定大的方

JAVA软件工程师应该具备的技能有哪些?

前言:有朋友问我:学历和能力哪个重要?我个人觉得能力大于学历,没有能力哪来的学历,学历只是证明能力的一方面.为此在能力方面畅谈java软件工程师必备的能力.作为一名合格的java工程师,不仅需要学历,更重要要有扎实的能力(技能)功力. 1.编程语言能力. 作为一名专业的软件工程师,应该能够熟练掌握JAVA语言,并且能够深入理解OOP.OOA.OOD等编程思想.精通一门编程语言能为以后的软件开发打下坚实的基础. 2.编码能力. 这里说的编码可不是照着书本敲代码,而是能够独立的运用代码,编写一个程序

明星软件工程师的10种特质(转)

如今,每家公司都似乎成了科技公司.从软件创业公司到投机性投资公司.制药巨头和媒体巨头,它们都越来越多地加入到软件业务行列.代码质量不仅成为了一个必需品,更成为了一个竞争优势.因为众多公司围绕软件而竞争,开发软件的人——软件工程师正显得越发重要.但是,你该如何发现那种百里挑一的程序员呢?在本文中,我们简明扼要地列出了明星开发人员的10种特质. 1. 热爱编程 2. 完成事情 3. 持续重构代码 4. 使用设计模式 5. 编写测试 6. 善用现有代码 7. 专注可用性 8. 编写可维护的代码 9.

一位软件工程师的7年总结

1.分享第一条经验:“学历代表过去.能力代表现在.学习力代表未来.”其实这是一个来自国外教育领域的一个研究结果.相信工作过几年.十几年的朋友对这 个道理有些体会吧.但我相信这一点也很重要:“重要的道理明白太晚将抱憾终生!”所以放在每一条,让刚刚毕业的朋友们早点看到哈! 2.一定要确定自己的发展方向,并为此目的制定可行的计划.不要说什么,“我刚毕业,还不知道将来可能做什么?”,“跟着感觉走,先做做看”.因为,这样的观点会通过 你的潜意识去暗示你的行为无所事事.碌碌无为.一直做技术,将来成为专家级人

第三章 软件工程师的成长

3.1 个人能力的衡量与发展 软件开发流程不光指团队的流程,还包括个人开发流程,因为软件团队是由个人组成的.在团队的大流程中,是每个具体的个人在做开发.测试.用户界面设计.管理.交流等工作.因此个人在团队中也有独立的流程. 以开发人员为例,流程如下: *通过交流.实验.快速原型等方法,理解问题.需求或任务 *提出多种解决办法并估计工作量 *其中包括寻找以前的解决方案,因为很多工作是重复性的 *与相关角色交流解决问题的提案,决定一个可行的方案 *执行,把想法变成实际中能工作的代码,同时验证方案的可

现代软件工程 第三章:【软件工程师的成长】练习与讨论

1.选哪一种医生? 分析一下四个医生, a)属于新手类型,能力有限,经验不足,主要能完成功能就可以.bug会比较多,代码也不规范. b)属于创造类型,既然能想到新技术和新方法,说明必然有一定的经验.但是创新虽好,也可能失败,成功可能性跟自己的能力有关. c)属于熟练类型,对于代码的实现相当熟悉,能够快速的实现功能需求. d)属于糊弄类型,相当之不靠谱,明眼人都知道,但有时瞎猫碰见了死耗子或者民间高手也有可能出现. 你要选哪类医生? 我会选c类型的医生,虽然创新不能保证,但可以保证最基本的功能需求

软件工程师的成长

软件工程师不仅仅是坐在电脑前打打代码的职业,更多的是理解和协调一个大软件工程的工作. 软件工程包括了考法.运营.维护软件的过程中的很多技术.做法.习惯和思想.软件开发流程不光值团队的流程,还包括个人开发流程,因为软件团队是由个人组成的.首先,一个软件工程师怎样.通过什么方法来衡量自己的能力和价值呢?对于初级软件工程师,这本书中介绍了几种成长:1.积累软件开发相关的知识,提升技术技能:2.积累问题领域的知识和经验:3.对通用的软件设计思想和软件工程思想的理解:4.提升职业技能:5.实际成果.从这5

一位软件工程师的7年总结 [转]

原文出处:http://www.oschina.net/discuss/thread/500 1.分享第一条经验:“学历代表过去.能力代表现在.学习力代表未来.”其实这是一个来自国外教育领域的一个研究结果.相信工作过几年.十几年的朋友对这 个道理有些体会吧.但我相信这一点也很重要:“重要的道理明白太晚将抱憾终生!”所以放在每一条,让刚刚毕业的朋友们早点看到哈! 2.一定要确定自己的发展方向,并为此目的制定可行的计划.不要说什么,“我刚毕业,还不知道将来可能做什么?”,“跟着感觉走,先做做看”.因