[关闭]
@Zjmainstay 2016-03-02T10:09:01.000000Z 字数 3505 阅读 1149

高效能程序员的修炼-读书

读书笔记


程序员的8种境界

  1. 不朽的程序员

    Dijkstra, Knuth, Kay

    虽然人已经离开这个世界,但是他的代码却依然活着。

  2. 成功的程序员

    比尔盖茨,Carmack, DHH

    广泛知名度,运营者一个不错的公司,拥有绝对的自由,可以做任何自己想做的事情。

  3. 知名程序员

    前提:一份不错的工作,虽然游民,但不意味着有钱。

  4. 胜任的程序员

    能力使得自己在工作中游刃有余。

  5. 普通程序员

    基本上能够应付一般的编程工作。

  6. 业余程序员

    热衷于编码。

  7. 低调的程序员

    有个性的程序员,很有能力但是没有什么令人瞩目的成就。

  8. 烂程序员

    技能极其匮乏,通常是阴差阳错地干上了这一行。

把一堆烂事搞定

  1. 金钱对于社区是有毒的

  2. Stack Overflow 初衷

    1) 我们热爱编程;

    2)我们想把自己的“面包屑小道”留给其他程序员,这样他们就可以避免犯我们曾经犯过的愚蠢错误;

    3)教同伴是提高我们自己的专业水平最好的途径之一;

    4)我们可以让兴趣自由地引领我们去任何地方;

    5)我们想要贡献自己微薄的力量,一起为社区创建伟大的东西。

  3. 磨刀不误砍柴工

    阅读编程相关的博客或书籍。

    理性讨论 http://news.ycombinator.com

    程序员兴趣 http://www.reddit.com/r/programming

    过多地磨锯子,或者随意地、没有目标地磨锯子,会变成另外一种形式的延误。

  4. 一路向前冲

    沿着那条路下去,一定要快。如果有什么东西挡住了你的去路……绕开它!

高效能编程之原则

##第一条法则:永远都是你的错

    总是假定问题出在你的代码里

##大道至简

    作为一个软件开发者,你就是自己最大的敌人。你越早认识到这点,你的境界就会越好。

    代码评价:

    1)代码简洁度

        缩减一个程序员在想要了解程序的工作原理时所需阅读的代码量。

    2)功能的完整性

    3)执行速度

    4)编码所花费的时间

    5)健壮性

    6)灵活性

##避免写注释

    通过代码自解释来避免写注释。

    你应该总是专注于编写代码,而忘了还有注释这种东西的存在。

##学会读源码

    不管文档上面怎么说,源代码才是最终的事实,是你所能找到的最好的、最确定的、最新的“文档”。

##向橡皮鸭求助

    提出问题前,先思考如何提出问题,当你组织好问题,很多情况下,你会发现,问题已经迎刃而解。    

##创新以人为本

    在软件开发领域,执行意味着专注于构成你的应用程序的所有微小细节。

    如果你不是始终沉迷于你的应用程序的每个方面,不去持续优化和改进它的每一处细节,那么你就不是在执行。

##性能致胜

    网站载入和显示的速度越慢,使用它的人就会越少。

    如何把自己和别人区别开来:你得从“快”入手,其他的先放一放。

    《加速你的网站的13条简单原则》

    性能优化工具:

    1)Yahoo YSlow http://developer.yahoo.com/yslow

    2)Google Page Speed https://developers.google.com/speed/pagespeed

    3)Pingdom Tools http://tools.pingdom.com/fpt

##不管怎么说,那总是人的问题

##领导须以身作则

    1)如果你想提高团队的工程水平,你需要一个领导,而不是靠一个训导员去强制执行。

    2)保持谦虚。

    3)提出建设性的批评时要小心。

    4)想要赢得信誉和尊敬,最好的方法就是努力工作并且取得实实在在的成绩。

    5)百说不如一干。

    6)没有一个通用的建议可以适用于所有的情况。

    7)最有效的一种技术领导就是以身作则。

   Stack Exchange背后的理念:让我们公开讨论,这样我们就可以互相学习怎样把我们喜欢做的事情做得更好。



##结对编程与代码评审

##会议是浪费工作时间的最佳去处

    1)会议绝不应该超过一个小时,否则应判以死刑

    2)每个会议都应该有一个清晰的目标声明

    3)在开会之前预先做好功课

    4)把会议变成可选的

    5)在会议结束时概括一下待办事项

##处理坏苹果



##远程协作

    1)实时交谈

    2)固定的邮件列表

    3)语音和视频聊天



##效率提高

    1)周一的团队状态报告

        * 我们上周做了些什么

        * 我们这周准备做些什么

        * 有什么事情在阻碍我们或者让我们担忧?

    2)会议纪要

程序员的高效工作场所

1. 每个程序员都应该有两台显示器

2. 每个程序员都应该有一台快速的电脑

3. 每个程序员都应该自己选择鼠标和键盘

4. 每个程序员都应该有一把舒适的椅子

5. 每个程序员都应该能快速接入互联网

6. 每个程序员都应该有安静的工作环境

细节决定成败

用户界面代表了软件

用户界面须优先设计

在草拟用户界面的时候,你必须置身于技术开发环境之外

无穷分页与精准搜索

费茨定律与无限宽度

Time = a + blog2(D/S + 1)

D表示从光标的起始点到目标的距离

S表示目标物体的宽度

a 代表装置(拦截)开始/结束的时间

b 表示该装置本身的速度(斜率)。

即使第一版做得不好,也要坚持把它发布出去

你的团队对用户反馈的响应速度会为你的软件定下基调

通过接收反馈快速迭代

保护用户数据

加强代码测试

“混世魔猴”:一个专门用于随机杀死自家服务器集群里的服务或进程的后台程序或服务。

代码评审

单元测试的重要性:

    1. 单元测试可以证明你的代码是能真正解决问题的

    2. 你可以获得一个底层模块的回归测试工具

    3. 你可以在不破坏现有功能的基础上持续改进设计

    4. 一边写单元测试,一边写实现代码,这种工作方式更有趣

    5. 它们可以被用来真实地展示开发速度

    6. 单元测试可以被用作示例代码

    7. 它逼着你在写代码之前做好计划

    8. 它可以降低bug修复的成本

    9. 单元测试甚至比代码审查的效果还要好

    10. 它实际上为程序员消除了工作上的障碍

    11. 单元测试可以催生更好的设计

    12. 它比不写单元测试而直接写代码的效率更高

如果你不早来真正的用户做可用性测试,你是无法知道你的程序能否正常工作的。



##可用性测试:

    1. 测试周期:一个月一次

    2. 测试人员:3~4人

    3. 测试时间:45~60分钟

    4. 在哪测试:独立办公室

    5. 人员特质要求:有点耐心就行

    6. 监控设备:屏幕录制软件或摄像机

    7. 准备什么:想好你要展示的东西,草拟一些步骤和说明,以引导参与者如何开始测试

    8. 花多少钱:每人50~100元(美元)

    9. 测试结果解读:结果整理汇报

社区

##社区反馈

    1. 90%的社区反馈都是垃圾(反过来,有10%的社区反馈是非常棒的)

    2. 别抵挡不住诱惑而误入歧途

    3. 坦诚地说出你不想做的事

    4. 倾听社区的声音,但别被它们牵着鼻子走(**别盲目听从你的用户**)

    5. 参与并支持你的社区

##学习应该是有趣的

##游戏是学习的助手

##游戏促使人们齐心协力



##比直接禁用捣蛋用户更好的3种策略

    1. 打入“地狱”:这种用户对于所有人隐身,自己本身的功能不受影响,无法意识到自己被隐身

    2. 降低访问速度

    3. 制造页面错误

营销伎俩

1. 用不恰当的比较来误导

    本来没有高低之分,强分高低,导致选择,制造商机。

2. 利用消费惯性

    从消费水平较低地区搬到较高地区,人们会保持原有消费水平(低消费),

    而从消费水平较高地区搬到较低地区,人们也会保持原有消费水平(高消费)。

3. “免费”的诱惑

    A:标价0.15美元,购买率73%

    B:标价0.01美元,购买率27%



    A:标价0.14美元,购买率31%

    B:标价免费,购买率69%

4. 假借社会行为准则

    公益服务:

            服务费打折,无人参与

            服务费免费,争相参与    

5. 故意允许拖延

    低价试用期,随后自动转变成每月持续收费

6. 利用禀赋效应

    人们一旦拥有某项物品之后,他们对该物品价值的评价要比未拥有之前大大增加。

7. 利用人的“损失厌恶”

    三门测试:

        规则1:每人100次点击机会,进入房间需要点击一次(无收益),进入后,不同房间赚取不同金额的钱(1~10分)。

                   操作:首先尝试每个房间,然后在赚取金额最高的房间点击剩余次数

        规则2:如果有扇门连续12次未点,它将永远消失

                   操作:3扇门之间跳来跳去,保证任何一扇门都不会消失

        规则3:打开门需要扣掉3分钱

                   操作:同规则2

        规则4:告诉大家每个房间的奖励金额

                   操作:同规则2

        规则5:消失的门再次点击可以重生

                   操作:同规则2

        总结:大家都不能容忍门消失



8. 制造不合理的预期

    通过区分等级,引导用户选择更高等级的商品

9. 利用对价格的偏见

    利用人们对价格的偏见,贵的一定是好的,引导用户购买行为

幸福感

  1. 自我实现 道德、创造力、自觉性、问题解决能力、公正度、接受现实能力

  2. 尊重需求 自尊、信心、成就、尊重他人、被他人尊重

  3. 归属需求 友情、爱情、性亲密

  4. 安全需求 人身安全、工作保障、资源保障、家庭安全、健康和财产保障

  5. 生理需求 呼吸、食物、水、性、睡眠(生理平衡、分泌)

一定你的收入超过了贫困线的3倍多一点之后,你就已经得到了最大的幸福,至少钱本身能给你带来的幸福就那么多。

固定思维

是什么固定了我们的思维,导致0:00-23:59才被认为是24小时。
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注