如何辨别一个程序员水平的高低呢?
有的时候单纯靠一个面试很难辨别一个程序员的水平是什么样的。原因很简单,因为很多面试题在网上都有,如果刻意准备那么一般都能回答的不错。所以想辨别一个程序员的水平需要一定的方法。
首先需要确定的是程序员的能力体现在哪些方面。本号以为主要体现在如下几个方面:
- 计算机专业知识的储备
- 逻辑思维能力
- 解决问题的能力
因此,我们在面试过程中主要从上面几个方面进行旁敲侧击,而不是简单的问几个具体的技术问题。
计算机专业知识
计算机的专业知识很广,很难全面掌握。这里我们主要对其从事的子领域进行考察,主要考察其擅长领域专业知识的掌握程度。如果在这个领域掌握的深度可以,那说明他是没问题。欠缺的部分他也应该能快速补上来。
我们举一个简单的例子。比如对于网络开发相关的知识。我们可以由浅入深的来进行提问。大概可以问如下几个问题:
- 是否进行过网络开发,网络开发常用的API有哪些?
- TCP协议与这些API的关系是什么?
- TCP协议是如何保证数据的可靠性的?
- 除了网络问题如何解决?如果抓取网络数据包?
如果面试者能够不仅知其然,还能知其所以然,那么这个人的水平应该还是可以的。当然,这里只是一个例子。由于TCP的问题可能被问烂了,所以很多人可能提前有准备。这个还需要根据领域自己设计问题。
逻辑思维能力
对于大型复杂系统的开发没有比较好的逻辑思维能力显然是不行的。这方面的能力可以通过让面试者设计一个小型的系统来考察。
解决问题的能力
程序天生就是来解决问题,首先是解决业务问题。比如开发电商系统,其实就是解决如何在线上进行销售的问题;其次是解决系统问题,也就是系统出了Bug后,解决系统出现的Bug。
解决问题的能力通常可以让面试者描述一个自己之前曾经解决的问题来考察。当然,面试者通常可能会有所准备,但面试官需要根据面试者的描述进行深挖,找到问题的关键,并对关键点进行深入的提问,确保能考察出其真正的能力。
上述几方面我们称为应能力,还有一些软能力也是非常重要的,比如责任心,对技术的态度,学习能力等等。当然,这些就更难考量了,本文暂不介绍。
如果上述几方面都比较不错,那么这个程序员的水平应该是不错的。即使对目前的工作的知识储备可能还有欠缺,但经过一段时间后必然可以