《黑客与画家》读书笔记一
黑客三要素:好玩、高智商、探索精神。hack。
有一份为了赚钱的工作,还有一份为了爱好的工作。然后在其余时间开发优美的软件。
每一幅画所用的技巧,都是建立在上一幅作品学到的东西之上。这一点同编程非常相似。
创作者另一个学习的途径是通过范例。对画家来说,博物馆就是美术技巧的图书馆。同样,黑客可以通过观看优秀的程序学会编程。
开源运动最鲜为人知的优点之一,就是使得学习编程变得更容易了。
一幅画是逐步完成的。通常一开始是一张草图,然后逐步填入细节。这一点跟编程也很相似,就是伪代码。
在你厌倦的时候再去做那些比较容易的工作,这是一个不错的主意。
消灭bug的过程就像解一道数学题。你的程序应该产生x结果,但是却产生了y结果。哪里出错了?
当多个画家共同创作一幅作品时,每个人画的部分都是不一样的。通常来说,大师负责画主要人物,助手们负责画次要人物和背景。所以合作,应当将
项目分割成严格定义的模块,每一个模块由一个人明确负责。模块与模块之间的接口经过精心设计。
软件的部分功能就是解释自身。别指望用户去读使用手册。
源代码也应该自己解释自己。记住一句话:程序写出来是给人看的,附带能在机器上运行。
讨论一个观点会产生更多的观点,不讨论就什么观点也没有。
隐喻和幽默都是反击的好方法。
如果我们不可以研究当前的技术,不能思考如何改进它,那么我们怎么才能开发出新技术呢?
黑客的所作所为完全出于兴趣,想到哪里就做到哪里,只求开心。
汽车诞生的头二三十年,你想当车主,非得成为汽车专家不可。计算机也是如此,一旦拥有了桌面电脑,你就被迫学习很多东西,了解
它的内部运作机制。
互联网软件运行在服务器上,用户界面就是网页。对于普通用户来说,使用这种新型软件将更容易、更便宜、更可靠,通常也比桌面软件更强大。
比如,hotmail、weibo、facebook等。
设计桌面软件就像设计一幢大楼,而设计互联网软件就像设计一座城市:你不仅需要设计建筑物,还要设计道路、路标等。
对于互联网软件,没人规定只能使用某种语言开发,因为所有的硬件都控制在你的手里,你想要用什么语言,就能用什么语言。
对于桌面软件来说,发布新版本是一个很痛苦的过程,整个公司不得不使尽全力,满头大汗地挤出一大块巨型代码。从过程和结果来看,无异于一次分娩。
互联网软件则完全不同,就像你写给自己用的程序一样,修改起来很方便。软件的发布过程可以分解为一系列的渐进式修改,而不是猛地推出一个大幅变动的版本。
互联网软件每时每刻都在被使用。你的代码一上线,就会经历严酷考验。bug很快就会浮出水面。
解决新代码的bug要比解决历史遗留代码的bug容易。在自己刚刚写好的代码中,找出bug往往会比较快。
如果软件经常性发布,每次只有小幅度的变化,那么就不容易产生复合式bug。
再现错误、解决问题、发布新版本。
待解决问题清单。
没错,你是对的,这是一个bug。
向一个项目增加人手,往往会拖慢项目进程。随着参与人数的增加,人与人之间需要的沟通程指数增长。
人数越多,开会讨论各个部分如何协同工作所需的时间就越来越长,无法预见的互相影响越来越大。人少,步行在吃午饭的路上,我们
就能把该说的话说完。
效率对互联网软件至关重要,因为硬件费用由你支付。
关注用户不仅有助于优化程序,还有助于指导你的设计。
如果你写过互联网软件,你会发现“后退”按钮是设计中最费脑筋的问题之一,很有意思。
收取软件的订阅费,比让用户购买软件的所有权,操作起来更自然、更简便。
互联网软件不会有坏账的烦恼,如果谁不付钱,你就停止对他的服务。