科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道基础软件如何成为一名优秀的开发程序员

如何成为一名优秀的开发程序员

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

我一直想当然地认为《代码大全》(Code Complete)是一本讨论算法和数据结构的书,就象《编程珠玑》(Programming Pearls)一样。

作者:左轻侯 2007年7月11日

关键字:

  • 评论
  • 分享微博
  • 分享邮件
第34章,软件工艺
不要将编程思路局限到所用语言能自动支持的范围。杰出的程序员会考虑他们要干什么,然后才是怎样用手头的工具去实现他们的目标。

如果某个类的子程序成员与类的抽象不一致,你会为图省事用它,而不用更一致的子程序吗?应以尽量保持类接口抽象的方式写代码。不必因为语言支持全局数据和goto,就使用它们。要避免用这些有危险的编程特性,而代之以编程规范来弥补语言的弱项。编程要使用所用语言里最显而易见的方式。这等于说是“如果Freddie从桥上跳下来,难道你也愿意跳吗?”认真考虑你的技术目标,然后确定如何用你的语言最好地实现这些目标。

你的语言不支持断言?那就编写自己的assert()子程序,也许功能上与内置的assert()不完全一样,但你仍能实现其大部分用处。你的语言不支持枚举类型或具名常量?不碍事,可以按一定方式用全局变量定义自己的枚举或具名常量,只要有清楚的命名规范。

所有的人都在说:“语言不重要,重要是思想。”理论上这句话并不算错,但很少有人深入探讨这个问题的细节。
在不同的编程语言里,有一些东西是相通的,了解这些东西,就是了解编程的思想。但是这并不意味着,你一旦掌握了他们就能够精通所有的编程语言。每一门编程语言都在解决某些问题上有独到之处,这也是它们存在的意义。必须深入地学习需要掌握的语言,尽量透彻地掌握它的细节。

在另一门语言上的经验有助于缩短你的学习过程,但不会取代学习过程。而深入了解一门语言的目的,正是为了用更好的方式贯彻编程思想。反过来,学习和实践一门优秀的语言,也会有利于你更深入地思考和理解编程的思想。

第33章,个人性格
聪明不像是个人性格的一个方面,也确实不是。碰巧的是,高智商与优秀程序员之间并无太密切的联系。
什么?!难道不需要智商很高吗 ?
对,是不需要。没人能同计算机那样迅速敏捷。要充分理解一个普通的程序,你得有很强的吸取细节的能力并同时消化它们。如何专注你的聪明才智,比你有多聪明更重要。

正如第5章“软件构建中的设计”所提到的,Edsger Dijkstra在1972年的图灵奖演讲会上宣读了一篇名为《The Humble Programmer.》(谦卑的程序员)的文章。他认为大部分编程工作都旨在弥补我们有限的智力。精通编程的人是那些了解自己头脑有多大局限性的人,都很谦虚。而那些编程糟糕的人,总是拒绝接受自己脑瓜不能胜任工作的事实,自负使得他们无法成为优秀的程序员。承认自己智力有限并通过学习来弥补,你会成为更好的程序员。你越是谦虚,进步就越快。

个人性格和编码能力是否有关?这是一个象上去相当玄虚的问题,也是一个争议很大的问题(二者互为因果)。就我个人的经验而言,我见过的许许多多程序员,他们的技术水平和谦虚程度成严格的正比关系,无一例外。而且,当一个人的技术水平提高时,他的谦虚程度也会随之提高。这话听上去简直都不那么能令人相信。

我们已经见过了太多too smart的程序员和他们写下的代码。这些代码充斥着故作高深的思路和晦涩难懂的代码,并成为炫耀的资本。事实上,过于复杂的东西跟软件开发的本质是相悖的,因为“致力于降低复杂度是软件开发的核心”(第34章《软件工艺》)。优秀的程序员写下的代码,必定清晰、简洁、优雅。
正如本书中所说:“编程的整个过程如同建造空中楼阁一样——这是人们能做的纯粹脑力劳动之一。”(第33章《个人性格》)软件开发在某种意义上就是表达人对现实世界的理解,因此,一个伟大的程序员必定是一个伟大的哲学家。而伟大的哲学家都很明白人类理性的局限,这就是谦虚的来源。  

查看本文来源
    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章