• 1 个人性格是否和本书话题无关
  • 2 聪明和谦虚
    • 1 a good coder需要很高的智商吗
    • 2 好的编程做法
  • 3 求知欲 Curiosity
    • 培养求知欲和把学习当做第一要务的方法
  • 4 诚实
  • 5 交流与合作
  • 6 创造力和纪律
  • 7 懒惰
  • 8 不如你想象中那样起作用的性格因素
    • 1 坚持Persistence
    • 2 经验Experience
    • 3 编程狂人Gonzo Programming
  • 9 习惯
  • 10 要点

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

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

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


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 要点

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

代码大全2 --- 33章 个人性格相关推荐

  1. 【代码大全2】第33章 个人性格

    目录 1. 个人性格与本书主题有关 2. 聪明与谦卑 3. 好奇心 4. 理性诚实 5. 沟通与合作 6. 创造力与规范 7. 懒惰 8. 没有想象中那么重要的性格因素 9. 习惯 总结: 软件工程师 ...

  2. 代码大全(Code Complete)-- 目录和关键点

    读后感 <代码大全>是一本指导"代码构建"的书,指导我们如何写出优秀的代码,如何成为优秀的程序员. 这样一本900多页的大部头书,当我们基于既往的编程经验,在读每一个部 ...

  3. 【转】读《代码大全2》

    第1部分 打好基础 译序   应该首先为人编写代码,其次才是为机器   第1章 欢迎进入软件构建的世界   提高关键的质量和开发者的生产效率都是很重要的   构建活动会占到整个软件开发时间的30%~8 ...

  4. 《代码大全2》读书笔记

    第7章 高质量的子程序 7.1 创建子程序的正当理由 降低/隔离复杂度,隐藏实现细节,引入中间的.易懂的抽象 避免代码重复,支持子类化 提高可移植性,限制变化所带来的影响 简化复杂的逻辑判断,改善性能 ...

  5. 代码大全2阅读笔记01

    今天我阅读了代码大全前两章,第一章欢迎来到软件构造的世界,它分为两部分什么是软件构造,软件构建为何如此重要. 软件构造: (1) 定义问题 (2) 需求分析 (3) 规划构建 (4) 软件构架 (5) ...

  6. 读书笔记_代码大全_第14章_组织直线型代码_第15章_使用条件语句

    组织直线型代码 + 使用条件语句 希望我的读书笔试能带你翻过18页的书 http://www.cnblogs.com/jerry19880126/ <代码大全>第14章和第15章的内容比较 ...

  7. 《代码大全2》读后感czz

    经老师推荐,买了一本<代码大全2>,花了近3个月的时间看完了,看完后觉得还有很多值得回味的地方,而且每部分之后作者还推荐了不少经典书籍.所以,作个读书心得.全书的主题是软件构建,关于软件构 ...

  8. 去年写的代码大全笔记(其实是摘记)

    Reader: Roof 前言: 虽然近年来前卫的开发实践迅速发展,但普通的实践手段并没有太大变化.很多程序的开发依然漏洞百出.迟于交付并且超出预算.     软件业的现状是,很多程序员并未接受正规的 ...

  9. 读书笔记:《代码大全2》

    本书在笔者实习时就已经开始阅读,按照自己的所处阶段有间隔的分成了3次阅读,一直到现在终于完成了.读者千万不要认为这本书真的只是"代码大全",在我看来,这本书就是软件工程师的心法,提 ...

最新文章

  1. Git客户端TortoiseGit(Windows系统)的使用方法
  2. matlab考试湖北理工学院,电子信息工程导论课程教学大纲-电气与电子信息工程学院-湖北.DOC...
  3. html 清除float,css中如何清除float
  4. uygurqa输入法android,uygurqa输入法
  5. 微商谋定重整纠正错误走路-经信研究:李玉庭谈微商营销
  6. PHP案例 网页计数器设计
  7. C#基于LibUsbDotNet实现USB通信(一)
  8. 哈尔滨理工C语言程序设计精髓_计算机科学与信息工程学院C语言程序设计竞赛圆满完成!...
  9. linux 进程suricata,开源USM之IDS suricata
  10. c语言累加和校验_累加和校验算法(CheckSum算法)
  11. java实现排序的几种方法
  12. 极大似然法(ML)与最大期望法(EM)
  13. 最新详细VMware虚拟机下载与安装
  14. 03.计算机网络--- 网络层、IP协议、手工配置IP地址
  15. android 警报声音_Android接近警报教程
  16. IPV6地址数据库导出
  17. 中国队没进世界杯,但是其他遍地都是“中国制造”!
  18. caffe与Python接口的配置(VC2013 Windows CUDA7.5 Python2.7.12)
  19. 微信公共号---LBS的开发
  20. linux alias辅助工具

热门文章

  1. ADG配置(主备库环境)
  2. Hive/Spark SQL使用案例
  3. TW项目寻路算法最优实践
  4. 时变电磁场 工程电磁场 P24
  5. 信息经济学 - 信息不对称
  6. java 上传 excel_Java对Excel表格的上传和下载处理方法
  7. 手机后缀名html文件可以删除吗,没有后缀的文件怎么删除 文件没有后缀,无法打开,更无法删除...
  8. java排序 二分法_JAVA二分法排序
  9. 微信小程序_自定义头像和昵称
  10. 一些win7可以停止的服务