不是每个程序猿都能成为优秀的软件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大特性的更多相关文章

  1. 软件project师的属性与发展

    工作近十年了.[软件project师] 一直是我职业 title 的中心词,仅仅是前面的修饰语在不断变化,从0基础.中级.高级到资深. 事实上 [软件project师] 是一个非常泛化的定义.工作现实 ...

  2. Atitit. 高级软件project师and 普通的差别 高级编程的门槛总结

    Atitit.  高级软件project师and 普通的差别 高级编程的门槛总结 1. 完备的知识体系 2 2. 编程理论/原理的掌握 2 1.1. 掌握经常使用的概念(ORM,IOC.AOP,eve ...

  3. 怎样以学习单片机为契机,逐步成为优秀的project师

    现状 不知道阅读本文的读者,在初学单片机时是否和我以前一样迷茫.看到各种新的术语,疑惑不解:不知道从何学起:照着书中的样例一步一步做都没有问题,可是自己试着做东西,遇到各种问题却不会解决,向别人提问, ...

  4. 软件project师周兆熊给IT学子的倾情奉献

    [来信] 贺老师: 你好,我是中兴通讯的一名软件开发project师,名叫周兆熊. 近期看了您的新书<逆袭大学:传给IT学子的正能量>,感觉你真心为当代学子答疑解惑.非常值得敬佩! 从上大 ...

  5. 全端project师必备技能汇总

    首先,看一张前端知识结构图:  (原文: ithomer) 图片的形式具有诸多的不便.缺失源图的我们.无法为此图贡献些什么,随着时间的迁移,也许有些技术点会发生改变.所以有了这个GitHub项目.我们 ...

  6. 招一位安防软件project师,嵌入式开发project师

    岗位职责 1.负责海思平台IPC产品应用层软件设计及维护 2.私有平台协议对接及为第三方提供技术支持. 任职资格: 1.较强的学习.领悟能力,能够高速熟悉公司现有代码. 2.熟练掌握C.C++开发语言 ...

  7. 美国程序猿(软件project师)平均年薪状况调查

    来源站点:Indeed.com&computerengineeringsalarydata.com Average Software Engineer Salary by 50 States ...

  8. 2014年java软件project师面试题收集

    如果页面中于五个li标签.写个js使点击每个li返回他的index <!doctype html> <html> <head> <style> li{c ...

  9. 单片机project师必备的知识

    C语言编程 程序编译过程  哪部分干什么 数据结构  链表 二叉树 算法   数组  堆栈 队列算法 遍历 常量在内存中的表现形式 语法和内存的相应关系 数电 UML 类图 时序图 状态图 用例图   ...

随机推荐

  1. Boost(1.69.0) windows入门(译)

    目录 Boost windows入门 1. 获得Boost源代码 2. Boost源代码组织 The Boost Distribution 3. 仅用头文件的库 Header-Only Librari ...

  2. Android内存管理(13)常见产生内存泄漏的原因

    1.集合类泄漏 集合类如果仅仅有添加元素的方法,而没有相应的删除机制,导致内存被占用.如果这个集合类是全局性的变量 (比如类中的静态属性,全局性的 map 等即有静态引用或 final 一直指向它), ...

  3. 附加数据库错误代码 - 5120【MSSQL】

    解决方法 数据库所在的文件夹右击打开属性 - 安全 - 给予Authenticated Users用户完全控制权限.然后再附加一次即可成功.

  4. js技巧(一)

    1.文档入口函数 window.onload = function () { //code 将会在页面的全部代码执行完成之后再去执行. } 2.弹窗   alert()   警告窗   confirm ...

  5. nginx+tomcat实现负载均衡集群

    一台tomcat站点由于可能出现单点故障及无法应付过多客户复杂多样的请求等问题,不能单独应用于生产环境下 所以需要一套可靠的解决方案来完善web站点架构 而Nginx只能访问静态页面,如果需要动态需要 ...

  6. C# 后台POST提交方式

    1.第一种方式:用最新框架,但是针对IIS服务器的操作系统有关系,非R2的收不到数据: using (var reqConts = new MultipartFormDataContent()) { ...

  7. OI数学知识清单

    OI常用的数学知识总结 本文持续更新…… 总结一下OI中的玄学知识 先列个单子,(from秦神 数论 模意义下的基本运算和欧拉定理 筛素数和判定素数欧几里得算法及其扩展[finish] 数论函数和莫比 ...

  8. 腾讯云,搭建Docker环境

    安装与配置 Docker 任务时间:10min ~ 20min 安装 Docker Docker 软件包已经包括在默认的 CentOS-Extras 软件源里.因此想要安装 docker,只需要运行下 ...

  9. AtCoder ABC 085C/D

    C - Otoshidama 传送门:https://abc085.contest.atcoder.jp/tasks/abc085_c 有面值为10000.5000.1000(YEN)的纸币.试用N张 ...

  10. eclipse 快捷键及使用技巧

    一.程序的编译和运行的环境配置(一般不改) window -- Preferences -- Java 编译环境:Compiler 默认选中的就是最高版本. 运行环境:Installed JREs 默 ...