《高效能程序员的修炼 》 EffectiveProgramming More Than Writing Codehtml
2013年 做者: Jeff Atwood 问答网站stack overflow创始人git
软件开发远不仅是写代码那么简单------程序员
软件开发过程当中的人文因素。github
作个全面发展的程序员,全面一精。抬头看路,低头作事。面试
一、生命中最困难的,是想清楚你真正想要作的事情,而不是学上一堆假设未来会有用的东西。正则表达式
二、若是你想成为一个程序员,你只需追随你快乐的感受,而且爱上代码。不要为了学编程而学编程。(编程能够是兴趣、或者解决问题(例如成为程序员是想改变我所玩电脑游戏的规则)、或者问题引领着本身去学编程)编程
三、程序员的八种境界:数组
面试问题引出,“你对本身将来5年的职业规划是怎样的?”安全
做为一个程序员,最完美的职业生涯应该是什么样的?服务器
(不朽、成功(比尔盖茨)、知名、胜任、普通、业余、低调、烂程序员)。
四、杰出的程序员关键要把想法表达清楚,清晰的注释和技术文档。
五、每一个人都应该大量的写做,无论是撰写博客、写书、回复问题、写电子邮件,这种书面沟通有助于理清咱们的思路。动手吧,开始写起来。
六、固然只会写代码还不够,若是想从优秀发展到卓越,你必须培养起有效沟通的能力:与你的同事沟通,与你的老板沟通,与用户沟通,最终于全世界沟通。
一、学海无边!每一天,你必定要一块儿床就热情澎湃。不然,你就只是在打工。
二、让兴趣自由地引领咱们去任何地方。(没有人是为了挣钱才来参与Stack OverFlow的,初衷是想作一些很酷的东西来让互联网变得更好。)
三、做为一名软件开发人员,你该如何磨快你的锯子(编程之外的活动)?
四、不要只顾着埋头写代码,要讨论、反思和学习。能够阅读优秀的编程博客,例如:HackerNews。
五、痴迷是通向成功的一个最明显的风向标。
六、只要有可能,请远离干扰,而且避免同时作多个项目。程序员在切换认为时,必然会在时间、质量以及深度思考能力各方面都受到损害。
一、第一条法则:永远都是你的错
在怨天尤人以前,咱们应该先自我检讨、努力把自身的问题解决了。
二、大道至简:你永远都有简化的空间
三、避免写注释
四、学会读源代码(源代码示例源程序)
五、你的团队能经过电梯测试吗?
项目远景模型能够有助于电梯测试即:
为了(目标客户)
他们(关于需求或者机会的说明)
这个(产品名称)是(产品类型)
它的(关键优点、吸引人的购买理由)
不像(主要竞争对手的替代产品)
咱们的产品(主要的差别化的特性说明)
六、性能致胜
你的网站越快,就会有越多的人来用它。对于速度的需求,3点建议
一、为何程序员不会编程
(立足基本,动手编程)
二、怎样招聘程序员
(一、在什么状况下你会使用哈希表而不用数组?
用数组时发现有太多下标没用到的时候,比方说要求你写一个函数,根据输入的日期,输出那天的节日名称。
你就要考虑怎样存储一年中各节日的日期信息了,最简单的能够用char *DayName[365];
但一年中多数是非节日的日常日,这个数组中其中真正有用的元素只占少数,此时就能够……
二、“为何程序员开玩笑说10月31号跟12月25号是同一天?”
译者注:10月31号用英语表示为Oct. 31,是万圣节(也叫“鬼节”);12月25号用英语表示为Dec. 25,是圣诞节。Oct.原本是October(10月)的意思,
而程序员能够把它解释成Octal(八进制);Dec.原本是December(12月)的意思,而程序员能够把它解释成为Decimal(十进制)。
因而,八进制的31等于3 x 8 + 1,结果等于十进制的25,也就是Oct. 31 = Dec. 25。)
三、如何作好面试刷选
面试软件开发工程师时须要问的5个基本问题,它不能保证你会找到最棒的人,但能阻止至关一部分的人蒙混过关。
四、工做经验年数之神话
寻找并雇佣聪明、富有热情、有干劲、自学能力强的工程师。有些公司都痴
迷于雇佣经验和技术彻底匹配的人,结果形成不少才华横溢的软件工程师都被拒之门外。他们彷佛已经忘了,软件开发者最擅长的就是学习。工做经验年数与编程技能之间是没有必然联系的。
一、如何避免被本身的团队“枪杀”的一个总结:
二、结对编程与代码评审
结对编程:让两个开发者在同一台机器上工做。一个负责编写代码,一个负责阅读、核对,每隔必定时间交换角色。(代码被很快地完成,并且不须要返工。当代码确实须要改动的时候,则有不止一我的熟悉代码)
三、会议是浪费工做时间的最佳去处
为何要开会,就我而言,我采用如下几个原则,以确保个人会议是真正有用的:
努力使咱们必需要开的为数很少的会议开得更有效率。让咱们快速干活,少说废话,抓住工做的重点。
四、处理坏苹果
五、关于远程办公
一、程序员的《权利法案》
“程序员应有的权利你都要去争取!并且记住:你可让公司作出改变,要否则就换一家公司。”(在我大中华也能够这么屌么O(∩_∩)O~)
基础条件
二、电脑工做站的人体工程学
我醒着的每一刻几乎都是在电脑前度过的。我就是那种所谓的“技术宅男”。
购买一张优质的桌子和一把优质的椅子会是你做为一名软件开发者所能作的最好投资之一,它们对你每一天工做的快乐度有着最直接的影响。
一、作好细节
程序是全部微笑细节的集合。
2、用户界面表明了软件。—重要性
(若是你的系统有一个糟糕的界面,你基本上一无全部了。哪怕系统内部使用了最高深的技术,那也于事无补。)
用户界面须优先设计。写代码前,就要想清楚这个程序的用户界面看起来是什么样子的。
纸上画原型设计时一种永远不会过期的方法。
三、分页显示该休矣
一旦你有几千条信息,你要解决的不是分页问题,而是搜索和过滤的问题。
咱们应该避免没头没脑地生成一个包含有成千上万个条目的列表,而后用“一刀切”的方法把他们分页显示出来。这样就是把全部负担扔给了用户。这是不合理的。记住!咱们发明计算机是为了让人们的生活变得更轻松,而不是更难。
总之,你应该努力不扯上分页这玩意,由于你应该让用户在几个条目中就能找到他们须要的东西。这是高于一切的!
一、全部网络通讯都应该加密码
二、防范字典式攻击
三、每一个网站都采用不一样的强类型密码,采用相同的密码很容易被盯上。
一、与客户同甘共苦
二、结交“混世魔猴”(捣蛋的东东)
三、代码评审:说作就作
四、加大测试力度
五、我同情那些不写单元测试的傻瓜
你们对单元测试(模块测试)的广泛接受,已经成为软件开发领域在过去5~7年里最大的进步之一。
12. 它比不写单元测试而直接写代码的效率更高
六、低保真的可用性测试
七、比程序崩溃更糟糕的是什么
一、倾听社区的声音,但别被他们牵着鼻子走
二、别盲目遵从你的用户
一、网络广告该休矣
二、软件订价,咱们深谙其道吗
一、程序员,你幸福吗
“------最难的是,要搞明白你没日没夜地拼命工做究竟是为了什么。”
什么是幸福的真谛呢?总结出8点
1.经历赛过物质
东西会变旧、会变得平淡无奇,它还会磨损,很难拿来分享。可是经历是独特的,经历永远均可以拿出来与人分享,并且经常还会历久弥新。只要有可能的话,把钱花在经历上(好比带全家去迪士尼乐园玩),而不要花在物质上(好比买一台新电视机)。
人类本质上是社会性的动物。想想,你能经过何种方式、只需花费本身一部分的钱就能帮到别人?勿以善小而不为。
人是最能适应变化的。所以,最有效的花钱方式是常常买来一些小变化,而不是花大钱一会儿买来一个大惊喜,而后坐等着新鲜劲很快过去。若是可能的话,把一个大的购买计划拆分红多个小的,一点一点慢慢买进来,更好地享受整个过程。就拿幸福来讲吧,频率比强度更重要。你们须要改变一下观念,记住:不少次小的、愉快的购买实际上比一次巨额的购买更能有效地给你带来幸福。
额外的担保或保险是在利用咱们“损失厌恶”的天性,利用咱们的一时冲动。由于人们的适应能力很强,当购买的东西出现故障时,其实他们并不会像原先想象的那样懊恼不已。
并且,由于人们放弃了享受完整承诺带来的情感利益,保险条款容易不生效或者慷慨的返还政策反而会引发更多的焦虑和不快。所以,避免购买保险,千万别贪图慷慨的返还政策。
即刻的喜悦可能会使你冲动买下你承受不起的东西,或者不是你真正想要的东西。冲动购买使你丧失了必要的思考空间,让你难以作出合理的决定。
在进行一次重要的采购以前,考虑一下售后服务,同时也想一想一旦拥有这样东西以后你到底哪些时间会用在它上面。试着设想未来典型的一天,一小时一小时地细细审视:这东西会如何影响你的生活?
“比较购物”转移了咱们的注意力,使咱们过多地关注在这个商品区别于其余商品的一些无足轻重的特性上,而忽略了去评估咱们真正有多喜欢这个东西。换句话说,花2美圆买到一块便宜巧克力(不错的买卖),跟这块巧克力好很差吃其实没什么关系。不要为了比较而比较,谨防掉入比较购物的陷阱。
试着去考量那些真正能给你带来快乐或提高体验的指标。
不要高估你的能力,别觉得你能独立预测你会有多喜欢某样东西。从科学的角度来说,咱们在这方面极其不擅长!但若是某样东西可靠地给其余不少人带来了幸福,那它极可能也会给你带来幸福。在你作出购买决定以前,请认真考量一下别人的见解和用户评论。
赚钱不容易。跟钱财相比,幸福更是来之不易!所以,当你花钱的时候,请记住上面的8点,这样才能使你买到的幸福最大化。请记住:这是科学!
《代码大全》Steve McConnell
《人月神话》Frederick P.Brooks Jr (计算机也许会变,但人不会变)
《点石成金》Steve Krug
《快速软件开发》Steve McConnell (讲失败的现实)
《Peopleware人件》Tom DeMarco (团队领导须要好好读此书)
《设计心理学》Donald A.Norman (魔鬼藏在细节之中)
《程序员修炼之道:从小工到专家》Andrew Hunt
《精通正则表达式》Jerrrey E.F. Friedl