最好的程序员比最差的程序员好28倍。
—— Robert L.Glass
优秀的开发者确实不多见,他们的生产力是普通开发者的3部,是平庸开发者的10倍(来自《人月神话》)。这个世界上的TOP100的开发者不仅能写Solid的代码,而且还具备很多优秀的品质。我于1000多个开发者合作后,总结了7个优秀品质,使他们在程序员中更显卓越。
1、积极的态度
一个优秀的程序员关心自己的产品。他们积极,愿意全力以赴地完成工作,每天都能带来非常好的成就感。很重要的一点是不要消耗开发者,比如频繁修改项目期限。有时不可避免,优秀的程序员会尽可能加快产品的发布,他们在乎和不愿意防碍项目的进程。 具有积极态度的好方法是给他们做一个有趣的项目,让他们有自主权,赞美他们做好工作。
初创的互联网公司可以发放股票期权,给加班工作的员工,提供补偿性的带薪休假,或找到确保优秀程序员其他的福利。
怎样测试这些技能
面试的样题,4次重要面试,GitHub的项目。
其它问题:
你怎样处理冲突?(冲突处理或面向解决方案)
你认为自己很幸运吗?(傲慢或谦虚)
你愿意怎么样面试?(抱怨者或没有后顾之忧)
在这些人里,你不愿意和谁合作?(关于老板)
2.有良好的沟通技巧
良好的沟通能力与良好的开发能力有关。一个优秀的开发者能够清晰地了解问题,并分解成不同的假设可能,以一致的方式提出解决方案。他们可以快速理解新概念,或者要求掌握更确切的问题,并不需要写什么规范文档。优秀的开发者能够适合多种语言,而且擅长阅读英文文档。在技术世界中,英语是绝大多数文档,以及开发人员互动的通用语言。即使他们说的不够流利,他们会使用翻译工具或者利用翻译。把知识放在第二位,并且能够快速适应。
如何测试这个技能
模拟一个Scrum会议,看他们如何交互的。
给他们一个问题/场景,看他们如何沟通。
3,时间管理和任务管理
优秀的开发者非常主动、可靠。他们有极强的工作伦理,能够准时出席会议。一个非常非常重要的技能是能够准确衡量完成任务的时间表,能够准确传达和交付成果。卓越的开发者会管理客户,是领导,而非管理者。
如何测试这个技能
这通常在碎片化的时间。测试这些素质的好方法是一个短期项目,要求一个时限,每个人都要提供开发的反馈。通过这些会很快识别您所在团队人员的优劣势,根据能力绩效开发团队潜质。如果有人没有交付,也许需要你“做出艰难的决定”,让他们脱颖而出,尝试一些新东西。
4.快速学习能力
优秀的开发人员通常有着惊人的自学能力。他们自己有能力学习新技术,不受新技术的威胁。他们还有能力即时抽出不同的信息并即时处理信息。每个程序员都会遇到他不知道答案的情况。优秀的程序员会找到不同的资源,与合适的人讨论并找到解决方案。
任何人都可以拥有如何学习的能力。而卓越的开发者掌握了自我学习的诀窍。
如何测试这个技能
通过快速提问
案例访谈
古怪的问题
5.深度和较广的技术经验
优秀的开发者会脱颖而出,成为专家,胜任很多工作。 当你寻找到一个与自己产品相仿或使用相同技术的程序员,您的项目会更容易成功,因为他们已经掌握了正确的技术。 他们会严守编码标准,并且能够写出容易理解的代码,并在有必要时一起讨论,并且可以很轻松的传达给别人。
通过结合他们的认知能力和多个行业的经验,能够快速形成最佳解决方案。
有经验的的开发者精通敏捷开发,任务管理(如使用jira,Trello等),版本被控制(比如他懂得Git,代表他从旧的SVN上进行了知识升级)等软件的最佳实践。
另外,他能够在不同的工作环境中切换,如本地开发环境与部署远端后的应用环境。
如何测试这个技能
提问他以前工作的例子,展示他以前的产品,发送代码样例或优秀功能的抓图或演示。
也可以与他以前服务的老板或CTO讨论,了解他的技能和其它软实力。
编程算法挑战:尽管这类的技能与实际开发有一些区别,但是开发者如果在短时间内成功搞定一些困难的算法问题,那么,我们知道这位聪明的人对计算机科学技术掌握有深度。
Hackathons:黑客马拉松。现在很多公司已经从这里面招聘了。在这类活动中,你会看到高素质的程序员在几小时内构建出软件。这对于评估编程效率,创建高可用的软件以及独立作战与团队合作的极好方法。
6.一个团队好玩家
优秀的开发者的另一个上佳品质是可以帮助其它开发者变得更好的能力。他们在别人遇到困难时提供帮助,为他人讲解新技能,并且提供文档,不仅在公司中帮助队友,还在技术社区中分享更深入的技术。
如何测试协作技术能力
7.高端用户聚集
一个优秀的程序员会考虑更全面的问题,卓越的程序员会把自己当成小白,当成使用软件的最终用户,努力在组织的能力为他人解决问题。
卓越的程序员知道自己做的功能是具备高价值的,当产品为更多的人创造价值,他会得到更多的回馈。
如何测试技术领导力
其它考虑事项
当专长被高估:技术专业知识很重要,但也不是被招募的唯一因素。具有快速学习能力,积极的态度、领导力的人会更有创造性,更能对公司提供有大价值的解决方案。技术专长常常伴随着我们,我们能够在众多场景中,有正确的态度对待自己的专业。
成熟的公司会按一种模板化的职位描述,成为固定的标准后,变得牵强灵活。
恰恰地,在产品启的方案中,解决问题的能力、学习能力等多面选手在小团队开发的工作显得非常重要。
你是否能成为一个卓越的开发者?
强大并强壮的心灵。随着在线课程的普及,我们不必去学校里也能成为一个优秀的开发者。然而,很多卓越的程序员走进了校园,专门学习计算机科学技术,获得学位。他们知道这有助于更好的理解计算机和系统架构,能够从整体观念理解计算机编程。
另外,与最新的技术同步,让自己随时焕然一新。大量的阅读关于最新趋势的文章与博客。在业余时间尝试新工具,新玩具,跟随技术社区,积极参与技术会议,并通过写作为社区分享增值。
看到这儿,你有什么感想?很乐意在评论区听到您的意见!
译者:21CTO社区
作者:Damien Filiatrault
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/industrynews/256984.html