代码大全2 --- 33章 个人性格

本文探讨了成为一名优秀程序员所需的关键性格特质,包括谦虚、求知欲、诚实、创造力与纪律等,并强调这些特质的重要性远超智商。此外,文章还介绍了培养这些特质的方法,以及如何通过养成良好的习惯来提高编程技能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


每个行业的工程人员都了解其工作用的工具及材料的各种限制.

假如你是软件工程师,基本的建造材料就是你的聪明才智,主要工具就是你自己.

建筑工程师对建筑物结构进行详细的设计,然后将设计蓝图交给其他人施工;
而你一旦从细节上对软件做好设计后,软件就生成出来了.编程的整个过程如同建造空中楼阁一样—这是人们能做的纯粹脑力劳动之一.


33.1 个人性格是否和本书话题无关

编程过程非常耗用脑力,这种特性使得个人性格显得很重要.

编程工作本质上是项无法监督的工作,因为没人真正清楚你正在做什么.
我们都经常有这样的经历—耗用80%的时间着力于项目的个别地方,而花费20%的时间来完成其余80%的工作.

老板无法强迫你成为好的程序员,很多时候他甚至无法判断你是否合格.
如果你想要有所成就,只能全凭自己,这涉及到你的个人性格.
一旦决心成为出色的程序员,你的发展潜力是很大的.


  • 不同程序员创建某个程序所需的时间差异可达10:1
  • 不同程序员调试程序所需的时间,程序实现规模,速度,错误率和检查出的错误数目也能达到10:1

做实训 的时候,深有体会
你无法提升自己的聪明程度,但性格在一定程度上能够改进.

事实证明,个人性格对于造就出程序员高手具有决定性意义.


33.2 聪明和谦虚

2.1 a good coder需要很高的智商吗?

高智商与优秀程序员之间并无密切的联系.
不需要很高的智商.没人能够同计算机那样迅速敏捷.

要充分理解一个普通的程序,你得有很强的吸取细节的能力并同时消化它们.如何专注你的聪明才智,比你有多聪明更重要.

大部分编程工作都旨在弥补我们有限的智力.—Edsger Dijkstra

精通编程的人是那些了解自己头脑有多大局限性的人,都很谦虚.

而那些编程糟糕的人,总是拒绝接受自己脑瓜不能胜任工作的事实,自负使得他们无法成为优秀的程序员.

承认自己智力有限并通过学习来弥补,你会成为更好的程序员.

你越是谦虚,进步就越快.

2.2 好的编程做法

目的:减轻大脑灰质细胞(脑力)的负担


  • 将系统”分解”,是为了使之易于理解

学习东西也同理,知道结构然后在需要的时候按图索骥地去快速定位并且学习.

  • 进行审查,评审和测试正是为了减少人为失误.

  • 将子程序编写得短小,以减轻大脑负荷
  • 基于问题而不是底层实现细节来编程,从而减少工作量
  • 通过各种各样的规范,将思路从相对繁琐的编程事务中解放出来

    思考范式 编程范式可以很好很快地展开思路


  • 33.3 求知欲 Curiosity

    对技术事物的求知欲具有压倒一切的重要性

    培养求知欲和把学习当做第一要务的方法

    • 在开发过程中建立自我意识
      你越了解软件开发过程,无论通过阅读还是通过自己对软件开发的观察,你就越能理解变化,使团队朝着正确的方向发展.
      如果在工作中学不到什么,就找一份新工作吧.

    • 试验
      对编程和开发过程做试验,是学习编程的有效途径之一.
      如果不了解所用语言的某一特性是怎么回事,可编写一个小程序来检验.看看它是如何工作的.
      在调试器中观察程序的执行情况.

      pycharm调试模式看代码效率极高…

      最好通过小程序找出答案,而不要用大程序.
      有效编程的关键之一就是要学会迅速制造错误,并且每次都能从中有所收获.

    • 阅读解决问题的有关方法
      解决问题是软件创作过程中的核心行为.

    • 在行动之前做分析和计划

    • 学习成功项目的开发经验
      学习编程的一个特别好的途径是研究高手的程序.

      你应该坐下来,准备一杯白兰地,点一根上好的雪茄,像看优秀小说那样来阅读程序— Jon Bentley

      凡是成熟的学科都是从解决问题发展起来的— Thomas Kuhn

      的一篇文章主张人们对别人的编程问题案例进行研究.
      不管有没有关于编程案例研究的书,你都应找些高手编写的代码读读.

      不仅要阅读别人的代码,还应渴望了解专家对你的代码的看法,找一些一流的程序员评论你的代码,滤除其言语中的主观成分,注重解决切中要害的问题,从而改善编程质量.

    • 阅读文档
      现代语言产品一般都带有大量函数库,很有必要投入时间去浏览其说明.

      通常提供产品的公司都生成了许多你用得着的类

    • 阅读其他书本期刊

    • 同专业人士交往

    • 向专业开发看齐
      技术带头人会为人写代码,而非为机器.

      真正高手所写的代码,像水晶一样晶莹剔透,还配有文档.他们可不会浪费其宝贵的脑力,去重新组织用一句注释就能说清楚的某块代码逻辑.


    33.4 诚实

    编程生涯成熟的部分标志就是表现出诚实感

    • 不是高手时不假装高手
    • 乐于承认错误
      经常考量自己对某些问题的确定程度.

    • 力图理解编译器的警告,而非弃之不理

    • 透彻理解自己的程序,而不要只是编译看看能否运行

      • 对编译器给出的信息不懂装懂是另一个常见的盲点:你犯的错误很难骗他人,更难愚弄计算机,所以不要浪费时间做这样的事。
      • “先编译看看程序会干什么”的想法是个危险信号。测试只能照出错误,不能确保“不存在错误”。要是不了解程序,就不能彻底测试
        确保在将程序丢给编译器之前,你已对其有了较大的把握。
    • 提供实际的状况报告

      • 与不准确的状态报告相关的问题是不准确的估计。
      • 如果问题在于你对自己的进度缺乏感觉,那么可以通过对工作的了解来解决。
      • 管理者需要准确的信息,以便协调开发活动,充分地配合是必要的。
    • 提供现实的进度方案,在上司面前坚持自己的意见

      • 技术人员大都能很好地估计项目需求和进度。但问题是他们不会坚持自己的决定,需要学习如何坚守其立场”— Bill Weimer

      • 如果你对某项目感兴趣,或者将为公司带来突破,或者能提供有价值的锻炼,就应该将这些想法说出来,管理者会权衡这些因素。


    33.5 交流与合作

    真正优秀的程序员知道怎样同别人融洽地工作和娱乐。

    作为一项可读性原则,编程首先是与人交流,其次才是与计算机交流。


    33.6 创造力和纪律

    • 不要将创造力花到无关紧要的事物上,在非关键之处建立规范,从而在重要地方发挥你的创造性。
    • 强调纪律的方法和工具非常有效果,许多有很强创造力的人都极其遵守纪律。
    • Form is liberating (形式就是解放)

    • 精致的程序作品也要求许多约束


    33.7 懒惰

    3种懒惰表现方式

    • 1.拖延不喜欢的任务
    • 2.迅速做完不喜欢的任务,以摆脱之
    • 3.编写某个工具来完成不喜欢的任务,以便再也不用做这样的事情了。

    在你不通过有色玻璃看问题时,你就看到了懒惰的另一面。
    “硬干”或者“苦干”并没有带着光环。“硬干”是那种徒劳的、大可不必的努力,只会说明你急切但并不是在完成工作。
    人们容易混淆行动与进展,混淆忙碌与多产。

    有效编程中最重要的工作是思考,而人思考时通常不会看上去很忙

    如果和我共事的程序员总是忙个不停,我会认为他并非优秀的程序员,因为他没用最有价值的工具—自己的脑袋。


    33.8 不如你想象中那样起作用的性格因素

    8.1 坚持Persistence

    多数时候软件开发中的坚持其实就是没有好处的“固执”。
    当在某段新代码上卡壳时,不妨另辟蹊径,尝试重新设计类,或者绕过去,以后回头再试。当一种方法行不通时,正好可以换个方法试试。

    通常最好只要有一段时间没有进展,比如说15分钟,就该放弃排错过程,让潜意识仔细品品。

    8.2 经验Experience

    如果你不与时俱进,经验不但不会有所帮助,反而是个累赘。

    在软件行业中,如果不改掉使用先前编程语言时的思维模式,或者不放弃在旧机器上能用的代码性能优化技术,你的经验还不如没有好。

    如果你工作10年,你会得到10年经验还是1年经验的10次重复?
    必须检讨自己的行为,才能获得真正的经验。只要坚持不懈地学习,才能获取经验;如果不是这样做,就无法获得经验,无论你工作多少年。

    8.3 编程狂人Gonzo Programming

    可以热爱编程,但热情不能代替熟练的能力,请想明白什么更重要.


    33.9 习惯

    我们的精神品德既非与生俱来,也非逆于天性.其发展归因于习惯.我们要学的任何东西都通过实际做的过程学到.
    如果人们建的房子好, 他们就成为好的建设者.而造的房子不好时,他们就是差的建设者.所以小时候形成了怎样的习惯关系很大.正是它会造成天壤之别,或者说就是世上所有差异之源.—–亚里士多德

    • 好习惯很重要,因为程序员做的大部分事情都是无意识完成的.

    任何日后出色的程序员前几年就做得很好—比尔盖茨

    • 初涉某事时,就应端正态度来学.
    • 试着用新的和习惯去代替旧的坏习惯.

    33.10 要点

    • 人的个性对其编程能力有直接影响
    • 最有关系的性格为:谦虚,求知欲,诚实,创造性和纪律以及高明的偷懒
    • 程序员高手的性格与天分无关,而任何事都与个人发展相关
    • 如果你能抽出少量时间阅读和学习编程知识,要不了多久就能鹤立鸡群
    • 好性格与培养正确的习惯关系甚大.要成为杰出的程序员,先要养成良好习惯,其他自然水到渠成.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值