前一段时间看了两本书《高效程序员的45个习惯——敏捷开发修炼之道》和《高效能程序员的修炼》。书名很相似,读完这两本书花的时间也差不多,都是两个星期左右。两本书内容差别却不小。不过,总结起来一句话:都是好书!
《高效程序员的45个习惯》原名Practices of an Agile Developer,所以这本书主要是讲敏捷开发方法与实践的。由于对团队和协作没什么清晰的概念,而且书中大多是以团队开发为实例的,看完以后有好多地 方没太明白。所以,这本书不太适合大一的读,估计我还需要两年后再读一次。
但是还是有很多收获的,作者Andy Hunt和Venkat Subramaniam在书中传授了很多敏捷开发的思想,不但适用于团队,而且对独立开发者也有很大借鉴意义。在这里总结一下:
过程符合标准不意味着结果是正确的。结果重于过程(“结果不重要”向来都是说给失败者的)。
你不需要很出色才能起步,但是你必须起步才能变得很出色。——Les Brown
如果你自己都不清楚所谈论的东西,就根本不可能精确地描述它。——约翰·冯·诺依曼
习惯很可能造就一个专家,但同样也能毁了这个专家(自己想的,有点扯)——打破旧习惯很难,更难的是自己还没有意识到这个问题。
虽然这是一本关于项目开发方法的书,作者也通篇在讲开发中需要注意规避和正确的做法与心态,但是我却从中看到了更多程序以外的东西。
作者在第一章就总结说,敏捷开发要不断地使用反馈进行自我调整和完善。这句话真的很好,只有不断的调整和完善才能跟上技术和设计的步伐,不至于项目 交付时拿出来的是一个脱离了潮流甚至充满错误设计的东西。其实对生活也是这样。经常总结自己,当发现生活偏向某个极端时,就做一下调整,就像航海时发现偏 离航线了要及时调整航向一样,否则因为反应迟钝带来的痛苦与损失是要付出很多代价的,而且付出的代价往往与问题发现的时间成正比。越早发现问题,就越容易 修复问题。
管理大师德鲁克说∶“世界唯一不变的是变化。”真正的敌人是变化,而且你不可能打败变化,你所能做的就是适应变化。看完这本书,个人感觉,其实就一 个字就能把这本书想说的敏捷开发给概括,那就是“变”。如果能在变化中使自己变化以适应变化,见机行事,随机应变,你就达到了“敏捷”(相关内容可以看我 之前写的All Over Again)。
另外,书中《使用短迭代,增量发布》一文给我留下很深印象。短迭代让人感觉非常专注且具效率。你能看到一个实际并且确切的目标。严格的最终期限迫使 你做出一些艰难的决策,没有遗留下长期悬而未决的问题。如果每个迭代时间都不够用,要么是任务太大,要么是迭代的时间太短。把握好自己的节奏。
你要不断从自己写的代码中得到反馈,并且使用自动化工具不断地构建和测试系统。在前进的过程中,你都会有意识地修改一些代码:在功能不变的情况下,重新设计代码,改善代码质量。这就是所谓的重构。
当你把这段话中的“代码”换成“生活”时,你会发现它同样是对的。所以,就像团队需要隔段时间重构自己项目的某些代码以减少bug、精简代码一样,你也要学会重构自己的生活,来提高生活质量。
另一本,是Stack Overflow创始人之一Jeff Atwood的 《高效能程序员的修炼》。这本书类似于《黑客与画家》,文章主要取自作者的博客CodingHorror。看完之后,与上一本不同的是,这本书浅显易懂,而且处处体现出作者积极向上的幽默,通过各种实例,阐述了自己对程序员应有的态度、学习方法、技能的看法,最后还谈到了职业规划和程序员的幸福,很适合初级程序员和学生读。
下面是我对书中主要内容的一些笔记(主要是自己总结的,想了解更多还是去看书吧):
对于创意来说,执行是一个增倍器。它能放大创意的价值,甚至更多。(闲扯一下,你如果在07年之前说你有一个关于手机的棒极了的点子:它有 一个智能系统,可以装应用;还有一个触摸屏,可以用手触摸,还可以用多个手指!这个点子线块钱上一边去!因为这只是个点子,不是 iPhone)
尝试结对编程。(与作者在书中的观点不太一样,作者是结对编程的忠实拥护者)
两本书都提到了一点,在问“为什么”之前,一点要想好自己为什么问这个问题。当你问“为什么“的时候,也许你会被反问:“为什么你问这个问题?”所以在提问之前,想好你提问的理由,这会有助于你问出恰当的问题。
归根结底,这关乎公平:如果你想要别人花上宝贵的时间来帮助你,只有在你也花了相当的宝贵时间酝酿出一个合格的问题时才算公平。帮助别人就是帮你自己!
如果你能完全投入地向一个假想中的人或者是没有生命的物体问一个透彻而详尽的问题,你往往会在最后认识到你犯了某中愚蠢的错误,于是问题不再是问题,你也因此如释重负。
其实,作者在建立Stack Exchange时也用到了敏捷方法,而且“快”是Stack Overflow的制胜法宝。第一版做的不好,但照样发布,然后在不断的用户反馈中获得灵感与思路,在快速迭代中完善产品。
在国内App创业浪潮中,很多人都强调了创意的重要性,甚至认为有了一个想法(先不说它的好坏)就有了一点,整天把“idea”挂在嘴边,认为自己 就是下一个乔布斯。但其实idea一文不值,重要的是去实现它。因为你要相信,你能想到的,别人也能想到(同样先不说它的好坏),但你能做到的,别人不一 定能做到。
当遇到自己产品的复制品时,该怎么做呢?很多人发现有类似自己的网站或是模仿自己的App上线时,都变得很疯狂,在各种社区、论坛或是问答网站表达 无奈和委屈,以博得同情,或是大骂山寨者,引起众怒。但其实这一点用也没有,当你在哭爹喊娘的时候别人已经超过你了。我现在还没听说哪个开发者把山寨货告 上法庭并打败对方的事。看看Jeff在面对Stack Overflow的复制品时是怎么做的,
现在市面上已经出现了一些Stack Overflow引擎的复制品。我想说他们干的不错!……我们的使命是让互联网变得更好(哪怕我们只能带来一些细微的改进)。……我们没曾想过要推翻谁或 者占有什么东西。所以在这个过程中,如果有任何东西挡住了我们的路,请放心,我们不会大打出手。我们会绕开。然后继续向前,快速进步。因此,如果那些抄袭者想要跟上我们的话,他们也得行动快点。
懂了吗?就是一个字——“快”。只有比你的对手快,你才能打败那些山寨者。Chrome为什么会在短短几年打败IE(但人家仍是市场份额老大)和Firefox,就是因为它极速的迭代速度。
前几天在知乎上看到有人问“如何在国内盗版横行的Android市场上存活”,我是这样回答的
希捷前CEO Bill Watkins在06年曾放出一个让很多人惊掉眼镜的说法:“醒醒吧,硬盘是不能改变这个世界的。它能做的就是帮助人们存储更多的垃圾文件和色情片。”虽 然的确有些夸张了,但是面对越来越大的硬盘,想一下,你真的需要那么多空间来存放那么多文件吗?
如果你看到这里了,我的建议是,《高效程序员的45个习惯——敏捷开发修炼之道》和《高效能程序员的修炼》两本书你一定要读。
程序员到高级程序员的职业生涯要经历以下几个阶段:初级程序员、中级程序员、最后是高级程序员。
本也在前不久公布了新的教科书鉴定结果,要求全日本所有的小学将在2020年起,开始使用新版教科书。其中....
架构师的长处之一就是善于看到问题的本质。不过,什么是看到问题的本质?程序员应该如何修炼这个能力?...
这个繁荣的行业,只要你自己不水,可以衣食无忧,努努力还能buffer加成,成为别人眼里很酷的那种人,....
移动互联网的热潮,带动了软件开发产业的蓬勃发展。BAT中动不动年薪百万或者年底资金发二十几个月的工资....
文档习惯 :文档是一个软件系统的生命力。一个公司的产品再好、技术含量再高,如果缺乏文档,知识就没有继....
可分为两级,低级的指刚刚从学校毕业,或刚刚参加工作的程序猿,当然必须是一个合格的程序猿,能够关注到项....
自西方文艺复兴以来,中国在自然科学方面落后西方很多,软件领域也不例外。当然现在中国的许多程序员们对此....
所谓的Java高级程序员往往是经验和能力的结合,并不是说掌握了哪几个技术就是高级程序员了,能否把掌握....
9 年前,我从象牙塔里走出来,正式踏入社会,懵懵懂懂地在一家日企开始了职业生涯。那时候,技术功底非常....
尤其是那些开放式的问题,如“请介绍下你自己”或“请讲一下你曾经解决过的复杂问题”。
嗨,ST-Link程序员有什么不同吗?我的意思是STM8S-Discovery板和独立的ST-Link。独立程序员的工作速度更快吗? 最好...
最近室友闲聊的时候告诉我,他在网上收集了做为一个java程序员必须要会的东西,他觉得自己要有个方向,....
我觉得问题在于这里的文化,也就是人们的思维模式。自孩提时代开始,我们就被训练如何遵照流程循规蹈矩,然....
其实一直都不太懂得办公室的政治,我出来一年多了,自己喜欢做的事情没做到,当初也很傻很天真的觉得事业单....
再过三个月就是十年工作的老程序员,一直奋斗在编码一线。从毕业那会拿着简历去深圳人才市场找工作,到跟项....
这个问题很多人问过,也有很多人回答过,此外如果你在阅读这篇文章那么你应该已经意识到了学习英语的重要性....
上个月跟刘江以及一些《程序员》的热心作者读者吃了一顿饭,刘江让大家谈谈《程序员》的内容以及未来的方向....
不知道大家是否跟我一样,在大学过着虚度光阴的生活。那时候CF比较火,所以在大学的时候除了会打CF以外....
又到六月,又是高考的季节(虽然还没高考,但我已经感觉到了几家欢喜几家愁了,过来人嘛,你懂的),又是毕....
首先我们得知道这问题的答案是个变量,他依赖于你的目标和天资能力,绝不唯一。当然大学的课程设置往往是唯....
在金庸先生构建的武侠世界里,最犀利的杀伐武功应该是《独孤九剑》,但学会了独孤九剑却失了内功的令狐冲一....
前几天和朋友一起交流的时候,他提到了一点问题,作为程序员,有时候会比较narrow-focused,....
程序员最重要的是学习能力和聪明,所以特别要求某项技能的公司一般是很low的。一个勤奋聪明的程序员,三....
在LZ看来,面试前刷题这件事真的是很愚蠢的一件事,因此LZ就想写一篇文章来提醒一下大家,面试前千万不....
一开始在厦门的一个新三板的公司当普通的程序员。试用期2500,转正3000。
很多人非常想知道自己的未来是什么样子的,迫切到一定程度甚至会找算命先生。如果并不是想得到一个精确结果....
在软件行业工作有几个年头了,换过多个开发语言,跳过槽,也被猎头找过,经历了三五杆枪打天下和创业公司一....
大部分人(包括我在内)都是抱着打工者的心态在企业上班,这并没有什么错,只不过正像作者所说会固化自己对....
进入IT行业已经多年,从刚实习做Delphi,到后来扎根C,一直在现在专心做移动技术,前前后后也换了....
08年11月初从北大青鸟学习软件编程毕业,跟几个同学一起来到北京找工作,从还没有出来时和刚开始,想的....
在国内有一个很特别的现象:高中打了鸡血一样使劲学习的人,到了大学往往会放松下来,跑去享受生活了,大学....
对于一个程序员的成长,学习似乎是永恒的事情。为什么网友爱用“苦逼”来形容程序员,因为他们整天伏案写代....
通常实施人员、市场人员推卸责任就把所有的问题都归到程序员和他们开发的产品身上,这一向都是他们的借口,....
今年可以说是我职业生涯中很重要的一年,是一个转折点。因为在7月底的时候,我经历了人生的第一次跳槽,并....
学习阶段是学生走向职场第一个必经的阶段。这个阶段觉得自己过得特别充实。刚进入职场,一张白纸,反正啥也....
对于开发的头五年,认真的做好你手头的事情,不要怀疑有没有前途之类的,真正的做好了,做什么都有前途。
我见过的车模不多,但毫无疑问,她们的身材都呈现出了一种完美的曲线,远远望去,和大牌的女明星没有多大的....
心智真的是很重要,毫不夸张的说你身边的那个人之所以比你优秀绝不说差在智力上,偶尔甚至就是一念之差,下....
在系统开发的过程中,如何从客户那里获取正确、有效的需求,是每个团队都需要仔细考虑的问题。如果最初的需....
其实大大小小的文章讨论程序员的人生规划不计其数。本人还是坚持谈谈个人对于程序员日后规划的看法,也是本....
一晃做程序员也有十年了,总觉得时间过的很快,仿佛第一次写程序还是去年的事情。虽然到现在也已经换了三四....
首先,作为一个程序员,在工作中或技术成长上你的快乐或者说成就感来自于哪儿?大家可以先静下来考虑下这个....
废话不多说,在java这行业待了有一年多了。从刚开始的程序是什么都不知道打现在渐渐会做点东西了(其实....
首先我想解释一下标题中两个关键字: “快乐”, “ASP.NET程序员”。
运用一门程序设计语言对大多数程序员来说是小菜一碟,但是更上一层楼成为一名专家级的软件开发者,恐怕目前....