什么是好的程序员

我们经常会崇拜一些厉害的程序员,也就是我们通常所说的大神,比如说C语言之父,C++之父,linux之父啥的。这些都是公认Good Programer,他们都已经到了出神入化的境界。我们崇敬他们主要是因为他们对计算机科学所作出的杰出贡献。

当然,世界上有成千上万的程序员,大部分都是默默无闻的。对于这些程序员要怎么去判断水平的高低呢?其实这个问题来源于我对自己的思考,我想成为一个优秀的程序员,但是怎么去定义一个优秀的程序员呢?

一些回答

我在Quora上面提了这个问题“What are the qualities of a good programmer?”,然后我得到了一些比较好的回答,我选了其中几个回答来分享一下

一个好的程序员应该是 > * 紧紧跟随技术发展趋势的 > * 不断学习与进步的 > * 将coding当做是一种工程技术而不仅仅只是复制/粘贴的 > * 有能力为实际问题提出优雅而具有创造力的解决方案,不仅仅只是惯用过时老套的方案的 > * 知道如何明智地遵循最佳实践原则却不迷信它们的(比如说设计模式)


好的程序员

另外一个回答给出了这样一个图(上图)
在这里,我们主要以程序员对问题给出的解决方案的好坏和它的可读性来给程序员分级。

  • 比较挫的解决方案而且令人费解:一个不好的方案伴以不好的实现,令人难以理解。
  • 比较挫但是容易理解的解决方案:一个不好的方案和不好实现,但是别人能够比较容易地看懂而且能够比较简便地改善这个方案和原有代码。
  • 好的但是令人费解的解决方案:聪明的方案和良好的实现,但是别人难以理解无法维护。
  • 好的而且容易理解的解决方案:聪明的方案和漂亮的实现,别人容易理解,便于修改和维护。这就是Good Programer应该做到的境界。

很显然上面的层次是从低到高的。这里非常具体地描叙一个好的程序员在工程环境应该做到的标准——方案的好坏和可维护性。

自己的理解

如果对于科学甚至是整个社会造成了很大的积极影响,这种人无疑是优秀的。对于我们每一个普普通通的程序员来说,做好自己的每一个任务是应该具备的基本素质。如果一个人能够在一个项目里面写出优秀的代码,提高自己的效率方便别人维护,甚至是帮助其他同事提高他们的效率,就是一个好的程序员的典型。

技术和知识可以不断地积累,但是一种职业道德和品质却是要自己去遵循和坚守的,我相信这是一个程序员的分水岭。最后套用一位网友非常简洁的回答:Not giving up, ever! 永远不要放弃对更好地追求!

Write the code, change the world!