《》黑客和画家

666

5星推荐,虽然名字是黑客与画家,但主要说了自己作为黑客的一名思考。会用坐在电脑前敲代码的只能叫程序员罢了。黑客还应当兼有诸多品质,善于思考。发上来才看到右上角有个turing,图灵社区的图书都很好的,阮一峰也不错哈哈

         如果你想要清晰地思考,就必须远离人群。但是走得越远,你的处境就会越困难,受到的阻力也会越大,因为你没有迎合社会习俗,而是一步步地与它背道而驰。小时候,每个人都会鼓励你不断成长,变成个心智成熟、不再耍小孩子脾气的人。但是,很少有人鼓励你继续成长,变成一个怀疑和抵制社会错误潮流的人。如果自己就是潮水的一部分,怎么能看见潮流的方向呢?你只能永远保持质疑问自己,什么话是我不能说的?为什么?

但想象如果不和别人打成一伙,你也会失去很多朋友带给你的快乐。

         你有没有注意过,坐下来写东西的时候,一半的构思是写作时产生的?软件也是这样。实现某个构思,会带来更多的构思。所以,将一个构思束之高阁,不仅意味着延迟它的实现,还意味着延迟所有在实现过程中激发的构思。事实上,将一个构思束之高阁,甚至会限制新构思的产生。因为你看眼堆放在一边、还没有实现的构思,就会想“我已经为下一个版本准备了很多新东西要实现了”,你就懒得再思考更多的新功能了。

        大公司的做法不是立刻实现新功能而是先对新功能做一个计划。我们在Viaweb就是因为这个原因而遇到了麻烦。投资者和分析家会问,你们对未来有何计划。真实的回答是,我们没有任何计划。我们有改进的想法,但是如果我们想到应该怎么改进,就已经把它实现了。接下来六个月我们要做什么?所有能想到的最佳改进。我不知道自己是否有胆量公开这么说,但这是实话。计划这个词,只是将构思束之高阁的另一种表达方式。只要想到好的构思,我们就立刻着手实现。

是的,我现在开始觉得不做笔记,可能没什么用。闪光的想法虽然这几天一直都在脑海里盘旋,但过了一两个星期,早忘得干干净净,不记下来,以后要用就用不到了。

         为了做出优秀的设计,你必须贴近用户,始终寸步不离,永远站在用户的角度调整自己的构想。19世纪英国作家简·奥斯汀的小说为何如此出色?一个原因就是她把自己的作品大声读给家人听,所以她就不会陷入孤芳自赏难以自拔的境地,不会长篇累牍地赞叹自然风光,也不会滔滔不绝地宣扬自己的人生哲学。(事实上,简·奥斯汀还是在小说里宣扬了自己的人生哲学,不过她把它编进故事之中,而不是直接像贴标签那样讲出来。)你可以随便找一本平庸的“文学”读物,想象一下把它当作自己的作品读给朋友们听,这样会让你真切地感受到那些“文学”读物高高在上的视角,读者必须承受所有沉重的负担才能阅读这些作品。

简奥斯丁简直女神啊,哪儿都能看到他。最近看到本《笔误:文学家八卦》。那些讲文学家的书总是不会错过简奥斯丁。还有本《耶鲁文学小史》。

         设计和科研,前者追求“好”(good),后者追求“新”(new)。优秀的设计不一定很“新”,但必须是“好”的;优秀的研究不一定很“好”,但必须是“新”的。我认为这两条道路最后会发生交叉:只有应用“新”的创意和理论,才会诞生超越前人的最佳设计;只有解决那些值得解决的难题(也就是“好”的难题),才会诞生最佳研究。所以,最终来说设计和研究都通向同一个地方,只是前进的路线不同罢了。

         如果把创造一种编程语言看成是设计问题,而不是科研方向,那么有何不同?最大的不同在于你会更多地考虑用户。设计的时候,一开始总是问:我为谁设计?他们需要什么?比如,优秀的建筑师不会先设计,然后强迫用户接受,而是先研究最终用户的需求,然后做出用户需要的设计。注意,我说的是“用户需要的设计”,而不是“用户要求的设计”。我不想让读者产生一种印象,认为设计师就像厨师一样,顾客点什么菜就一模一样做出来。艺术的各个领域有着巨大的差别,但是我觉得任何个领域的最佳作品都不可能由对用户言听计从。

        有一句话说“顾客永远是对的”,这是指评价优秀设计的标准是看它能够多大程度上满足用户的需求。如果你的小说没人爱看,或者你做的椅子极不舒服,那么就说你的作品失败了,被一票否决了。就算你的小说(或者椅子)有着最先进的理论指导也无济于事。

         可是,让用户满意并不等于迎合用户的一切要求。用户不了解所有可能的选择,也经常弄错自己真正想要的东西。做一个好的设计师就像做一个好医生一样。你不能头痛医头,脚痛医脚。病人告诉你症状,你必须找出他生病的真正原因,然后针对病因进行治疗大多数优秀设计都是这样产生的,它们关注用户,并且以用户为中心。我说设计必须考虑用户的需求,这里的“用户”并不是指所有普罗大众。事实上,你可以选择任何想要的目标用户。比如,假定你正在设计一种工具,你可以把目标用户定为初学者,也可以定为专家级用户。一种人眼里的优秀设计可能在另一种人眼里却是糟糕无比。这里的重点是你必须选出某些人作为你的目标用户。我觉得,除非设定目标用户,否则一种设计的好坏根本无从谈起。

        如果目标用户群体涵盖了设计师本人,那么最有可能诞生优秀设计。如果目标用户与你本人差别很大,你往往会假定目标用户的需求比你本人的需求更简单,而不是更复杂。低估用户(即使出于善意)一般来说总是会让设计师出错。我怀疑那些设计“公共住宅项目①”( housing project)的建筑师根本没想过自己住在里面会是什么感觉。编程语言也有这种现象。C、Lisp和 Smalltalk都是设计者为了自己使用而设计的,而Cobo、Ada和Java则是为了给别人使用而设计的。

对啊,要是设计师自己也得沉浸在自己设计的产品中。就比如写同人小说那样。

Leave a Reply