译者 | 李睿
审校 | 重楼
极客程序员具备的编程技术就像多功能的工具,但是每种技术都是用语言表达的模式集合,而且大多数都不是新的模式。如果人们理解了这些模式,就可以很容易地理解体现它们的任何编程技术。
行业专家指出,擅长编程并不是优秀开发人员的标志。例如一名才华横溢的开发人员在工作时间付出全力创建清晰、准确、可维护的代码,在午餐时谈论工作以外的事情,然后按时下班享受从键盘释放出来的生活,这有什么错呢?
以下是专家认为优秀程序人员必须具备的五种关键能力。而要了解为什么这些能力很重要,需要思考软件是什么:软件不是无穷无尽的一系列语句,也不是对API的任意调用的集合,更不只是代码的剪切和粘贴。与其相反,它是一个高度结构化的代码层次结构网络,几乎不采用复制的代码(不一定是GOF模式,而是像“延迟初始化”、“模型驱动的代码生成”或“XML脚本”这样的模式)。软件只有在满足业务需求并且质量足够好的情况下才有用。因此,需要对开发人员具有的能够实现这些目标的能力进行评估。
1.分析:条理清晰,善于思考,善于解决问题的能力
如今,很多人将沉着、自信或快速连续的陈述误认为是智力,其实这是一种特征,因此人们需要非常了解开发人员的智力特征。
软件是关于功能和结构的分解,所以智力的关键方面是天生的、后天的或意志力的分析能力。善于分析的人会从多个角度考虑问题,并选择总体中最好的方法,然后能够将一个问题分解成多个子问题。
在面试求职者的过程中,就可以很容易地发现这种能力,因为求职者会很自然地试图澄清模棱两可的问题,或列出一个解决方案的组成部分和关系,或列出一个问题的“头部和尾部”,在详细讨论之前确定它的范围。
为了检测这种能力,不需要向他们提出一个新问题,只需要让他们描述做过的任何事情:例如开发的软件、面向对象、软件开发的角色或过程、互联网等,或者是真实或理想的城市的布局、民主的本质、进化的定义和操作等等。
当完成描述后,面试者考虑一下是否听到列举了这些片段,或者求职者是否描述了问题的核心。这就是他们采用的分析能力。
继续阅读要想成为优秀程序员,你要具备这五种关键能力