Skip to content

加餐六 | 什么才是所谓的编程能力?如何考察一个人的编程能力?

什么是编程能力?

所谓编程能力,指的是把“逻辑”(或者说“功能”“业务”)翻译成代码的能力。所谓编程能力强,指的是,不仅能编写正确的代码,而且编写代码的速度很快,写出来的代码 bug 很少、性能很好、质量很高。

编程能力强的特征

  • 能熟练使用编程语言、开发类库等工具,
  • 思路清晰,面对复杂的逻辑,能够编写出 bug free 的代码,
  • 能够合理地利用数据结构和算法编写高效的代码,
  • 能够灵活地使用设计思想、原则和模式,编写易读、易扩展、易维护、可复用的高质量代码。

编程能力差的特征

  • 往往逻辑思维能力比较差,面对复杂的逻辑,编写代码的速度很慢,而且容易考虑不周,写出来的代码 bug 很多,
  • 更没有性能意识,不懂得如何分析代码的时间复杂度、空间复杂度,
  • 更不懂得如何借助现成的数据结构和算法来优化代码性能。
  • 除此之外,写代码的时候,几乎不考虑代码的可读性、可扩展性等质量问题,只追求能运行就可以。

如何考察编程能力?

从上述编程能力的定义及描述中,能很清楚地了解,考察一个人的编程能力的几个要素 —— 主要包含这样三个方面:

  1. 编程语言
  2. 数据结构和算法
  3. 设计思想、原则和模式。

白板编程

白板编程在外企面试中比较流行,国内有些候选人不怎么能接受,特别是工作年限比较长的候选人,一听说要写个代码,就觉得这是在“羞辱”他,觉得不应该从这么基础的东西考起。

只要是应聘一线技术研发岗的候选人,不管是资深工程师、架构师,还是技术 Leader,都要求他现场写一段代码。因为这是最直接、最有效检验这个人基本技术素养的途径。

考察重点

一般来讲,编程语言都可以快速掌握,所以,一般不把它拎出来单独考察,只是顺带着考察一下就可以了。 需要重点考察后两个方面:数据结构和算法,设计思想、原则和模式。

如何提高编程能力?

实际上,两个专栏《数据结构与算法之美》《设计模式之美》,就是为了提高编程能力而设计的。

  • 《数据结构与算法之美》专栏教你如何写出高性能代码
  • 《设计模式之美》专栏教你如何编写易读、易扩展、易维护的高质量代码。

数据结构和算法的练习

对于数据结构和算法的练习,推荐多刷 LeetCode 上的题目

刷题不仅仅能加强你对数据结构和算法的掌握,还能锻炼你的逻辑思维能力、写出 bug free 代码的能力、快速实现复杂逻辑的能力,也能锻炼你的性能意识。所以,刷题不只是为了面试,刷题对这些能力的锻炼,都有助于你在平时的业务开发中写出好的代码。

设计思想原则和模式的练习

对于设计思想原则和模式的练习,就不像算法练习那样有现成的题库了。所以,要在平时的开发中进行练习

比如,拿到一个功能需求的时候,先去思考一下如何设计,而不是上来就写代码。

写代码时,我们时刻思考代码是否遵循了经典的设计思想、设计原则,比如是否足够可扩展、是否满足 SOLID 原则、可读性如何等等。

写完代码之后,我们再思考一下,代码是否有进一步优化的空间。

做 Code Review 的时候,看到别人的优秀的代码,我们就去思考一下,有哪些值得借鉴的地方。

总之,在平时的开发中,我们要刻意地去做这种跟代码质量、代码设计相关的思考训练。时间长了,这种思考就能成为习惯、本能反应,慢慢地,你的代码能力也就不自觉地提高了。这一部分内容可以回过头去再看下第 100 篇,前面有非常详细的讲解。

总结

Tips

实际上,不管从事什么行业,要积累的东西都可以分为“变”与“不变”两类。“不变”的是内功,“变”的是招式。

我们要善于发现、持续积累那种“不变”的能力,而不是要去盲目追逐一直都在“变”的招式。