优秀软件project师必备的7大特性
不是每个程序猿都能成为优秀的软件project师。
在过去的6年时间里,我在Ooyala、Quora和now Quip这3个创业公司面试过许很多多挺有发展潜力的“种子选手”。他们都有着5年以上的工作经验。而且曾为类似于谷歌这种顶级技术公司服务过,可是就是搞砸了面试。
毫无疑问,这些应聘人员都是不错的软件project师,而且,他们甚至可能非常擅长他们眼下的工作。我之所以否决他们,仅仅是由于我不觉得他们能成为一名优秀的软件project师。
我多年的面试、培训和指导经验告诉我。具备一些特殊的品质能让软件project师更easy在创业环境中取得成功。而且,这些品质在初创企业比在一个更成熟的公司更为关键。由于在一家初创企业:
- 1.对产品、软件系统、团队及其文化有一个更为深刻的认识。
- 2.成功更依赖于团队的表现。而非你自己。当然,假设在一家更大更成熟的公司,你的出色表现可能会成为你向上爬的踏脚石。可是在一家又小又新的公司,这根本无足挂齿。
- 3.时间是关键因素,一方面是由于初创企业大多没有盈利,还有一方面则是相较于那些盘根错节根深蒂固的老牌子公司,敏捷是他们最大的优势。时间有限就意味着你必须马不停蹄、加班加点,不能拖拖拉拉磨磨蹭蹭。也没有太多的时间供你挥霍在须要解决的问题上。
我以前有幸合作过的最有效率的软件project师。有着熟练的技术和卓越的决策能力。他们大多内涵下面7种特质:
1.系统调试技巧
编程非常大一部分时间事实上是花在调试上的。实用户报告紧急问题。尽快将其修复。server的CPU出现负载高峰。尽快找出原因。数据莫名遭到破坏,尽快找出罪魁祸首,等等。都是你的工作。
而良好的调试技巧则能让我们干净利落地解决这些问题。
在调试时。我们应该用一种科学严谨的思维看待问题:先如果出错的地方,然后用最有效的方法或者最小可重现的情况去验证。此外调试过程还须要涉及各种的工具:发现瓶颈的分析器、单步运行代码的调试器、缩小回归原因范围的git bisect、交叉分析现状的UNIX命令行等等。
只是。调试的应用范围不只局限于技术领域。
假设产品的增长率和使用率趋于平稳,我们该怎么假设和測试用户的行为以调试未来目标的重心?假设一个团队完不成他们的项目目标,我们该怎么调试才干知道导致项目流产的根本原因是技能不足,团队沟通不畅还是别的其它原因?招聘有的时候并不能尽如人意——你也知道,大家对于你是怎样调试的过程并不能一目了然,不是吗?(关键:先从数据入手)
2.勇于面对未知
作为一名软件project师,你须要常常专研那些又大又不熟悉的代码库:可能你须要好好研究你正在使用的那个开源工具的代码。才干随心所欲地挥洒自如;又或者你须要搞清楚其它团队成员写的代码。由于他没有改动时间等等。所以,高速驾驭大型代码库和精通相关区域的能力显得至关重要。而这样的能力大部分来自于经验。通过阅读过大量代码积累的经验。另一小部分则须要靠我们熟悉能搜索代码库、跳转到相关部分的工具了,以及会查找有关提交历史中的版本号控制——这些捷径都能降低我们去了解新代码所需的时间。假设是在更为成熟的公司,这样的勇于面对未知的精神也能让我们受益匪浅,只是不同的是,我们往往仅仅须要专注并精通一部分代码库就能成果斐然了。
当然。其它非代码领域有时候也须要你去探索。软件project师经常须要接待客户、与销售人员讨论客户要求的可行性、给新的project师培训。以及其它领域的非常多你甚至全然没有接触过的事宜。在这些经历中成长。会让你受益无穷。
3.对决策的务实态度
可能在一家大规模公司,在代码审查和单元測试坚持己见有助于改善组织平衡。
可是在一家初创公司,务实更重要,由于这能让团队高速完毕任务。在这里我所说的务实指的是,知道什么时候应该积极辩论,而一旦有了决策,即便你再不允许,也能一丝不苟地作为团队的一份子认真运行。我以前看到过由于编码风格而相互争执的现象,一个说在源码起码得有80。100,或120个字符和大括号,而还有一个认为应该另起一行。呵呵。我深深地认为,我们还不如把这些宝贵的时间和精力用到更重要的决策上。
对决策的指导启示式评估应该側重于“是否终于能添加团队成功的概率?”。
非常多因素都会对这个问题产生影响:产品的选择、架构的側重点、团队的文化、人才结构,等等。
我们在决策前最好限定讨论的时间,然后坚决运行,各抒己见。
4.善于运用工具
工欲善其事。必先利其器。工具的合理运用能让我们节约大量的时间,而时间则是我们最重要的资源。高效的project师经常是那些善于利用工具的人,而这一点在创业公司尤为重要,由于这里的时间更紧迫。一些大型的组织可能会有专门的工具团队。而在初创公司。你善用工具的能力越强。完毕的任务数量就越多。假设这些工具也为其它团队成员所接受,那么团队生产力将会发生乘数效应。
5.牛逼的多面手
初创企业早期出现的非常多问题事实上并不须要非常专业的知识。具备的技能越多。在解决这个问题时遇到的瓶颈就越少,哪怕我们仅仅是对这些技能有一个最主要的了解,还在摸索熟悉技能的过程中。假设前端Webproject师也装备了主要的server技术(server skill),那下次再遇到与此相关的问题就不必去请serverproject师在百忙之中拨冗相见了。
而后端project师,假如会一些主要的HTML、CSS和JavaScript技能,就能将他所制作的工具设计成一个Web界面,以方便其它团队成员使用。从而不必由于缺乏web设计师而裹足不前。
一个成长中的project师,应该是那种能顺利使用主要的数据分析工具分析实验数据,而不必受制于数据分析员的多面手。
只是,有一种更欢迎“专家”的例外是。假设是在利基、重技术的环境里,比如启动数据库,那么拥有精深的专业知识工作效率会更高。并且。随着创业公司的发展,对于博而不精的多面手,越到后期,能代替你的人就越多。
6.保持玩家心态,而非受害者心态
在Fred Kofman的《Conscious Business》一书中,他描写叙述了人们对待问题採取的两种不同态度。能够是受害者心态,怨天尤人,责备他人的不是(项目时间太少、产品推出不当、以及和队友发生争执等等),通通归咎于外部原因。还有一种就是玩家心态,审视自己的能力,一旦确定能做补救。毫不犹豫地贡献自己的能量。
尽管短时间内,受害者心态能抚慰我们受伤的心情,可是从长远角度看,拥有玩家心态的人才干不断进步与发展。
在创业公司工作压力是非常大的。而且随着压力程度的添加,人们往往不但不能勇于承担个人责任。反而非常easy陷入互相推诿以逃避责任的怪圈。
而这样做,我不得不遗憾的说,最后终将导致失望和解聘。
7.不断学习与回想,持之以恒
研究发现。仅仅要我们有足够的激情和动力,上述种种品质通过学习和培养都是能够后天养成的。而学习这些技巧的全部能量来源于一种叫做“坚忍不拔”的品质。
Angela Lee曾在她的TED演讲《The key to success?
Grit》(《成功的关键:坚持》)中。提及这个概念:
坚忍不拔是一种专注于长远目标的激情和毅力。坚持梦想。坚持未来,不是一天两天,也不是一周两周,更不是一个月两个月。而是持续多年。不畏艰辛、勇往直前。为了目标而奋斗。
假设我们也能拥有这样的坚忍不拔的品质,愿意投入时间回想自己的所作所为,那么就能发现自己的薄弱之处和须要改进的地方。然后随着时间的推移,不断进步的你必将会成为一个更为优秀的软件project师。在早期假设能得到大咖的指点迷津。尽早行进在正确的方向,也能让我们走的更远。
上述这些技能即便是在更为成熟的公司也是能助你一臂之力的,只是在初创公司发挥的作用更大,原因么,上面也有提到,由于初创公司的时间更紧凑。当然。并非说不具备这些技能就不是一个好的project师了。这仅仅能说明。可能你不大适合这样的创业环境。
可是。假设你立志要成为一个优秀的软件project师。不要让上面这7点品质限制你的发展。那么,从如今開始,写个计划学习和提高这些技能吧。
译文链接:http://www.codeceo.com/article/7-feature-programmer-need.html
英文原文:What
Qualities Make a Good Startup Engineer?
翻译作者:码农网 –
小峰
优秀软件project师必备的7大特性的更多相关文章
- 软件project师的属性与发展
工作近十年了.[软件project师] 一直是我职业 title 的中心词,仅仅是前面的修饰语在不断变化,从0基础.中级.高级到资深. 事实上 [软件project师] 是一个非常泛化的定义.工作现实 ...
- Atitit. 高级软件project师and 普通的差别 高级编程的门槛总结
Atitit. 高级软件project师and 普通的差别 高级编程的门槛总结 1. 完备的知识体系 2 2. 编程理论/原理的掌握 2 1.1. 掌握经常使用的概念(ORM,IOC.AOP,eve ...
- 怎样以学习单片机为契机,逐步成为优秀的project师
现状 不知道阅读本文的读者,在初学单片机时是否和我以前一样迷茫.看到各种新的术语,疑惑不解:不知道从何学起:照着书中的样例一步一步做都没有问题,可是自己试着做东西,遇到各种问题却不会解决,向别人提问, ...
- 软件project师周兆熊给IT学子的倾情奉献
[来信] 贺老师: 你好,我是中兴通讯的一名软件开发project师,名叫周兆熊. 近期看了您的新书<逆袭大学:传给IT学子的正能量>,感觉你真心为当代学子答疑解惑.非常值得敬佩! 从上大 ...
- 全端project师必备技能汇总
首先,看一张前端知识结构图: (原文: ithomer) 图片的形式具有诸多的不便.缺失源图的我们.无法为此图贡献些什么,随着时间的迁移,也许有些技术点会发生改变.所以有了这个GitHub项目.我们 ...
- 招一位安防软件project师,嵌入式开发project师
岗位职责 1.负责海思平台IPC产品应用层软件设计及维护 2.私有平台协议对接及为第三方提供技术支持. 任职资格: 1.较强的学习.领悟能力,能够高速熟悉公司现有代码. 2.熟练掌握C.C++开发语言 ...
- 美国程序猿(软件project师)平均年薪状况调查
来源站点:Indeed.com&computerengineeringsalarydata.com Average Software Engineer Salary by 50 States ...
- 2014年java软件project师面试题收集
如果页面中于五个li标签.写个js使点击每个li返回他的index <!doctype html> <html> <head> <style> li{c ...
- 单片机project师必备的知识
C语言编程 程序编译过程 哪部分干什么 数据结构 链表 二叉树 算法 数组 堆栈 队列算法 遍历 常量在内存中的表现形式 语法和内存的相应关系 数电 UML 类图 时序图 状态图 用例图 ...
随机推荐
- maven+ssm+oracle实现简单的增删改查
首先看一下项目结构 第一步先导入jar包 pom.xml <properties> <spring.version>4.3.18.RELEASE</spring.vers ...
- cookie和seesion区别
cookie 和session 的区别详解 这些都是基础知识,不过有必要做深入了解.先简单介绍一下. 二者的定义: 当你在浏览网站的时候,WEB 服务器会先送一小小资料放在你的计算机上,Cookie ...
- ACM_哥德巴赫猜想(素数筛)
哥德巴赫猜想 Time Limit: 2000/1000ms (Java/Others) Problem Description: 哥德巴赫猜想大概是这么一回事:“偶数(>=4) == 两个质数 ...
- CSS 样式的优先级(重要,一定要理解)
1. 同一元素引用了多个样式时,排在后面的样式属性的优先级高 例如,下面的 div,同时引用了 [.default] 和 [.user] 中的样式,其中 [.user] 样式中的 width 属性会替 ...
- P1538 迎春舞会之数字舞蹈
题目背景 HNSDFZ的同学们为了庆祝春节,准备排练一场舞会. 题目描述 在越来越讲究合作的时代,人们注意的更多的不是个人物的舞姿,而是集体的排列. 为了配合每年的倒计时,同学们决定排出——“数字舞蹈 ...
- JQuery中常用的$.get(),$.post(),$.ajax(),$.getJSON(),load()的详解与区别
背景:因为最近需要获取本地的数据件进行项目测试,需要用到JQuery实现数据文件的读取,但是由于对JQuery内的获取文件方式不太了解,这次趁着机会进行一下总结.因为该总结是本人根据平常的使用及网上的 ...
- Android集成二维码扫描功能
文章转载自 https://github.com/yipianfengye/android-zxingLibrary 在具体介绍该扫描库之前我们先看一下其具体的使用方式,看看是不是几行代码就可以集成 ...
- ORA-02068,ORA-03135错误解决方法
今天查看了下ERP DB服务器 alter_<SID>.log日志,发现有个错误 Sat Sep 14 14:49:42 CST 2013 Error 2068 trapped in 2P ...
- Caffe2:段错误(核心 已转储)
测试Caffe的时候, cd ~ && python -c 'from caffe2.python import core' 2>/dev/null && ech ...
- 神经网络图灵机(Neural Turing Machines, NTM)
近期,Google Deep Mind团队提出了一个机器学习模型,并起了一个特别高大上的名字:神经网络图灵机,我为大家翻译了这篇文章,翻译得不是特别好,有些语句没读明白,欢迎大家批评指正 原论文出处 ...