代码大全2 --- 33章 个人性格
- 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章 个人性格相关推荐
- 【代码大全2】第33章 个人性格
目录 1. 个人性格与本书主题有关 2. 聪明与谦卑 3. 好奇心 4. 理性诚实 5. 沟通与合作 6. 创造力与规范 7. 懒惰 8. 没有想象中那么重要的性格因素 9. 习惯 总结: 软件工程师 ...
- 代码大全(Code Complete)-- 目录和关键点
读后感 <代码大全>是一本指导"代码构建"的书,指导我们如何写出优秀的代码,如何成为优秀的程序员. 这样一本900多页的大部头书,当我们基于既往的编程经验,在读每一个部 ...
- 【转】读《代码大全2》
第1部分 打好基础 译序 应该首先为人编写代码,其次才是为机器 第1章 欢迎进入软件构建的世界 提高关键的质量和开发者的生产效率都是很重要的 构建活动会占到整个软件开发时间的30%~8 ...
- 《代码大全2》读书笔记
第7章 高质量的子程序 7.1 创建子程序的正当理由 降低/隔离复杂度,隐藏实现细节,引入中间的.易懂的抽象 避免代码重复,支持子类化 提高可移植性,限制变化所带来的影响 简化复杂的逻辑判断,改善性能 ...
- 代码大全2阅读笔记01
今天我阅读了代码大全前两章,第一章欢迎来到软件构造的世界,它分为两部分什么是软件构造,软件构建为何如此重要. 软件构造: (1) 定义问题 (2) 需求分析 (3) 规划构建 (4) 软件构架 (5) ...
- 读书笔记_代码大全_第14章_组织直线型代码_第15章_使用条件语句
组织直线型代码 + 使用条件语句 希望我的读书笔试能带你翻过18页的书 http://www.cnblogs.com/jerry19880126/ <代码大全>第14章和第15章的内容比较 ...
- 《代码大全2》读后感czz
经老师推荐,买了一本<代码大全2>,花了近3个月的时间看完了,看完后觉得还有很多值得回味的地方,而且每部分之后作者还推荐了不少经典书籍.所以,作个读书心得.全书的主题是软件构建,关于软件构 ...
- 去年写的代码大全笔记(其实是摘记)
Reader: Roof 前言: 虽然近年来前卫的开发实践迅速发展,但普通的实践手段并没有太大变化.很多程序的开发依然漏洞百出.迟于交付并且超出预算. 软件业的现状是,很多程序员并未接受正规的 ...
- 读书笔记:《代码大全2》
本书在笔者实习时就已经开始阅读,按照自己的所处阶段有间隔的分成了3次阅读,一直到现在终于完成了.读者千万不要认为这本书真的只是"代码大全",在我看来,这本书就是软件工程师的心法,提 ...
最新文章
- Git客户端TortoiseGit(Windows系统)的使用方法
- matlab考试湖北理工学院,电子信息工程导论课程教学大纲-电气与电子信息工程学院-湖北.DOC...
- html 清除float,css中如何清除float
- uygurqa输入法android,uygurqa输入法
- 微商谋定重整纠正错误走路-经信研究:李玉庭谈微商营销
- PHP案例 网页计数器设计
- C#基于LibUsbDotNet实现USB通信(一)
- 哈尔滨理工C语言程序设计精髓_计算机科学与信息工程学院C语言程序设计竞赛圆满完成!...
- linux 进程suricata,开源USM之IDS suricata
- c语言累加和校验_累加和校验算法(CheckSum算法)
- java实现排序的几种方法
- 极大似然法(ML)与最大期望法(EM)
- 最新详细VMware虚拟机下载与安装
- 03.计算机网络--- 网络层、IP协议、手工配置IP地址
- android 警报声音_Android接近警报教程
- IPV6地址数据库导出
- 中国队没进世界杯,但是其他遍地都是“中国制造”!
- caffe与Python接口的配置(VC2013 Windows CUDA7.5 Python2.7.12)
- 微信公共号---LBS的开发
- linux alias辅助工具