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