《高效能程序员的修炼》书评

出版社:人民邮电出版社
出版日期:2013-7
ISBN:9787115318985
作者:[美]Jeff Atwood
页数:268页

幸福是一种过程而非结果

因为Jeff讲的很多东西其实已经流传得比较广泛了, 所以再拿来读也就没有那么多深刻的体会的. 不过古人讲"开卷有益", 以下是我自己印象还比较深的几个点# ScreeningJeff建议招人的最后一步是编程"试镜". 为面试者分配一个可以在两三天内完成的, 当前项目中会遇到的一个实际问题. 以外包咨询的方式雇佣面试者. 如果成功, 就证明了面试者在进入团队后的实际工作能力. 如果失败, 所浪费的咨询费也将远远小于一个失败雇佣的成本.> 诸葛一生唯谨慎, 吕端大事不糊涂其实从面试者的角度来说, 也挺好. 即使最后面不上, 也有钱可拿, 算是这些时间也没有白费吧. 当然, 不给钱的"试镜", 或者"家庭作业"都是耍流氓# Crazy Monkey有一个团队这么搞系统稳定性. 他们上线的第一个服务是一个会在集群中随机时机随机kill任意进程的服务, 名曰"混世魔猴". 而他们就在这种场景下来要求其它服务的可用性和稳定性> 年经人, 要对自己狠一点# Happiness幸福是一种过程, 而不是结果这当然适用于编程了, 因为它本事就适用于人生. 同样, 它也适用于为了省7块钱而开车去更远的商店去买一支原价25元的钢笔

Jeff Atwood关于”如何成为更好的程序员“的精彩论断

”程序员不是码农!“其实,我更喜欢这个书名,它更能表达作者Jeff Atwood对于程序员这个职业的理解,以及Jeff对广大程序员的教诲。如何成为更好的程序员呢?这其实跟写代码没有关系,而在于你是否能够参透书中涉及的各个主题。我是本书译者,阅读过程中如有任何问题,欢迎与我微博交流~

第一版第一次印刷的勘误表

又把这本书读了一遍,发现了一些错误。整理了一份勘误表,在这里:http://blog.csdn.net/happydeer/article/details/9988027,持续更新中。。。

好书推荐

的确程序 != 码农,单纯的技术大牛未必能获得应有的提升。这本书里谈到很多技术以外的非智力因素,非常值得我们思考,进而重新审视一下自己的职业生涯,推荐阅读! 另外该书翻译可谓行云流水,没发现拗口蹩脚等生硬之处,尽显原文风趣幽默。书中“译者注”相当不错,有助原文理解,最主要省去N多google的时间。

高效能程序员的修炼 - 摘句

第1章 入门须知- 软件开发的整个历程,就是程序员耗尽毕生精力去编写代码,以使其他人能从代码编写工作中解脱出来,从而可以很方便的使用计算机来做他们真正需要做的事情的一个过程,所以不是每个人都需要知道如何去编程。- 跟钱打交道的人往往会挣很多钱,看看华尔街就知道了。- 预测未来最好的方法是创造未来。 - Kay- 杰出程序员跟普通程序员的区别不在于他们掌握了多少种编程语言,也不在于他们谁更擅长 Python 或 Java。真正的关键是,他们能不能把他们的想法表达清楚。杰出的程序员通过说服别人来达成协作,通过清晰的注释和技术文档,他们让其他程序员能够读懂他们的代码,这也意味着其它程序员能够重用他们的代码,而不必重新去写。- 人需要花一生的时间去学习如何有效的写作。这事没有捷径,你必须自己去提高,可以从写博客或从 stackoverflow 网站写回答开始,坚持每周练习几次(否则别想成为杰出的程序员)。- 每个人都应该大量写作,不管是撰写博客、写书、回复 stackoverflow 上的问答、写电子邮件,还是写其它的东西,写下来,然后回过头去斟酌一下。这种书面沟通有助于理清我们的思维。 - Jon Skeet第2章 把一堆烂事搞定的艺术- 每一天,你一定要一起床就热情澎湃。否则,你就只是在打工。- 教同伴是提高我们自己的专业水平最好的途径之一。- 如果你想造一艘船,就不要催着工人们去收集木材,分派工作,发号施令,你应该教会他们的是对无边无际大海的渴望。- 迭代的速度胜过迭代的质量。- 编程这类任务需要你在大脑里同时记住很多东西,你记住的东西越多,你编程的效率就越高。请远离干扰,并且避免同时做多个项目。第3章 高效编程之原则- 无论你的软件出现什么问题,甚至最开始出错的地方根本就不是你的代码,你也应该总是假定问题出在你的代码上,并且根据这个假定采取行动。- 作为一个软件开发者,你就是自己最大的敌人。你越早认识到这点,你的处境就会越好。- 最好的代码就是完全没有代码。每一行被你带到这个世界的新代码都需要被调试,需要被其他开发者阅读和理解,并且被维护和支持。正是因为我们当中的程序员写了太多糟糕代码,所以才说代码是我们的敌人。- 如果你热爱编程,而且爱的情真意切,那你应该惜墨如金。- 避免写注释。你应该总是专注于编写代码,而忘了还有注释这种东西存在。- 当我脑子里有了一个明确的目标并且有一段复杂的代码要写时,我会把时间花在实现代码上面,而不是(用注释)写下它的故事,讲给我自己听。- 不管文档上怎么说,源代码才是最终的事实,是你能找到的最好的、最确定的、最新的文档。- “向橡皮鸭求助”这种解决问题的方法,就是完全投入地向一个假想的人或者没有生命物体问一个透彻而详尽的问题。- 与其担心你全心投入的下一个大创意是否足够出色,不如担心你能执行得有多好。- 在软件开发领域,执行意味着专注于构成你的应用程序的所有微小细节。- 你团队里的每个人都应该能通过由陌生人主持的“电梯测试” —— 在60秒内,清晰的解释他们在做神马,以及为什么人们会在意他们正在做的事情。- 性能是一个特性(能帮助我克敌制胜)。第4章 招聘程序员须得其法- 在雅达利,我们聘用一个人的标准是看他的业余爱好,而不是依据他在学校里的学习成绩。- 应聘者对公司文化的认同往往比他们高超的编程技能更加重要,前者更能决定我们是否成功。- 不要让候选人主导面试过程。- 电话面试的目的,不是让候选人复述他们做过的事情,面试官应该把他们从舒适区推出去一点,问他们以前没见过或没做过的问题,你要了解这个人在面对新事物(比如你的代码库)时会做出什么样的反应。第5章 促使团队紧密协作- 要想赢得信誉和尊敬,最好的方法就是努力工作并取得实实在在的成绩。- 如果你想建议些什么,你应该为此付出实际的行动,做好充分的准备。- 最有效的一种技术领导就是以身作则。- 让我们公开讨论,这样我们就可以相互学习怎样把我们喜欢的事情做得更好。- 只要保证你有超过一双的眼睛在看你写的代码,无论是结对编程还是代码审查,你都一定会开发出更好的软件。- 会议是浪费工作时间的最佳去处。- 你不必和团队里的每个人都成为朋友。- 永远不要低估真正和另一个人通话的力量,尤其当你是在远程办公。- 远程开发代表着未来。第6章 蝙蝠洞:程序员的高效工作场所- 每个程序员都应该有两台显示器,有一台快速的电脑,自己选择鼠标和键盘,有一把舒适的椅子,能快速接入互联网,都应该有安静的工作环境。作为程序员,你要去争取应有的这些权利,你可以让公司做出改变,要不然你就换一家公司。- 购买一张优质的桌子和一把优质的椅子是你作为一名软件开发工程师所能做的最好的投资之一。- 拥有更多的显示空间确实会让你的工作更有效率。第7章 设计时要把用户放在心上- 令人赏心悦目的产品和让人勉强容忍的产品的区别,就在于它们的细节有没有被做好。- 从用户角度来说,用户界面就代表了你的软件。- 用户界面设计优先于软件。- 理想情况下,搜索都应该只返回一个结果,那个结果就是你真正要找的东西,并且在一页内就能完全显示。- 用户不会阅读你放在屏幕上的任何东西。更具体的说,用户只会读取足以让他们完成任务的、最少量的文字。- 把最重要的内容写在尽可能靠近页面顶部的地方。- 终极的单元测试是,用户是否想要使用你的软件。- 除非你把软件发布出去,送到用户和客户的面前,否则你无法知道那些被做砸的东西到底是什么。- 应该对你的用户和客户做出及时的响应,并且通过基于他们的反馈持续改进和完善你的软件来展示你对他们的诚意。- 请尽早发布你的软件,即使第一版做的很差劲,也要坚持把它发布出去。第8章 安全基础:保护用户数据- ......你访问过的网站越多,你以用户名和密码搭配的方式登录乃至信任的网络就越多,这些网络中某个网站被人攻破的概率也就越大......- 限制每个用户的登录尝试次数是安全领域的“101”。这样可以一定程序上防范字典是攻击。第9章 加强代码测试,别让它太差劲- 把开发人员带到“战壕”里面去是至关重要的,因为开发人员交付代码后,客户才是真正与代码休戚与共的人。- 要先避免失败,最好的办法是不断的尝试失败。- 同级之间的代码评审时你为提高代码质量所能做的最大的贡献。- 我同情那些不写单元测试的傻瓜。- 任何时候当你想要把某些信息打印到屏幕或输出给调试器,你都应该把它改写成一个单元测试。- 如果你不找来真正的用户做可用性测试的话,你是无法知道你的程序能否正常工作的!- 快速失败。当你的程序碰到问题时马上失败,而不是自动绕开问题来使软件表现的更加健壮。第10章 创建并管理社区,同时从中受益- 倾听社区的声音,但别被它们牵着鼻子走。- 优秀的艺术家善于模仿,伟大的艺术家善于剽窃。- 沉默以对是最残酷的惩罚方式。第11章 揭露营销伎俩,以及如何规避- 禀赋效应。人们一旦拥有某项物品之后,他们对该物品价值的评价要比拥有之前大大增加。第12章 轻重缓急,了然于心- 要搞明白你没日没夜的拼命工作到底是为了什么。- 经历胜过物质。附作者最后推荐的程序员必读之书的豆列(https://www.douban.com/doulist/44636546/)。

相比管理方面的书籍来说,书一般般

这本书中引用了大量的经典书籍,给我留下深刻影响的是电梯测试:给企业/团队构建一个远景声明。拥有一个清晰的项目远景声明(Version Statement)是极其重要的,每个人都可以把它当做这个项目的试金石。...你团队里的每个人都应该能通过由陌生人主持的“电梯测试”——在60秒之内,清晰的解释他们在做什么,以及为什么人们在意他们正在做的事情。一个构建项目远景模型的速效公式:(《跨越鸿沟》《Crossing the Chasm》 Geoffrey Moore)为了(目标客户)他们(关于需求或者机会的说明)这个(产品名称)是(产品类别)它的(关键优势、吸引人的购买理由)不像(主要竞争对手的替代产品)我们的产品(主要的差异化的特性说明)此外,善待匿名用户和注册用户(并且为他们进行优化);对待恶意用户的方法:打入地狱降低访问速度制造页面错误

书中要点小结

本书实际上是作者博客的合集,书中很多内容现在已经是大家的共识了,不过作为书籍整理起来,看起来还是会系统一些。书里面的内容包括产品设计、运营、开发、测试、团队相关的内容。关于产品设计与运营:1.要注意细节2.用户界面的重要性3.多与用户交流,但注意发现用户的实质需求4.MPV产品发布,可用性测试5.具体设计策略:分页显示的问题、浏览器底栏的处理6.具体运营策略:游戏化、违规用户的处理7.营销伎俩的预防关于开发人员:1.需要通过学习掌握基本计算机知识(数据结构、算法、编程语言)2.阅读好的书籍和博客3.阅读高质量的开源代码4.注意编写可读代码(避免注释)5.关注性能优化(同时也要避免过早优化)6.避免多任务7.进行单元测试8.使用“chaos monkey”强化服务器稳定性9.加大测试力度,进行代码评审10.快速失败,在代码出现问题的地方迅速失败11.编写安全的代码和系统,通讯加密、登录防护(防范字典攻击,如登录失败下次登录延时)、用户密码保护(密码散列加盐,防止彩虹表)、采用第三登录来利用大公司安全机制保障用户信息安全关于团队1.与他人交流时,要正确的描述问题2.团队内部鼓励创新3.团队要有清晰的目标,能通过电梯测试4.领导者以身作则5.开发运维间合作共赢6.开发团队要开展结对编程与代码评审7.团队内尽量避免会议8.团队内有问题的成员要及时解决9.合理的使用远程办公10.提供高效工作场所,人体工学座椅、桌子、设备,多显示器

能不能别来这么多"译者注"

我想,这本书的读者几乎都是程序员,译者能不能有节操些,那么多注释搬过来有什么意思。遇到不懂的地方,我们可以谷歌,最不济还有度娘。译者大爷,我真的用不着知道安卓的各个版本的代号!弄得一页五分之三的部分用来注释,这用户体验真不错!!!既然把<程序员修炼之道>都注释了,能不能顺便把<代码大全>也维基下。


 高效能程序员的修炼下载 精选章节试读


 

农业基础科学,时尚,美术/书法,绘画,软件工程/开发项目管理,研究生/本专科,爱情/情感,动漫学堂PDF下载,。 PDF下载网 

PDF下载网 @ 2024