由前一篇文章的分析,可以归纳出编程能力具体有什么。在最基础的要求——正确性之外,以下按照重要性给出四种能力:

  • 代码组织能力:考察的是于可读性、简洁性/灵活性、高效性之间做平衡的能力。
  • 逻辑设计能力:考察的是选取合适的形式语言描述需求,使得需求能够简单的转化为功能的能力。在大型项目中,这个能力通常与程序员无关。
  • 代码熟悉度:考察的是对于用于实现功能的代码和工具的熟练程度。
  • 代码编写速度。

如果将整个编程比喻做搭积木的话,这四种能力依次大概对应着:

  • 为了拼出成果,积木和积木、积木和配件之间如何搭配最好。
  • 一个大的目标是否需要/能否分成几部分分别拼出后组装。
  • 熟悉每个选用的积木的大小,颜色,以及配件如何使用等。
  • 拼积木的速度。

显然,编程具有极强的实践性。为了增强编程能力,就需要写各种代码,主要可以分为两种:

  • 题目:以实现一个功能或其部分为目标,考察的是代码细节;
  • 项目:以实现完整的需求为目标,考察程序员全方位能力。

笔者推荐新手依次这样做:

  • 选择一个大众语言,练习使用这个语言的核心语法和功能;
  • 练习以基础算法和数据结构为核心的算法题目;
  • 进入各计算机专门领域进行项目开发。

题外话一:关于搜索和学习

学习编程不可避免的会出现各种各样的问题,比如代码出现bug、查找功能/需求的实现方法等。大部分情况下,程序员需要从网络上获取信息,这也是最简单的方法。

当然,从网络上获取的信息的水平通常是层次不齐的。这通常是由于两个方面导致的:

  • 信息来源网站推荐序列:专业网站(如研究院/学院网站、论文等)> StackOverflow > 个人博客网站 > 知乎、csdn等博客网站 > 其他
  • 搜索引擎:一般使用英文比中文能够获得更好的质量。同样给出推荐序列:Google >= AI(取决于AI质量的高低和问题是否深奥) > Bing > 国内搜索引擎

题外话二:关于AI

尽管AI在当下的各方各面已经表现出强大威力,但是由于AI的原理,一方面AI的知识储备严重首先于其训练资料,另一方面其逻辑能力较弱。

基于这两个原因,AI在编程中最好使用于两个方面:搜索引擎或文档总结、简易代码编写。