zoukankan      html  css  js  c++  java
  • 优秀软件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?
    翻译作者:码农网 – 小峰

  • 相关阅读:
    1. shiro-用户认证
    Salt 盐值
    使用ajax向后台发送请求跳转页面无效的原因
    @RequestParam和@RequestBody的区别
    JavaSE:Java11的新特性
    JavaSE: Java10的新特性
    JavaSE:Java9 新特性
    JavaSE:Java8新特性
    JavaSE:Java8新特性
    JavaSE:Java8 新特性
  • 原文地址:https://www.cnblogs.com/zhchoutai/p/6919881.html
Copyright © 2011-2022 走看看