阅读视图

发现新文章,点击刷新页面。

程序员的修炼-08-阅读之美

本文是 <程序员的修炼-从优秀到卓越> 的读书笔记的第八篇,这本书的作者是 Jeff Atwood,StackOverflow 的创始人之一,Jeff 的文章涉及面很广,他是一个经验老道的程序员、管理者、创业者,这本书谈到了编程之外的很多东西,不管你是初级工程师,还是资深工程师,本书都值得一读。随着你的阅历的增加,每一次重读这本书,都会有不一样的感悟,正如书名“从优秀到卓越”,作者为你指明了道路,至于是否能成功,则要看自己的修炼了。

我会把读书过程中一些精彩的言论摘录下来,有时会加入一些自己的见解或者经历,读书笔记的大纲与书本身的大纲是一致的,这也是我从另外一个地方学到并一直在用的“如何阅读一本书”,记录下来方便自己经常查看,也方便读者查看。下面是<程序员的修炼-从优秀到卓越> 读书笔记系列:

  1. 程序员的修炼-01:绝地反击之术
  2. 程序员的修炼-02:编程之道
  3. 程序员的修炼-03:Web 设计原则
  4. 程序员的修炼-04:关于测试的一些思考
  5. 程序员的修炼-05:了解你的用户
  6. 程序员的修炼-06:互联网那些事
  7. 程序员的修炼-07:游戏与编程
  8. 程序员的修炼-08:阅读之美

不读书,谁之过

自助者,天助之

计算机犯罪的历史与现状

如何与人交流

勤练基本功


《程序员的修炼——从优秀到卓越》是《高效能程序员的修炼》的姊妹篇,包含了Coding Horror博客中的精华文章。全书分为8章,涵盖了时间管理、编程方法、Web设计、测试、用户需求、互联网、游戏编程以及技术阅读等方面的话题。作者选取的话题,无一不是程序员职业生涯中的痛点。很多文章在博客和网络上的点击率和回帖率居高不下—— from 豆瓣

Jeff Atwood于2004年创办Coding Horror博客(.codinghorror.),记录其在软件开发经历中的所思所想、点点滴滴。时至今日,该博客每天都有近10万人次的访问量,读者纷纷参与评论,各种观点与智慧在那里不断激情碰撞 —— from 豆瓣

《程序员的修炼——从优秀到卓越》的写作风格风趣幽默,且充满理解和关怀;适合从新手到老手的各个阶段的程序员阅读,也适合即将成为程序员的计算机和相关专业的学生阅读。《程序员的修炼——从优秀到卓越》能够帮助读者更多地关注技术工作的人性和人文因素,从而实现程序员职业生涯的成功转折 —— from 豆瓣

关于我 && 博客

下面是个人的介绍和相关的链接,期望与同行的各位多多交流,三人行,则必有我师!

  1. 博主个人介绍 :里面有个人的微信和微信群链接。
  2. 本博客内容导航 :个人博客内容的一个导航。
  3. 个人整理和搜集的优秀博客文章 - Android 性能优化必知必会 :欢迎大家自荐和推荐 (微信私聊即可)
  4. Android性能优化知识星球 : 欢迎加入,多谢支持~

一个人可以走的更快 , 一群人可以走的更远

微信扫一扫

程序员的修炼-07-游戏与编程

本文是 <程序员的修炼-从优秀到卓越> 的读书笔记的第七篇,这本书的作者是 Jeff Atwood,StackOverflow 的创始人之一,Jeff 的文章涉及面很广,他是一个经验老道的程序员、管理者、创业者,这本书谈到了编程之外的很多东西,不管你是初级工程师,还是资深工程师,本书都值得一读。随着你的阅历的增加,每一次重读这本书,都会有不一样的感悟,正如书名“从优秀到卓越”,作者为你指明了道路,至于是否能成功,则要看自己的修炼了。

我会把读书过程中一些精彩的言论摘录下来,有时会加入一些自己的见解或者经历,读书笔记的大纲与书本身的大纲是一致的,这也是我从另外一个地方学到并一直在用的“如何阅读一本书”,记录下来方便自己经常查看,也方便读者查看。下面是<程序员的修炼-从优秀到卓越> 读书笔记系列:

  1. 程序员的修炼-01:绝地反击之术
  2. 程序员的修炼-02:编程之道
  3. 程序员的修炼-03:Web 设计原则
  4. 程序员的修炼-04:关于测试的一些思考
  5. 程序员的修炼-05:了解你的用户
  6. 程序员的修炼-06:互联网那些事
  7. 程序员的修炼-07:游戏与编程
  8. 程序员的修炼-08:阅读之美

我的编程生涯是与 BASIC

想玩游戏就自己写

游戏玩家到程序员的蜕变


《程序员的修炼——从优秀到卓越》是《高效能程序员的修炼》的姊妹篇,包含了Coding Horror博客中的精华文章。全书分为8章,涵盖了时间管理、编程方法、Web设计、测试、用户需求、互联网、游戏编程以及技术阅读等方面的话题。作者选取的话题,无一不是程序员职业生涯中的痛点。很多文章在博客和网络上的点击率和回帖率居高不下—— from 豆瓣

Jeff Atwood于2004年创办Coding Horror博客(.codinghorror.),记录其在软件开发经历中的所思所想、点点滴滴。时至今日,该博客每天都有近10万人次的访问量,读者纷纷参与评论,各种观点与智慧在那里不断激情碰撞 —— from 豆瓣

《程序员的修炼——从优秀到卓越》的写作风格风趣幽默,且充满理解和关怀;适合从新手到老手的各个阶段的程序员阅读,也适合即将成为程序员的计算机和相关专业的学生阅读。《程序员的修炼——从优秀到卓越》能够帮助读者更多地关注技术工作的人性和人文因素,从而实现程序员职业生涯的成功转折 —— from 豆瓣

关于我 && 博客

下面是个人的介绍和相关的链接,期望与同行的各位多多交流,三人行,则必有我师!

  1. 博主个人介绍 :里面有个人的微信和微信群链接。
  2. 本博客内容导航 :个人博客内容的一个导航。
  3. 个人整理和搜集的优秀博客文章 - Android 性能优化必知必会 :欢迎大家自荐和推荐 (微信私聊即可)
  4. Android性能优化知识星球 : 欢迎加入,多谢支持~

一个人可以走的更快 , 一群人可以走的更远

微信扫一扫

程序员的修炼-06-互联网那些事

本文是 <程序员的修炼-从优秀到卓越> 的读书笔记的第六篇,这本书的作者是 Jeff Atwood,StackOverflow 的创始人之一,Jeff 的文章涉及面很广,他是一个经验老道的程序员、管理者、创业者,这本书谈到了编程之外的很多东西,不管你是初级工程师,还是资深工程师,本书都值得一读。随着你的阅历的增加,每一次重读这本书,都会有不一样的感悟,正如书名“从优秀到卓越”,作者为你指明了道路,至于是否能成功,则要看自己的修炼了。

我会把读书过程中一些精彩的言论摘录下来,有时会加入一些自己的见解或者经历,读书笔记的大纲与书本身的大纲是一致的,这也是我从另外一个地方学到并一直在用的“如何阅读一本书”,记录下来方便自己经常查看,也方便读者查看。下面是<程序员的修炼-从优秀到卓越> 读书笔记系列:

  1. 程序员的修炼-01:绝地反击之术
  2. 程序员的修炼-02:编程之道
  3. 程序员的修炼-03:Web 设计原则
  4. 程序员的修炼-04:关于测试的一些思考
  5. 程序员的修炼-05:了解你的用户
  6. 程序员的修炼-06:互联网那些事
  7. 程序员的修炼-07:游戏与编程
  8. 程序员的修炼-08:阅读之美

保存互联网,留住所有记忆

网络中立的重要性

YouTube 上的版权保护


《程序员的修炼——从优秀到卓越》是《高效能程序员的修炼》的姊妹篇,包含了Coding Horror博客中的精华文章。全书分为8章,涵盖了时间管理、编程方法、Web设计、测试、用户需求、互联网、游戏编程以及技术阅读等方面的话题。作者选取的话题,无一不是程序员职业生涯中的痛点。很多文章在博客和网络上的点击率和回帖率居高不下—— from 豆瓣

Jeff Atwood于2004年创办Coding Horror博客(.codinghorror.),记录其在软件开发经历中的所思所想、点点滴滴。时至今日,该博客每天都有近10万人次的访问量,读者纷纷参与评论,各种观点与智慧在那里不断激情碰撞 —— from 豆瓣

《程序员的修炼——从优秀到卓越》的写作风格风趣幽默,且充满理解和关怀;适合从新手到老手的各个阶段的程序员阅读,也适合即将成为程序员的计算机和相关专业的学生阅读。《程序员的修炼——从优秀到卓越》能够帮助读者更多地关注技术工作的人性和人文因素,从而实现程序员职业生涯的成功转折 —— from 豆瓣

关于我 && 博客

下面是个人的介绍和相关的链接,期望与同行的各位多多交流,三人行,则必有我师!

  1. 博主个人介绍 :里面有个人的微信和微信群链接。
  2. 本博客内容导航 :个人博客内容的一个导航。
  3. 个人整理和搜集的优秀博客文章 - Android 性能优化必知必会 :欢迎大家自荐和推荐 (微信私聊即可)
  4. Android性能优化知识星球 : 欢迎加入,多谢支持~

一个人可以走的更快 , 一群人可以走的更远

微信扫一扫

程序员的修炼-05-了解你的用户

本文是 <程序员的修炼-从优秀到卓越> 的读书笔记的第五篇,这本书的作者是 Jeff Atwood,StackOverflow 的创始人之一,Jeff 的文章涉及面很广,他是一个经验老道的程序员、管理者、创业者,这本书谈到了编程之外的很多东西,不管你是初级工程师,还是资深工程师,本书都值得一读。随着你的阅历的增加,每一次重读这本书,都会有不一样的感悟,正如书名“从优秀到卓越”,作者为你指明了道路,至于是否能成功,则要看自己的修炼了。

我会把读书过程中一些精彩的言论摘录下来,有时会加入一些自己的见解或者经历,读书笔记的大纲与书本身的大纲是一致的,这也是我从另外一个地方学到并一直在用的“如何阅读一本书”,记录下来方便自己经常查看,也方便读者查看。下面是<程序员的修炼-从优秀到卓越> 读书笔记系列:

  1. 程序员的修炼-01:绝地反击之术
  2. 程序员的修炼-02:编程之道
  3. 程序员的修炼-03:Web 设计原则
  4. 程序员的修炼-04:关于测试的一些思考
  5. 程序员的修炼-05:了解你的用户
  6. 程序员的修炼-06:互联网那些事
  7. 程序员的修炼-07:游戏与编程
  8. 程序员的修炼-08:阅读之美

逻辑人的争议

软件开发者身上的所有的“坏毛病”中,最严重的可能是:我们自以为是典型用户。然而大部分的开发者没有意识到的是,我们其实是异类,我们绝非等闲之辈 — 我们是边缘人。

作者提到了“逻辑人”和“现代智人”的概念

  • 逻辑人:逻辑人渴望控制那些让他们感兴趣的东西,而那些让他们感兴趣的都是些复杂的确定性系统。人是复杂的,但他们不像机器,他们的行为不具有逻辑性和可预见性,最好的机器是数字的,因为这样它就能变得最为复杂、精细,病区能被程序员轻易改变。

  • 现代智人:一般的普通用户,他们只是想简单地使用,而不是去控制。

对于逻辑人来说,控制是他们的目标,而复杂是他们愿意为之付出的代价,对于普通人来说,简单是他们的目标,失去控制权是他们愿意付出的代价。逻辑人被一种对工作原理难以抗拒的认知欲望驱使着,相比之下,现代智人渴望的是成功。

Alan Cooper 列了一些逻辑人的典型特征,你可以对号入座一下:

  1. 不惜牺牲简单以换取控制
  2. 不惜失败以换取认知
  3. 不放过任何一点可能性
  4. 行为像体育特长生

另外一句话软件工程师们需要谨记:任何人都能做出一个没人会用的复杂软件,这其实并不难!把软件做的简单易用才是真本事。你必须停止像逻辑人一样思考,而应该学会像现代智人那样思考。

象牙塔式的开发

象牙塔式的开发指的是:开发团队常年封闭在“高塔”之中,一门心思地做着魔法一般的软件。因为缺乏强有力的证据,开发者都假设其他人都是开发者,这是很危险的。

作者建议:在整个项目周期内,请尽力将你的开发人员暴露在用户面前:参加用户会议,参与可用性测试和验收测试,与用户进行交流,分析用户的数据和行为。

Eric 提出的“互信关系”:当人们从你那里购买软件的时候,他们对眼下和将来有很多期望:

  1. 他们相信,你的产品可以在他们的机器上正常工作
  2. 他们相信,如果他们碰到了问题,你会帮助他们
  3. 他们相信,你会坚持不懈地改进产品
  4. 他们相信,你会一一个公平、合理的价格为他们提供改进后的版本
  5. 他们相信,你的公司不会再短时间内破产

让程序员设计界面的后果

优秀的程序员都有自知之明,知道自己能做什么,不能做什么。他们要么直接拷贝别人的优秀设计;要么本分地只做编码,而把界面设计的工作交给其他专家。

是朋友,就别让你的朋友做出只有程序员才会使用的界面。

保护“中间分子”

专家和小白都只是一小部分人,大部分水平相当的用户都属于“中间分子”,你应该重视这些中间分子,中等水平的用户数量是如此巨大,他们如此具有主导性,以至于你可以放弃新手和专家级别的用户。

为了迎合为数不多的新手和专家,你在软件开发过程中耗费了大量的时间,最终只是让产品变得更差,结果还冷落了核心用户群。

每个用户都会说谎

用户的愿望与现实几乎总是相悖的,我们提倡要观察用户的实际行为,而不是听他们叙述他们的所作所为,其原因就在于这种背离。观察是一种很强大的技能,要学会通过人民的行为来判断,而不是听他们说什么就是什么。

作者提到了“活跃用户的矛盾体”这个概念:活跃用户的矛盾体是一种自相矛盾,因为如果用户对系统多一些了解,从长远来看,是会节省时间的。但现实世界里,人们的行为模式不是那样的。因此,我们不能忍工程师针对理想化的用户开发产品,因为现实中的人是非理性的,我们必须根据用户的实际行为模式来设计产品。

每个用户都会说谎,预期询问用户是否喜欢你的软件–他们当然会说喜欢,因为当面说你的软件有多么糟糕头型是多么的无理 – 你应该效仿 Gregory House : 去观察他们是否使用了你的软件,以及他们是怎么使用的。基于行为数据去设计你的软件,而不要靠用户说的“谎言”(不管那些谎言带有多大的善意)

别把产品发布当目标

衡量程序员是否成功,有个标准是看他发布了多少代码,但是仅仅发布是不够的,有多少用户正在使用你的软件,这才是衡量成功的终极目标

聪明的软件开发者知道,他们的工作远远不止编写代码和发布产品;他们的工作是开发出人民真正想要的使用的软件。这当然包括编码,但还有大量的全局性的其他的事情,比如撰写技术文档、交互设计、培养社区用户、乃至产品愿景,这些对于软件的全面成功都是至关重要的。如果连这一点都没有搞明白,那么你写了什么样的代码就无关紧要了。

别问,需观察

用户口述他们想做的事情,与他们实际的所作所为相比,往往天差地别。从可用性的角度来看,询问用户他们想要什么是徒劳的,原因就在这里 – 你必须观察他们正在做了些什么。在可用性方面,你不能猜测行事,你必须去观察用户如何使用你的软件,除此之外别无他法。

在做设计的时候,如果能基于用户对你的软件的实际使用方式来做决定,岂不是更合理?不管你是在“低保真的可用性测试”转几篇每个观察用户,还是收集用户行为数据、然后在无形之中观察用户,宗旨是一样的:别问,须观察。

功能越多越好吗

软件依靠新功能来推动销售,但久而久之,那些新增的功能恰恰是使得软件越变越糟的罪魁祸首 。那种正在慢慢滋生的微妙的“功能癖” — 他会摧毁人们最喜爱的软件。

一个不好的趋势是:软件公司把现有软件修复 bug 的优先级设得比较低,而把为接下来的版本开发新功能这事看的特别重要。导致的结果就是,软件的质量每况愈下。(就像 Flyme 和 MIUI)

我们也许不该在盲目地把软件当成一堆功能来衡量 – 人们总有“食量”限制,就像在吃自助餐时,那么多事物你吃得完么?我们应该以结果为导向,衡量软件在帮助我们完成任务时的生产力或效力。

生物会为所欲为

作者认为,社会工程充其量是一种不精确的科学,即使在网络空间原型里也是这样。有人曾经说过,“在最精心准备的实验中”,即使条件收到最严格的控制,生物也将为所欲为

在构造社会性软件时,人是所有问题的根源,但解决问题最终还得靠那些人

为了一点绶带

作者总结了自己在 Stack Exchange 的工作内容:我所做的是、我最擅长的是、我最最热爱并且胜过世界上任何其他事情的是,为喜欢相互写几段文字的人们设计大型多人游戏。我吧他们的痴迷,引导到某种积极的事情上面;他们可以从中学习,还可以为整个世界创造一些可以重复利用的美妙作品 — 这依然是我所欲之事,因为我还保留有源源不断的痴迷。

为反社会人群构建社交软件

作者提出了 “10个可怕的想法”:

  1. 从根本降低参与的门槛
  2. 信任用户
  3. 生活就是世界上最大型的多人在线角色扮演游戏
  4. 总有坏事发生
  5. 喜好胜过金钱
  6. 规则可以很有趣,并且具有社交性
  7. 所有的现代网站都按游戏的方式来设计
  8. 考虑周到的游戏设计促成可持续发展的社区
  9. 社区的观点不一定是对的
  10. 需要一定的调解

如果你想在网上学点东西,你必须好好设计你的软件,引导人们与生俱来的社会群体冲动,并使他们重新聚焦在有价值的事情上。


《程序员的修炼——从优秀到卓越》是《高效能程序员的修炼》的姊妹篇,包含了Coding Horror博客中的精华文章。全书分为8章,涵盖了时间管理、编程方法、Web设计、测试、用户需求、互联网、游戏编程以及技术阅读等方面的话题。作者选取的话题,无一不是程序员职业生涯中的痛点。很多文章在博客和网络上的点击率和回帖率居高不下—— from 豆瓣

Jeff Atwood于2004年创办Coding Horror博客(.codinghorror.),记录其在软件开发经历中的所思所想、点点滴滴。时至今日,该博客每天都有近10万人次的访问量,读者纷纷参与评论,各种观点与智慧在那里不断激情碰撞 —— from 豆瓣

《程序员的修炼——从优秀到卓越》的写作风格风趣幽默,且充满理解和关怀;适合从新手到老手的各个阶段的程序员阅读,也适合即将成为程序员的计算机和相关专业的学生阅读。《程序员的修炼——从优秀到卓越》能够帮助读者更多地关注技术工作的人性和人文因素,从而实现程序员职业生涯的成功转折 —— from 豆瓣

关于我 && 博客

下面是个人的介绍和相关的链接,期望与同行的各位多多交流,三人行,则必有我师!

  1. 博主个人介绍 :里面有个人的微信和微信群链接。
  2. 本博客内容导航 :个人博客内容的一个导航。
  3. 个人整理和搜集的优秀博客文章 - Android 性能优化必知必会 :欢迎大家自荐和推荐 (微信私聊即可)
  4. Android性能优化知识星球 : 欢迎加入,多谢支持~

一个人可以走的更快 , 一群人可以走的更远

微信扫一扫

程序员的修炼-04-关于测试的一些思考

本文是 <程序员的修炼-从优秀到卓越> 的读书笔记的第四篇,这本书的作者是 Jeff Atwood,StackOverflow 的创始人之一,Jeff 的文章涉及面很广,他是一个经验老道的程序员、管理者、创业者,这本书谈到了编程之外的很多东西,不管你是初级工程师,还是资深工程师,本书都值得一读。随着你的阅历的增加,每一次重读这本书,都会有不一样的感悟,正如书名“从优秀到卓越”,作者为你指明了道路,至于是否能成功,则要看自己的修炼了。

我会把读书过程中一些精彩的言论摘录下来,有时会加入一些自己的见解或者经历,读书笔记的大纲与书本身的大纲是一致的,这也是我从另外一个地方学到并一直在用的“如何阅读一本书”,记录下来方便自己经常查看,也方便读者查看。下面是<程序员的修炼-从优秀到卓越> 读书笔记系列:

  1. 程序员的修炼-01:绝地反击之术
  2. 程序员的修炼-02:编程之道
  3. 程序员的修炼-03:Web 设计原则
  4. 程序员的修炼-04:关于测试的一些思考
  5. 程序员的修炼-05:了解你的用户
  6. 程序员的修炼-06:互联网那些事
  7. 程序员的修炼-07:游戏与编程
  8. 程序员的修炼-08:阅读之美

单元测试是必要的

单元测试真正的价值在于,它迫使你停下来,为测试思考一番。大部分开发人员都不做测试!他们只是随意输入一些数字,然后点几个按钮,如果这个过程中没有发现尚未处理的异常,他们就觉得代码已经足够好了,可以交付给测试团队了。

单元测试让你为刚刚写下的代码思考一连串艰难但又不得不思考的问题:

  1. 我该怎样测试这块代码?
  2. 我该执行何种测试?
  3. 通常的情况是怎么样的?
  4. 可能碰到的异常情况有哪些?
  5. 我有多少外部依赖关系?
  6. 我可能碰到哪些系统故障?

有时候是硬件问题

作者这一节主要举了一个他们实际遇到的例子,由硬件引起的 bug,排查起来异常困难,但如果用对了工具,那么将事半功倍。

尽管软件是不可靠的,但我们不能总把矛头指向软件,有时候,你面对的确确实实是一个硬件问题。

异常驱动的开发

作为一个开发者,你不应该让用户来指出哪里有错误,你应该比用户更加熟悉你的系统。所以你需要建立一种异常和错误报告机制,你需要集中在一个地方去处理所有的错误,这个地方是你团队里面的所有的开发人员非常熟悉的,而且每天会接触到的。比如 Stack Overflow ,用 ELMAH

对于 “测试驱动开发” 的一个思考是时间投入回报比,如果你修复了一个真实用户永远也碰不到的 bug,那么你的修复有什么价值呢?

作者建议大家使用 “异常驱动的开发”:

  1. 将你的软件发布出去,让尽可能多的用户去使用它
  2. 然后一心一意地研究他们产生的错误日志,使用那些异常日志去找出问题的根源,并且专注在你的代码中有问题的区域
  3. 重新架构,重构代码,以消除最严重的3个问题
  4. 快速迭代,部署,如此周而复始

这种数据驱动的反馈机制是非常有效地,几个迭代下来,你的程序将非常稳定,坚如磐石。


《程序员的修炼——从优秀到卓越》是《高效能程序员的修炼》的姊妹篇,包含了Coding Horror博客中的精华文章。全书分为8章,涵盖了时间管理、编程方法、Web设计、测试、用户需求、互联网、游戏编程以及技术阅读等方面的话题。作者选取的话题,无一不是程序员职业生涯中的痛点。很多文章在博客和网络上的点击率和回帖率居高不下—— from 豆瓣

Jeff Atwood于2004年创办Coding Horror博客(.codinghorror.),记录其在软件开发经历中的所思所想、点点滴滴。时至今日,该博客每天都有近10万人次的访问量,读者纷纷参与评论,各种观点与智慧在那里不断激情碰撞 —— from 豆瓣

《程序员的修炼——从优秀到卓越》的写作风格风趣幽默,且充满理解和关怀;适合从新手到老手的各个阶段的程序员阅读,也适合即将成为程序员的计算机和相关专业的学生阅读。《程序员的修炼——从优秀到卓越》能够帮助读者更多地关注技术工作的人性和人文因素,从而实现程序员职业生涯的成功转折 —— from 豆瓣

关于我 && 博客

下面是个人的介绍和相关的链接,期望与同行的各位多多交流,三人行,则必有我师!

  1. 博主个人介绍 :里面有个人的微信和微信群链接。
  2. 本博客内容导航 :个人博客内容的一个导航。
  3. 个人整理和搜集的优秀博客文章 - Android 性能优化必知必会 :欢迎大家自荐和推荐 (微信私聊即可)
  4. Android性能优化知识星球 : 欢迎加入,多谢支持~

一个人可以走的更快 , 一群人可以走的更远

微信扫一扫

程序员的修炼-03-Web 设计原则

本文是 <程序员的修炼-从优秀到卓越> 的读书笔记的第三篇,这本书的作者是 Jeff Atwood,StackOverflow 的创始人之一,Jeff 的文章涉及面很广,他是一个经验老道的程序员、管理者、创业者,这本书谈到了编程之外的很多东西,不管你是初级工程师,还是资深工程师,本书都值得一读。随着你的阅历的增加,每一次重读这本书,都会有不一样的感悟,正如书名“从优秀到卓越”,作者为你指明了道路,至于是否能成功,则要看自己的修炼了。

我会把读书过程中一些精彩的言论摘录下来,有时会加入一些自己的见解或者经历,读书笔记的大纲与书本身的大纲是一致的,这也是我从另外一个地方学到并一直在用的“如何阅读一本书”,记录下来方便自己经常查看,也方便读者查看。下面是<程序员的修炼-从优秀到卓越> 读书笔记系列:

  1. 程序员的修炼-01:绝地反击之术
  2. 程序员的修炼-02:编程之道
  3. 程序员的修炼-03:Web 设计原则
  4. 程序员的修炼-04:关于测试的一些思考
  5. 程序员的修炼-05:了解你的用户
  6. 程序员的修炼-06:互联网那些事
  7. 程序员的修炼-07:游戏与编程
  8. 程序员的修炼-08:阅读之美

网站的评判标准

作者在做网站的评委的时候,每个参赛的网站只有 30s 的时间,对于此:“在 30 秒内作出评判是完全不公平的,但那也恰恰反映了现实世界中的真实情况”

作者给参赛的提了一些建议,你的网站首页需要给人一种眼前一亮的感觉:

  1. 加载速度要快,尤其是移动互联网时代,超过1s 用户就会失去耐心
  2. 这到底是什么东西?不能让进来网站的用户云里雾里,让用户一进来就知道这个网页是干嘛的。
  3. 给我看一个例子
  4. 清清楚楚告诉我要做什么,并且扫除障碍
  5. 拥抱你的受众,即使这意味着要把其他受众排除在外

在任何 Web 应用中,设计首页的基本草图是你应该做的第一件事情,因为他是至关重要的初始设计文稿,也是你的远景声明。

追求简单

追求简单更在于把简单进行到底,从雅虎首页和 Google 首页的历年对比来看,Google 在首页做到了非常克制的简单,而雅虎的首页越来越复杂,信息越来越多,现在来看,这简直就是门户网站的“灾难”

Google 的简单,是把复杂的事情放在了背后,而不是一股脑推给用户

应用会取代网站吗?

我们应该从简单设计入手,必要时按比例放大,而不是一开始就把事情搞得很复杂,然后被迫收缩,这与目前 Moble First 的设计理念类似。

为什么应用比网站更好?

  1. 运行速度更快
  2. 使用简单的原生 UI 控件
  3. 更好地利用了屏幕空间
  4. 更适合于移动环境,甚至离线的情况

为什么网站比应用更好?

  1. 网站可以运行在任何设备的浏览器上
  2. 网站不需要安装
  3. 网站不需要手动升级
  4. 网站提供了统一的用户体验

从上面的对比来看,其实是各有利弊的,不过我们也可以看到后续的发展,网页和 App 会越来越接近,其开发语言、运行环境越来越一致,各种跨平台的框架让 App 和网页的开发不再差异巨大,随着移动互联网的普及,任何 App 和网页都会是以移动设备优先的角度去开发的。

网页和 App 的界限会非常模糊,最后统一。

切记墨守成规

我们需要采用正确地做事方式,而不是标准的做事方式:

  1. 全面了解当前的规范以及它形成的缘由(知其然知其所以然)
  2. 偏离这个规范需要有理有据
  3. 在实验过程中收集用户使用数据(AB Test)
  4. 基于数据做决定

做 Android 系统优化最好也遵循上面的步骤,先弄懂代码逻辑,再弄懂代码为何这么写,然后再去思考如何优化,这期间就需要找到瓶颈,作出修改,拿到用户数据,对比用户数据选择最优解。

诡异的单键设计

iPhone 的单 Home 键设置一直饱受争议,因为这使得后退这个操作比较复杂,在屏幕比较小的机器上还好,可以手势操作,但是在大屏幕机器上,后退到上一页非常不方便,你不得不用另外一个手来进行操作。

可用性并非阳春白雪

如果你的项目里面没人关心可用性,那么记得项目注定会失败。

  1. 可用性测试是人们为改进网站所能做的最有效的措施之一
  2. 既然大部分组织均有财力请专人来从事常规性的测试工作,每个人都应该自己学着做可用性测试

作者推荐了一本书:《用眼动追踪提升网站可用性》,感兴趣的可以买一本看看

费茨定律的另一面

费茨定律: 一个东西越大,离光标越近,它就越容易被点击。

作者概括了一篇“Visualizing Fitts’s Law” 的文章的核心思想:

  1. 把常用的 UI 元素摆在屏幕的边缘,因为光标自动停留在屏幕的边缘,这样的话,那些 UI 元素将更加容易被点击
  2. 让可点击的区域尽可能大。目标越大,越容易被点击

同理,如果有的必要的按钮你不希望用户点击,那么做小一点总没有错,要让不常用或者危险的 UI 元素难以被点击

可用性与易学性

网站的写作应该采用“倒金字塔”的风格:在文章的开头先把结论告诉读者,接着再写最重要的辅助信息,最后才介绍相关的背景。

毋庸置疑的是,你应该尽量吧最重要的信息放在顶部,不管你是做一个网页,写一段程序,写一封电子邮件,还是做一份简历,等等

另外作者推荐了一本书 写给程序员的UI设计指南,感兴趣的可以看一下

只是多一个

如果你想再加一个什么 UI 元素,请确信,你所加的那个 UI 元素不是压倒骆驼的最后一根稻草

敢于说不

创新并不是要接受所有的东西,而应该对除了关键性功能之外的所有东西通通说不。

用户界面很难做

这里主要说的是程序员在做用户界面的时候,总是很粗糙,不易用。不过从现在的发展来看,用户界面设计不再那么困难,各种美观的界面框架可以非常容易的套用。


《程序员的修炼——从优秀到卓越》是《高效能程序员的修炼》的姊妹篇,包含了Coding Horror博客中的精华文章。全书分为8章,涵盖了时间管理、编程方法、Web设计、测试、用户需求、互联网、游戏编程以及技术阅读等方面的话题。作者选取的话题,无一不是程序员职业生涯中的痛点。很多文章在博客和网络上的点击率和回帖率居高不下—— from 豆瓣

Jeff Atwood于2004年创办Coding Horror博客(.codinghorror.),记录其在软件开发经历中的所思所想、点点滴滴。时至今日,该博客每天都有近10万人次的访问量,读者纷纷参与评论,各种观点与智慧在那里不断激情碰撞 —— from 豆瓣

《程序员的修炼——从优秀到卓越》的写作风格风趣幽默,且充满理解和关怀;适合从新手到老手的各个阶段的程序员阅读,也适合即将成为程序员的计算机和相关专业的学生阅读。《程序员的修炼——从优秀到卓越》能够帮助读者更多地关注技术工作的人性和人文因素,从而实现程序员职业生涯的成功转折 —— from 豆瓣

关于我 && 博客

下面是个人的介绍和相关的链接,期望与同行的各位多多交流,三人行,则必有我师!

  1. 博主个人介绍 :里面有个人的微信和微信群链接。
  2. 本博客内容导航 :个人博客内容的一个导航。
  3. 个人整理和搜集的优秀博客文章 - Android 性能优化必知必会 :欢迎大家自荐和推荐 (微信私聊即可)
  4. Android性能优化知识星球 : 欢迎加入,多谢支持~

一个人可以走的更快 , 一群人可以走的更远

微信扫一扫

程序员的修炼-02-编程之道

本文是 <程序员的修炼-从优秀到卓越> 的读书笔记的第二篇,这本书的作者是 Jeff Atwood,StackOverflow 的创始人之一,Jeff 的文章涉及面很广,他是一个经验老道的程序员、管理者、创业者,这本书谈到了编程之外的很多东西,不管你是初级工程师,还是资深工程师,本书都值得一读。随着你的阅历的增加,每一次重读这本书,都会有不一样的感悟,正如书名“从优秀到卓越”,作者为你指明了道路,至于是否能成功,则要看自己的修炼了。

我会把读书过程中一些精彩的言论摘录下来,有时会加入一些自己的见解或者经历,读书笔记的大纲与书本身的大纲是一致的,这也是我从另外一个地方学到并一直在用的“如何阅读一本书”,记录下来方便自己经常查看,也方便读者查看。下面是<程序员的修炼-从优秀到卓越> 读书笔记系列:

  1. 程序员的修炼-01:绝地反击之术
  2. 程序员的修炼-02:编程之道
  3. 程序员的修炼-03:Web 设计原则
  4. 程序员的修炼-04:关于测试的一些思考
  5. 程序员的修炼-05:了解你的用户
  6. 程序员的修炼-06:互联网那些事
  7. 程序员的修炼-07:游戏与编程
  8. 程序员的修炼-08:阅读之美

切记一根筋

优秀的程序员擅长编程,成为更加优秀的程序员的方法是抛开编程,你必须培养对于编程周边的所有事情的热情

比尔盖茨在2005年的访谈中提到:“工作的本质不是闭门造车,最最匮乏的人才是那些既对工程技术有超强的领悟能力,有可以与核心开发人员建立良好的关系,并且可以充当与客户、市场等之间桥梁的人”

你的兴趣爱好越广泛,就越能胜任你的工作

破窗理论

破窗理论:如果一栋楼的一个窗户破了,并且留在那里不去修复,这栋楼的其他窗户很快就会被破坏。一个长久没有修复的破窗户释放出来的信号是“没人管”,这会让人觉得,即使再破坏更多的窗户也不会付出什么代价

从编程的角度来看,破窗理论也存在,你需要及时采取措施:不要放任“破窗”(不良的设计、错误的决定或者糟糕的代码)不管,一但发现就要尽快修复。如果时间不够,就先把他隔离起来。你可以把这些令人不快的代码注释掉,或者显示“尚未实现”的消息,或者用虚假的数据来代替。

编程是非常注重细节的!如果你不能够掌握这些细节,你就会有一种失控的感觉,而你的项目失控也只是一个时间问题。或许,我们就应该谨小慎微。

要么热爱,要么离开

我所认识的最杰出的程序员,他们对所从事的事情都有着终生的热忱,他们绝不会因为一次微弱的经济波动而转行去做其他的事情

对于编程:要么热爱,要么离开

简单之美

在编程开发领域,人们很容易就陷入“越新越好”的思维模式,而忘记了“想法往往比代码更重要”。

Forth 的进化指出了 Charles 在发明和实现 Forth 语言的时候的知道原则:

  1. 保持坚定
  2. 不要妄加推测
  3. 自己动手

Charles 认为:简单必须被强制执行,而不是作为一个可有可无的目标。现实中,很多开发者难以保持程序的简单,因为他们没有在需要做艰难决定的时候坚持说“不”,而事事允诺,处处妥协却容易的多

很多人看不上 oppo,但是 oppo 的系统在设计上保持了简单之美,所以 oppo 的系统用起来很轻,很舒服,长时间使用也很少有卡顿的情况出现,低端机的上面的表现也比同类竞品要好很多,这也与 oppo 的开发理念契合:优先保证基础体验(即快省稳)

乐于删代码

如果有一段你不再需要的代码,请真正地删除它而不是把它闲置在那里,其主要的原因是为了去除噪音和不确定性,开发者面临的众多最困难的事情之一就是代码流的噪音或者不确定性,因为这会影响他们将来的工作效率。无用的代码会引发其他开发者的思考:

  1. 为什么这段代码以前是这样写的?
  2. 为什么这段新代码更好?
  3. 将来我们会重新使用老代码么?
  4. 我们评判的标准是什么?

在目前 Git 横行的时代,你更不应该保留那些没用的老代码,如果想看之前的写法,也就是 Git 几行命令的事情。如果你不能有一个好的不删除的理由,那么删掉它就是合理的

你是程序员这块料吗

这一节提到,并不是所有人都适合编程,事实上,大部分人学不会编程,其中决定因素是他们对无意义事物的态度

形式逻辑证明,进而用一种叫编程语言的形式系统来表达,通过执行某种特别的计算得出结果,这其实是完全没有意义的。为了编写一个计算机程序,你必须做出妥协,赋予程序某种意义,但不管你想要这个程序做什么,计算机都会按照这些没有意义的规则运行,并且得到一些没有意义的结果。在测试中,那些有稳定思维模型的人都体现出了在这方面的先天接受能力,他们都有能力看见规则背后的数学计算问题,而且无论怎样都能遵循那些规则。另外一个方面,那些没用稳定思维模型的人总是找不到头绪。

你循规蹈矩么

这节我感觉标题不好,循规蹈矩:原指遵守规矩,不敢违反。现也指拘守旧准则,不敢稍做变动。而文中则说的是你是否遵循基本的规则。

这一节可以理解为:很多事情,包括软件开发,都是有一定的套路或者基本规则的,这些套路或者基本规则是被大家验证过的,你要做一件事的时候,最好按照这些套路或者基本规则来办,比如作者列出了一篇博客中写出更好的代码的 12 个步骤:

  1. 你使用源代码管理系统么?
  2. 你能一步之内完成软件的一次构建么?
  3. 你每天都出版本么?
  4. 你有一个 bug 跟踪数据库么?
  5. 在写新代码之前,你先解决 bug 么?
  6. 你有最新的软件开发计划表么?
  7. 你有产品规范文档么?
  8. 程序员有安静的工作环境么?
  9. 你在使用最好的商业工具么?
  10. 你有测试人员么?
  11. 在面试过程中,你让应聘者写代码么?
  12. 你做可用性测试么?

虽然上面都是疑问句,但答案是肯定的

科里定律:坚守一个目标

科里定律:坚守一个目标。这个定律在现代人居开发的下面几个核心原则中都有体现

  1. Don‘t Repeat Yourself (DRY,避免重复)
  2. Once And Only Once (OAOO,唯一一次)
  3. Single Point Of Truth (SPOT,单点真理)

科里定律同时也告诉我们,要有意识地选择你的代码不做什么

最牛的编码套路

与你所相信的恰恰相反,单纯地每天埋头于工作并不能算是真正意义上的锻炼 – 参加会议并不能锻炼你的人际交往能力;回复邮件并不能提高你的打字水平。你必须定期流出时间,集中锻炼,这样才能把事情做得更好

上面这个理论也就是我比较推崇的两本书《深度学习》和 《刻意练习》里面所强调的(如果你还没有看过这两本书,那么建议你看一下):一万小时不是一个小时重复一万次,而是每个小时都能全心全意投入学习,深入思考,总结归纳

另外作者也提到了“努力地学习”:要不断地挑战自身能力之外的东西,学习和训练的主要价值在于发现弱点,有针对性地进行提高。“努力地学习”意味着,要常常去处理那些刚好在你能力极限上的问题,也就是那些对你来说有很大可能失败的事情。如果不经历一些失败的话,你可能就不会成长。你必须不断挑战自我,超越自己的极限

作者列举了一些套路(是那些真正可以实施的套路,有些长,不过我还是把所有的条目都摘抄出来,因为我自己也要实施):

  1. 写一份自己的简历。把自己所有的相关技能都罗列出来,然后把那些在100年后还用得到的标出来。给每个技能打分,满分为10分
  2. 罗列出你所景仰的程序员。尽量包括那些与你一起工作的人,因为你会在工作中从他们身上获取一些技能。记录下他们身上的1 ~ 2个闪光点,也就是你希望自己有所提高的方面
  3. 查看维基百科上的“计算机科学”栏目,找到“计算机领域先驱者”这个分类,从这个列表中挑选一个人,阅读他的事迹,并且在阅读时打开任何你感兴趣的链接
  4. 花20分钟通读别人的代码。读出色的代码和读糟糕的代码都是有益的,两者都要读,轮流切换。如果你无法感觉出它们之间的区别,可以求助于一位你尊敬的程序员,让他给你展示一下什么是出色的代码、什么是糟糕的代码。把你读过的代码给别人也看看,问问他们的看法
  5. 罗列出你最喜欢的10个编程工具——那些你觉得你用得最多、非有不行的工具。随机挑选其中的一个工具,花一个小时去阅读它的文档。在这一个小时里,努力去学习这个工具的某个你不曾意识到的新功能,或者发现某种新的使用方法
  6. 想一想,除了编程之外你最擅长什么事情?再想一想,你是通过怎样的锻炼才变得如此熟练和专业的?这对于你的编程工作又有什么启发呢?(怎么把这些经验应用到编程方面?)
  7. 拿出一叠简历,并和一组面试官在同一个房间里待上一个小时。确保每份简历都至少被3个面试官看过,并且要给出1 ~ 3分的评分。针对那些不同面试官评判大相径庭的简历展开讨论
  8. 参与一个电话面试。事后写下你的反馈,抛出你的观点,然后与主持电话面试的人聊一聊,看看你们是否达成了一致的结论
  9. 进行一次技术面试,并且被面试的人应该是某个你不太了解的领域里的专家。让他假定听众在该领域里一无所知,因此请他从最基础的讲起。努力去理解他所说的,必要时问一些问题
  10. 有机会参与别人的技术面试。期间,你只是认真地听、认真地学。在应聘者努力解决技术问题的同时,你也要在自己脑子里尝试解决这些问题
  11. 找到一个能和你交换实际问题的人,每隔一周,相互交流编程问题。花10 ~ 15分钟来尝试解决这些问题,再用10 ~ 15分钟进行讨论(无论能否解决)
  12. 当你听到任何你一时之间也无法解决的面试问题时,赶紧回到你的座位上,把这个问题用电子邮件发给自己,以留作日后的提醒。在那一周里找出点时间,用自己最喜欢的编程语言来解决它

另外作者也提到了 Peter Norvig 所列出的一些建议:

  1. 与别的程序员交流。读别人的代码。这比任何书籍或培训课程都更重要
  2. 动手写程序!最好的学习方法就是边做边学
  3. 在本科或研究生的课程中学习编程课程
  4. 找一些项目来做,并且需要与其他程序员形成团队来合作。在项目的进行过程中,学会辨别最出色的程序员以及最糟糕的程序员
  5. 在项目中跟随别的程序员一起工作,了解如何维护那些不是你写的代码,并且学习如何写出利于他人维护的代码
  6. 学习多种不同的编程语言,特别是那些与你现在所熟悉的语言有着不同的世界观和编程模型的
  7. 了解硬件对软件的影响。知道你的电脑执行一条指令需要多少时间,从内存中取出一个字(在有缓存或没缓存的情况下)需要多少时间,在以太网(或者因特网)上传输数据需要多少时间,从磁盘中读取连续的数据或者在磁盘上跳转到另一个位置需要多少时间,等等

最后作者也阐述了自己的编程套路:

  1. 写博客。我在2004年初创办了CodingHorror.com博客,作为我自己努力学习的一种形式。它在一开始很不起眼,到后来成为我职业生涯中做过的最重要的一件事。所以,你也应该写博客。最后“闻达于天下”的人,往往就是那些能够有效书写和沟通的人。他们的声音最响亮,是他们在制定游戏规则,并且引领世界的潮流
  2. 积极参与著名的开源项目。所有的高谈阔论听起来都很好,但是,你是一个大话王还是一名实干家呢?别光说不练,这个非常重要,因为人们会用你的行动来衡量你,而不是你的言论。努力在公众面前留下些实实在在有用的东西吧,到时候你就可以说,“我在那个项目中出过力”

当你能编写精彩的代码、并且能用精彩的言辞向世人解释那些代码时,到那时候,我会觉得你已经掌握了最牛的编码套路!

孤独的人是可耻的

我觉得这一节作者引用的 “Creating My Own Personal Hell” 中阐述独自编程的危害性非常值得深思:

有些人宣称,“独自工作”为建立起自己的工作流程提供了极好的机会。但是,根据我的经验,在团队只有一个人的时候是没有流程可言的。没有任何东西可以帮你抵挡住如潮水般涌来的大量工作。当你的代码太急于求成时,没有人去纠正你的错误。没有人检查你的代码。没有人保证你的代码能准时提交、打好标签、进行常规的单元测试。没有人保证你遵循了某个编码标准。没有人督促你及时修复代码里的缺陷。没有人检验你是否把一个实际存在的问题标注成了“无法重现”。没有人复核你的估算,在你玩忽职守的时候把你抓回来

没有人在你生病时或者出差时接过你的工作。没有人在你工作繁重时帮助你,在你深陷于骚扰电话、无聊会议、还有在最后关头忽然被扔过来(但需要立即解决)的杂碎任务时,没有人能拉你一把。没有人忽然有奇思妙想,帮助你走出困境。没有人在设计、架构或技术上与你合作。你在一个真空中工作;在真空中,没有人能听到你绝望的尖叫

如果你读到了这些内容,请以此为鉴。如果某个公司只招你作为唯一的一位开发者,在你答应他们之前请三思。那根本就是另一种地狱。如果有机会的话,请选择那些能与其他开发者一起工作的职位,这样你至少可以在与别人一起工作的过程中得到指导,这有助于你发展自身的技能,让你在技术方面与时俱进

如果你不能展示给别人看,再漂亮的编码技巧又有什么意义?如果你不去接触其他程序员的不同观点、不同方法以及不同的技术,你又怎么能学到更多的技艺?谁又能检查你的代码并告诉你,那个问题有更简单的解决方法?如果你对待编程的态度是认真的,你应该要求与同伴们一起工作

个人的能力总是有限的,它决定了你在这个领域里只能走那么远。找一些其他的聪明程序员吧,和他们一起工作。努力让自己保持谦逊低调,然后你会很快发现,软件开发其实是一种社会活动——它的社会性比大部分人想象的要大得多。你可以从那些性格内向的同伴身上学到很多东西

就像我们常说的,一个人可以走的更快,但是一群人可以走的更远

你要编程伙伴么

在健康的软件工程文化影响下,团队成员通过结对的方式来提高他们的工作质量和生产力,他们明白,他们花在查看同事工作上的时间,总会在别人反过来查看他们自己的交付物的时候得到回报。

作者更是给出了一份数据来说明代码 Review 的作用(有点颠覆我的认知):

在平均缺陷发现率方面,单元测试只能到到 25%,功能测试可以达到 35%,而集成测试也不过45%,相比之下,设计和代码审查的平均功效可以达到 55% 和 60%

编程有很多乐趣,其中一点在于:“你不必独自一人去做。”,所以,谁是你的编程伙伴?

软件学徒制

很多公司会给新人配一个导师,通过这种 1V1 的指导,让新人能尽快融入到公司,这与学徒制度很类似

晚上学习理论,白天编程工作 — 这种组合方式特别有效


《程序员的修炼——从优秀到卓越》是《高效能程序员的修炼》的姊妹篇,包含了Coding Horror博客中的精华文章。全书分为8章,涵盖了时间管理、编程方法、Web设计、测试、用户需求、互联网、游戏编程以及技术阅读等方面的话题。作者选取的话题,无一不是程序员职业生涯中的痛点。很多文章在博客和网络上的点击率和回帖率居高不下—— from 豆瓣

Jeff Atwood于2004年创办Coding Horror博客(.codinghorror.),记录其在软件开发经历中的所思所想、点点滴滴。时至今日,该博客每天都有近10万人次的访问量,读者纷纷参与评论,各种观点与智慧在那里不断激情碰撞 —— from 豆瓣

《程序员的修炼——从优秀到卓越》的写作风格风趣幽默,且充满理解和关怀;适合从新手到老手的各个阶段的程序员阅读,也适合即将成为程序员的计算机和相关专业的学生阅读。《程序员的修炼——从优秀到卓越》能够帮助读者更多地关注技术工作的人性和人文因素,从而实现程序员职业生涯的成功转折 —— from 豆瓣

关于我 && 博客

下面是个人的介绍和相关的链接,期望与同行的各位多多交流,三人行,则必有我师!

  1. 博主个人介绍 :里面有个人的微信和微信群链接。
  2. 本博客内容导航 :个人博客内容的一个导航。
  3. 个人整理和搜集的优秀博客文章 - Android 性能优化必知必会 :欢迎大家自荐和推荐 (微信私聊即可)
  4. Android性能优化知识星球 : 欢迎加入,多谢支持~

一个人可以走的更快 , 一群人可以走的更远

微信扫一扫

程序员的修炼-01-绝地反击之术

本文是 <程序员的修炼-从优秀到卓越> 的读书笔记的第一篇,这本书的作者是 Jeff Atwood,StackOverflow 的创始人之一,Jeff 的文章涉及面很广,他是一个经验老道的程序员、管理者、创业者,这本书谈到了编程之外的很多东西,不管你是初级工程师,还是资深工程师,本书都值得一读。随着你的阅历的增加,每一次重读这本书,都会有不一样的感悟,正如书名“从优秀到卓越”,作者为你指明了道路,至于是否能成功,则要看自己的修炼了。

我会把读书过程中一些精彩的言论摘录下来,有时会加入一些自己的见解或者经历,读书笔记的大纲与书本身的大纲是一致的,这也是我从另外一个地方学到并一直在用的“如何阅读一本书”,记录下来方便自己经常查看,也方便读者查看。下面是<程序员的修炼-从优秀到卓越> 读书笔记系列:

  1. 程序员的修炼-01:绝地反击之术
  2. 程序员的修炼-02:编程之道
  3. 程序员的修炼-03:Web 设计原则
  4. 程序员的修炼-04:关于测试的一些思考
  5. 程序员的修炼-05:了解你的用户
  6. 程序员的修炼-06:互联网那些事
  7. 程序员的修炼-07:游戏与编程
  8. 程序员的修炼-08:阅读之美

待办事项不靠谱

作者吐槽说,每天都会有新的 TO-DO 应用诞生,很多人还是管不好自己的时间,TO-DO 列表正在变得吃力不讨好:

  1. 列表会给你一种正在进行的错觉
  2. 列表会给你一种完成的错觉
  3. 对于那些未完成的事情,列表会让你产生罪恶感
  4. 对于那些总被延期的事情,列表会让你产生罪恶感
  5. 对于那些不想做而没做的事情,列表会让你产生罪恶感
  6. 你会根据列表错误地排出优先级
  7. 列表不够高效
  8. 列表吞噬了主动做事的乐趣,让你觉得做事情成了一种义务
  9. 从长远来看,列表博纳更没有让你变得有条理
  10. 列表会让你做事缺乏主动性

作者的建议是,每天早上醒来的时候,如果你不能够用上帝赐予你的大脑使劲想出今天你需要做的最重要的三件事,那么你必须先把这个问题认真解决了。你必须要搞明白,什么东西对于你来说是最重要的,并且能让你充满激情。

工具是浮云,而你的大脑将会伴随你的一生,信任他,训练他。

今天上班可以放羊

本节主要探讨了 Google 的 20% 时间理论:在 Google,理论上你可以拿上班时间的 20% 来做任何自己想做的事情。Google 许多伟大的软件都是这 20% 的时间里成型的,比如 Gmail、Google News、Google Talk、AdSense 等。

真正能否在公司执行,需要公司的支持:

  1. 公司项目计划是否足够宽松?
  2. 公司文化容得下“白日做梦”么?
  3. 可以接受失败么?
  4. 个人的实验是否能得到尊重?

在工程师文化主导的公司应该会比较容易实行,“重要的创新和改进可能会在任何时候以自下而上的方式来自于公司的任何人—他们不会按照神奇的总体规划上预定的间隔自己蹦出来。

你没有说服我

本节以《末代独裁》里面的一个例子,来说明说服别人的重要性。如果想落实一件事情,你不能只是把自己的观点表达出来,等待别人的判断,你要说服别人认可你的观点:如果你想要影响别人,你必须有能力说服他们。

对于软件工程师来说,他们所要知道的不仅仅是怎样去写出技惊四座的代码,更重要的是怎样推销他们的想法和产品。

作者做了举了一个说服他人的草根方法:

  1. 从整体上来说,他的观点是相当出色的
  2. 他做事方式是自下而上的,而不是自上而下的
  3. 他总是能够带头亲自去做事,以赢得别人的信任
  4. 他拥有足够的耐心去等待机会的到来

如果你一味地保持沉默,总是像局外人一样冷眼旁观,你就什么也改变不了。如果你想改变你的工作和生活,你必须学会说服别人。 对于某些人来说(比如我),就常常受困于此,我总结了一下原因,也算是后续的职业生涯需要加强的部分:

  1. 性格原因
  2. 不自信
  3. 准备不足

当然,打铁还需自身硬,最近我面试有一句话我印象特别深刻:公认的牛人应该是

  1. 自己得行:技术过硬
  2. 别人说你行:得到大家的认可
  3. 说你行的人也得行:得到业界的认可

真正失败的项目

不要害怕失败,也不要主动寻求失败,失败会自己找上门来。不管你在做什么项目,怀揣着学习和锻炼的态度去完成它,这绝对是值得的,与项目的结果相比,过程才是最大的财富。

如果你没能从一个项目的过程中学到一点东西,这才是真正失败的项目。 所以真正的工作中,项目做完要及时 Review,总结经验和教训,防止下次再踩坑,就算是失败的项目,也有大量的经验在其中。

激情造就天才

很喜欢的一句话:“我将会把剩下的5天的课程全都用于让他们变得更加聪明,而不是让他们明白我有多聪明”,不管是做培训还是写博客,要有这样的心态,你不是在炫耀自己多厉害,而是要让看博客或者参加培训的人学到知识,获得真的的成长。

千万不要被身边很多天赋比你高的开发者吓倒,勤能补拙,激情造就天才。

勿以专家自居

作者以维基百科为例,专家并没有更多的权限,在知识面前,人人平等。有时候反而因为你是专家,而对你的期望或者要求会更多。

古人云:三人行,则必有我师;闻道有先后,术业有专攻,如是而已;无他,唯手熟尔。

作为一名专家,重要的不是告诉别人你知道什么,而是要清楚你应该问什么样的问题,病区灵活运用你所掌握的知识去解决眼下的具体问题,作为专家,你的作用是提供明智的、可执行的方向。

最近面试也有提到专家的问题,作者在这里也介绍了几个阶段,大家可以对号入座一下,记得摒弃自己的领域、专业知识、名声和声誉,然后按照下面的阶段来进行重塑:

  1. 第 0 阶段:我克服了漫不经心
    我现在明白了,我需要学点东西
  2. 第 1 阶段:我克服了恐惧
    我觉得我可以学会这个科目或者技能,我会对它变得很了解,而不会惧怕比我懂得多的人。
  3. 第 2 阶段:我变得有条理
    我不再觉得自己不懂装懂或者不学无术,我觉得我有能力参与讨论或者实践,我对自己说的话很有信心
  4. 第 4 阶段:我超越了自身的能力
    我现在觉得对自己有了更高的要求,不再停留在“过得去”而沾沾自喜,我想冒一点风险,富有创造力,不断学习,不断推动自己进步,我想要与那些充满热情的人共事

行百里者半九十

本节主要讲的是项目管理相关的,包括个人项目管理和团队项目管理,如果你总是把 “快完成了” 挂在嘴边,那么你需要思考一下自己的项目管理是否有问题,作者建议:鼓励并强制要求程序员创建一张他们所要做的全部事情的列表,然后再为其中的每一项列出子项,并且尽可能把所有的子项都加进来

下面是具体可能的措施,把他用在项目里面吧

  1. 把你在一个大项目中需要做的事情全部罗列出来,包括哪些基础设施工作,比如配置源代码管理系统的分支
  2. 估计这个列表中每一项所要花费的时间,这这最初的估计可以帮助你看到真个项目大致的时间花费
  3. 看看你列表中的每一项要花费多少时间,如果有一项的时间超过一天,则把这项拆分成若干小项,这种将大任务拆分成小任务的方式是解决“只能完成 90%”问题的关键步骤
  4. 找出一种呈现任务状态的方式,以便那些感兴趣的人可以了解
  5. 追踪每天的任务进度,把每个小任务的原定计划和实际完成时间放在同一张表上,这样就可以对工作进度做一个把控。

管理中要有信任

信任可以解决大型软件管理的问题,但是信任无法代替管理,两者相辅相成。

博伊德迭代法则

博伊德迭代法则:迭代的速度胜过迭代的质量。也就是大家常说的,天下武功唯快不破。

十年磨一剑

Gmail 的成功之路是漫长的,很多人一开始并不看好他,但是在产品发布之后,用户的反馈反而很好。

一夜成名的传说容易让人误入歧途,并且遗毒不浅,如果你打算做一个全新的东西,要有打持久战的准备。

作者认为,成功需要付出多年的努力,你必须踏踏实实地在这件事上花费几年的时机去磨练,每天一醒来就开始工作,日复一日地坚持,不断取得反馈,每一天都比过去做的更好。即使你偶尔会不开心,甚至失去了乐趣,单这些都是为了获取成功所必须的。

作者同时也举了写博客的例子,日复一日的投入,作者花了3年,才让他的博客在行业有了一席之地。在目前这个浮躁的环境下,能静下心来,持续做知识输出的人,我相信一定会有好的结果,只要你相信:你正在做的事情是真正值得去做的


《程序员的修炼——从优秀到卓越》是《高效能程序员的修炼》的姊妹篇,包含了Coding Horror博客中的精华文章。全书分为8章,涵盖了时间管理、编程方法、Web设计、测试、用户需求、互联网、游戏编程以及技术阅读等方面的话题。作者选取的话题,无一不是程序员职业生涯中的痛点。很多文章在博客和网络上的点击率和回帖率居高不下—— from 豆瓣

Jeff Atwood于2004年创办Coding Horror博客(.codinghorror.),记录其在软件开发经历中的所思所想、点点滴滴。时至今日,该博客每天都有近10万人次的访问量,读者纷纷参与评论,各种观点与智慧在那里不断激情碰撞 —— from 豆瓣

《程序员的修炼——从优秀到卓越》的写作风格风趣幽默,且充满理解和关怀;适合从新手到老手的各个阶段的程序员阅读,也适合即将成为程序员的计算机和相关专业的学生阅读。《程序员的修炼——从优秀到卓越》能够帮助读者更多地关注技术工作的人性和人文因素,从而实现程序员职业生涯的成功转折 —— from 豆瓣

关于我 && 博客

下面是个人的介绍和相关的链接,期望与同行的各位多多交流,三人行,则必有我师!

  1. 博主个人介绍 :里面有个人的微信和微信群链接。
  2. 本博客内容导航 :个人博客内容的一个导航。
  3. 个人整理和搜集的优秀博客文章 - Android 性能优化必知必会 :欢迎大家自荐和推荐 (微信私聊即可)
  4. Android性能优化知识星球 : 欢迎加入,多谢支持~

一个人可以走的更快 , 一群人可以走的更远

微信扫一扫

❌