标签:读后感 一个 批判性 代码 程序员 修炼 测试 完美
编程只是程序员世界的一部分,而这本书探索了整个世界。
二十年对常识没有丝毫影响,技术可能改变了,但人没有。你不应该拘泥于任何特定的技术,而应该拥有足够广泛的背景和经验基础,以便在特定的情况下选择合适的解决方案。你的背景来自对计算机科学基本原理的理解,而你的经验来自广泛的实际项目。理论结合实践会让你变得强大。
软件开发在任何职业列表中,绝对是你自己最能掌控的职业之一。我们的技能供不应求,我们的知识不限于地域,我们可以远程工作。我们真的能做我们想做的任何事情。
“在所有的弱点中,最大的弱点就是害怕出现弱点。”
不要搁置“破窗”(糟糕的设计、错误的决定、低劣的代码)不去修理,每发现一个就赶紧修一个。采取行动,预防进一步的损害发生,表明一切尽在你的掌握中。
不要只是因为一些东西非常危急,就去造成附带损害。破窗一扇都嫌太多。
找出合理的请求,然后不断完善,一旦有成果产出,展示给人们看,人们都觉得,加入一个推进中的成功项目更容易一些,只要一窥未来,大家就能团结在一起。
项目的拖延是一天天累计而成的。
永远留意大局,持续不断地审视你身边发生的事情,而不要只专注于你个人在做的事情。
审思:你在催生变化时,能判别是在做石头汤还是青蛙汤吗?这个决定是出于主观还是客观?先养成仔细观察周围环境的习惯,然后在项目中这样做。
你能训练自己写出够好即可的软件——对用户、未来的维护者来说够好即可,只要好的程序能让你自己内心平静就可以。
与构想中的明天那个完美的软件相比,今天就还不错的软件通常更讨人喜欢,如果你早点给用户一点东西玩,他们的反馈常常能引领你做出更好的最终方案。
不要让过度的修饰和精炼侵蚀掉一个完好的程序,继续前行,让代码中它该有的位置驻留一段时间。它也许并不完美,不要紧的——它就算永不完美也没关系。
知识和经验的确是你最重要的专业资产,可惜的是,它们是一种时效资产。时效资产——资产的价值随时间推移而减少,如装满了香蕉的仓库和球赛门票。
*对知识组合做定期投资:1、每年学习一门新语言;2、每月读一本技术书;3、保持阅读习惯,非技术类书籍;4、上课;5、加入本地的用户组和交流群;6、尝试不同的操作系统环境;7、与时俱进,关心与当前项目不同的技术。
持续投资非常重要,一旦你进入了对某个新语言或新技术的舒适期,向前走,再学一个。
很重要的一点是,要批判性的思考读到和听到的东西。
*批判性思维:1、问“五个为什么”;2、谁从中受益?3、有什么背景?4、为什么这是个问题?
传达信息的过程才算是交流。不要只是等待问题的出现——把它问出来。
ETC原则(Easier To Change,更容易变更)原则,是一种价值观念,不是一条规则。
正交性:对于两个或多个食物,其中一个的改变不影响其他任何一个,则这些事物是正交的。
不要依赖那些你无法控制的东西。
与其认为决定是被刻在石头上的,还不如把它们想象成在海滩的沙子上,一个大浪随时都可能袭来,卷走一切。
曳光弹式开发和项目不会结束这种理念是一致的:总有东西需要改,总有新功能需要加。这是一个逐步递增的方法。
防御式编程——有任何疑问,都要去验证我们得到的一切信息;使用断言来检测错误数据;做一致性检查;甚至于连自己也不相信,既然没人能写出完美的代码,那么也包括自己在内。
契约式设计(DBC)——文档化软件模块的权利和责任,以确保程序的正确性。什么是正确性?不多也不少,正好完成它主张要做的程序的事情。
编码不是机械工作。务实的程序员会对所有代码进行批判性思考,包括自己的代码。
测试不是关于找Bug的工作,而是一个从代码中获取反馈的过程,涉及设计的方方面面,以及API、耦合度等,测试的主要收益来自于你思考和编写测试期间,而不是运行测试的那一刻。
敏捷不是一个名词,敏捷有关你如何做事
每个团队需要的最基本最重要的元素:版本控制;回归测试;完全自动化。
最后说的真好:你要为自己的人生做主,精心营造,与人分享,为之喝彩。好好享受吧!
标签:读后感,
一个,
批判性,
代码,
程序员,
修炼,
测试,
完美
From: https://www.cnblogs.com/dysjwang/p/18577187