`
wdhdmx
  • 浏览: 304421 次
  • 性别: Icon_minigender_1
  • 来自: 山西
博客专栏
D4bbb5f7-9aa4-3e66-8194-f61b3f0241c2
天天编程
浏览量:21969
社区版块
存档分类
最新评论

《软件随想录》读书笔记

阅读更多

 

这本书写的很好,值得收藏,有很多惊喜的观念 ,也改变了我很多观念。

同时也觉得作者有一些夸张,煽动性比较强。所以看书也要保留自己的想法。

 

第一部分 人员管理

1 我的第一次BillG审查

我在大约24小时前交给他的规格说明书,他在几乎每一页 (大概500页) 都加了评语。

 

比尔的最后一个问题:”你能保证所有的日期函数都一样么?”。
我说:“是的,只有1900年的1月和2月除外“。
比尔:行了,好,做的不错。”


比尔对技术的了解令人惊叹,他理解可变数据,COM对象,Automation与虚表的不同。他信任那个干事的人,就不会干涉软件,但是你不能糊弄他,哪怕是一分钟。那年比尔36岁。


不懂编程的人管理软件公司,就好像不懂冲浪的人硬要去冲浪。


我在1994年离开微软,我觉得比尔已经彻底将我忘了。

 

2 寻找优秀的程序员

和所有行业一样,优秀的程序员是不会出现在招聘市场上。


公司完蛋的另一个可能的原因是,既然雇佣了一个不合格的程序员,就可能雇佣一大堆不合格的程序员,累积起来就导致了最终的失败。


优秀的程序员是那么优秀,未来的雇主通常会一眼看出他们的优秀。


我的目的是着手建立与下一代优秀程序员的联系,管道长达6年,没关系,我有长远眼光。


不推荐使用员工推荐,这样推荐不来优秀的明星程序员。

 

3 寻找优秀的程序员之实战指南

《人件》是一本伟大的书,想让程序员高效的工作,那么必须给予他们安静和宽敞的工作环境。


带上耳机隔绝噪音被证明会降低程序员的工作质量。


要是你们所有人还是坚持老一套的做法,随你们便,我就让这一点成为我的竞争优势好了。


没有理由不给程序员配备顶级电脑。至少两块大(21寸-30寸)液晶屏幕,自由在(amazon)订阅他们想看的书。


程序员希望之所以被雇佣,是因为自己的技能,希望被比人当做专家那样对待,有全力在自己的专业领域中做出决定。


当一个程序员抱怨“人际关系复杂”时,晋升的原因不是成果,而是人际关系。不能使用最合适的编程语言,被迫做技术落后的东西。


为了留住程序员,银行执行两个策略:给程序员发一吨钞票,给程序员完全自由,允许使用想学的热门技术,一遍一遍的重写每件东西。

 

4 三种管理方法

军事化管理法,经济利益驱动法,认同法

 

5 军事化管理法

士兵应该害怕他们的长官,甚于害怕任何他们将要面对的危险。亲密永远不会让普通士兵面对危险时挺身而出,只有恐惧才会让他这么做。
老板通常获得的信息最少。
用这个方法,最后只能成为光杆司令。

 

6 经济利润驱动法

用这个方法,会牺牲产品质量,功能,效率。而且最后得不到好的产品。

 

7 认同法

我非常喜欢的做法是大家坐在一起吃饭。


我对员工说,我明年打算再雇佣6个人,如果6.0不早点退出,那么费用就是很大的问题。于是通过分享信息,员工知道了怎么取舍6.0的上市时间,他们会做出最有利于公司的决定


认同法就是创造一个有凝聚力,像胶水粘在一起的团队,人们就产生了忠诚感和义务感,同时还要提供必要信息,是公司向正确的方向前进。

 

第二部分 写给未来程序员的建议

8 学校只教java的危险性

我从来没有见过那个能用C语言中的指针编程的人,竟然不能在两天里面学会java语言,并且写出的java程序的质量竟然不能胜过那些有5年java编程经验的人士。


计算机科学是由证明,算法,语言,操作系统,编译器 所组成的。

 

9 在耶鲁大学的演讲

一个好看的软件比难看的软件销量要好


如果你在facebook上班,那么你可以花一个月的时间优化人名选择部分的ajax效果,使它变得快速美观,这种付出是值得的,这使你的产品比竞争者优秀。

 

10 给计算机系学生的建议

大多数学生都自已为是,不向前辈请教,幸运的是,这样做是很可能是对的。


把C语言学好,微观经济学学好,选择大量编程实践的课程。

 

别忘了,我们是耶鲁大学,我们的使命是培养未来的世界领袖。你交了16万美元的学费,却在学循环语句的写法,这怎么可以?你以为这是什么地方,难道是机场沿途的酒店里临时拼凑起来不靠谱的Java语言培训班?


CS323课程(编程实践多)有一个最大的优点,那就是它让许多人明白了原来自己不是编程的那块料,永远也成不了程序员。

第三部分 设计的作用

11 字体平滑,反锯齿和次像素渲染

12 寸土必争

一个闹钟我都需要摆弄半天才弄清楚如何关掉它,失败的产品。


每天进步一小步,将东西做的比昨天好一点点。你最后拿出来的是一件真正优秀的产品。它的第一眼就让人觉得震撼。

 

13 大构想的陷阱

看东西的时候,你的视力只是在视野中很小的一块区域的高分辨率,眼睛能快速移动,并且神经将移动过程完全抽象掉了。 神奇~~
一个团队一起设计 软件是非常困难的事情


架构太空人,将事物抽象到太空的高度,那里没有氧气,已经失去了使用价值。

 

14 别给用户太多选择

15 易用性是不够的

避开攻击的方法之一就是让它看上去好像获得了成功。这是装死展示在软件中的表现。


让自己喜欢用自己的产品。

 

16 用软件搭建社区

让浏览器记录你看过那些帖子,只要主题中有人回复,那么对URL进行小小的重构。


没有护栏的盘山公路更安全。

 

第四部分 管理大型项目

17 火星人的耳机

18 为什么MIcrosoft office 的文件格式如此复杂

19 要挣钱,就别怕脏

这一部分收获很少。接口(耳机插口的设计和兼容),历史遗留问题(早期电脑存储能力极其低下),做一些麻烦事来赚钱(发布跨平台版本,WEB版本)

第五部分 编程建议

20 循证式日程规划

强迫自己先完成最重要的功能。

 

21 关于战略问题的通信

有一些程序员将大量的经历投入优化工作,将程序变得更紧凑、更快速。但某一天发现自己是白忙异常,因为CPU,带宽等等发展的太快了,这种努力“不会带来长期的竞争优势 “。


从长远的观点来看,那些不关心效率,是否臃肿,一个劲的加入高级功能的程序员最后总将拥有更好的产品。

 

取代Ajax的想法。

 

22 你的编程语言能做到吗

如果不懂函数式编程,你就无法创造出MapReduce,来自lisp函数式编程。

 

23 让错误代码显而易见

程序员的四种境界:
I。分不清什么是干净的代码,什么是不干净的代码。
II。对干净代码有一个肤浅的认识,只能看他们是不是符合代码书写规范。
III。开始找隐秘的不干净代码。
IV。精心构建代码,写出清晰易懂,不容易出错的代码。


所有的输入都是不安全的,都必须编码才可以输出。


改善代码的方法:函数写的简短,声明的位置离使用的地方近一点。不用宏创建自己的编程语言,不用goto,括号不要超过一个屏幕。


寻找一种代码的书写规范,让错误的代码容易被看出,让代码中的相关信息在显示屏上集中在一起,让你能够当场发现和改正。(例: nameStirng,一看就知道是字符串。)

 

异常处理的难度实在太大,我的智商不足以用好他们。

 

第六部分 开办软件公司

24 Eric Sink on the Bussiness of Software 的前言

你亲身经历新生意的慢慢成长,你会感到一种难以置信的激动。

 

25 Micro-ISV:From Vision to Reality 的前言

不要一个人创办公司,没有方向不要去开公司,一开始不要抱太高期望。

 

26 飙高音

最好的工作条件——最好的程序员——最好的软件——利润


优秀程序员不仅仅是生产率高10倍,而是普通程序员永远都唱不了高音。

 

第七部分 经营软件公司

27 仿生学办公室

我们正式搬到了纽约第八大道,这里我们开始寻找办公场所已经过去10个月了,在这之前,我们就在卧室和后花园里办公。


良好的办公环境——尤其是单独的办公室——能够提高程序员的生产率。


办公室需要可以关上门,有许多电源接口,不要在地板上拖电线,接各种数据线(电话,网线,电视线),可以结对编程,可以看到远方,可以聚餐。


让程序员吧办公室当家,需要办公室比家更舒适。


这是我远离朋友和家人的地方,我会长年累月的呆着这里,所以办公室必须好


办公室月租金分摊到每个人头上,大约人均700美元,但这样能更容易的找到优秀的程序员。


这一章以后再看一遍(220-223)

 

28 他山之石,不可攻玉

如果你没有源代码,就不能解决第三方应用带来的问题。


在没有开源的情况下,尽量用原始的工具,重要的内容还是自己写,这样出问题后还能解决。


开放源码,但照样收费。

 

29 简化性

如果推出新版本,其中包含新功能,我们就会看到公司的收入出现了迅猛的、确凿的、重大的、持续性的增长。


一种故意减少功能的产品是没有前途的。

 

30 揉一揉,搓一搓

程序员在创业的时候,通常有一个坏习惯,认为其他人都是与他一样的人,有和他一样的需求,或者一样的点子。


我不想推到重来,我用了生命中的3个星期,彻底把代码整理一遍:
    不添加新功能。
    无论何时向代码库提交,程序都能完善运行。
    所坐的就是逻辑的交换,都是机械性的,不会改变代码。

 

31 组织beta测试的十二个最高秘诀

开放测试得到的反馈结果几乎没用。


报名测试的人只有五分之一的人向你反馈。

 

32 建立优质客户服务的七个步骤

问题只解决一次。


客户键盘没插好,客服应该说:有时候键盘接口会有灰尘,导致接触不良。吹一吹灰尘。


衬衫因为我的失误,不合适,衬衫公司免费的换了一批,我想我以后都会在他们那定制衬衫。


当客户打来电话,这是一个千载难逢的机会,一个可以培养出死心塌地的忠实客户的机会 。如果你做的好,客户逢人就说你的服务那么出色。


在客户面前,你是一个木偶,公司的木偶,顾客是对木偶发脾气,不是对你。


我们的顾客脾气好,原因是我们的退货政策慷慨的离谱,“如果你使用我们的产品,不觉得异常欣喜,我们就不要你的钱。


对客户服务人员,公司出钱让他们攻读克伦比亚大学管理的硕士学位,所以我们得到了有抱负,聪明的技术人才,所以他们创造的价值也会多得多。

 

第八部分 发布软件

33 挑选发布日期

确定发布日期,将功能按优先顺序排序,当落后预期进程时,将排在后面的功能砍掉。如果这样做,你会发现你砍掉的功能不会让你感到后悔,如果他们确实重要,那么在下一个版本中加进去就行。


如果你要写一篇750字的杰作,你可以先写出1500字,然后再编辑。


如果顾客人数较少,你最好经常性的发布小幅修改的新版本。
如果你已经有了大量的用户,那么你最好不要频繁地发布新版本。
如果是几百万用户和几百万个整合点的软件系统,最好偶尔才发布新版本。


在2.0版本之前,避免做大规模的宣传,2.0版本才是那个我们想要让地球上每个人留下第一印象的版本。

 

34 软件定价

分断定价:专业版,学生版,高级版

第九部分 修订软件

35 五个为什么

当某个地方出错的时候,你就问为什么,一遍遍的追问,直到你找到根本性的原因为止


为服务稳定性设置一个静态值作为目标,那毫无意义。我们真正需要的是不断改进工作质量的流程,我们实时记录每一次服务中断,提供完整的事后分析,找到根本原因。

 

36 确定优先顺序

事实上,你听命于大客户的实际效果,只是让销售人员指挥开发人员,达到他们个人销售佣金最大化的目标。


你想把事情做完,无论何时,你一定要想清楚什么是眼下最重要的、必须马上做好的事情。如果你不做这件事,你就不能以最快的速度取得进展。


被收拾得干干净净的办公桌可能是一个信号,表明你的工作效率不高。


我一直蠢透了,长久以来,我觉得某件事是摆脱不掉的,我就想不如现在就把它做完。例如:买蓝色文件夹。


不要因为“反正迟早要做”,而去开发那些不重要的有趣味性的功能。


将功能定价,然后限定总价,选出值得做的功能。



分享到:
评论

相关推荐

    代码随想录+刷题笔记记录

    本文主要介绍代码随想录的刷题笔记记录,方便读者更好地利用该网站进行学习。 ## 刷题笔记记录的作用 刷题笔记记录是代码随想录提供的一个功能,用于记录用户在刷题过程中的解题思路和方法。它可以帮助用户更好地...

    软件随想录 软件随想录

    《软件随想录》是一本深入探讨软件开发与管理的经典著作,它涵盖了软件工程的多个重要方面,旨在为读者提供对软件行业的深度洞察。作者通过一系列的随笔和思考,揭示了软件开发过程中的关键问题、挑战以及解决之道。...

    软件随想录全集

    《软件随想录》是计算机科学领域的一部经典著作,由知名程序员、软件工程专家、敏捷开发倡导者Martin Fowler所著。这本书集合了他对软件开发的深入思考与实践经验,涵盖了软件设计、项目管理、团队协作等多个方面。...

    软件随想录扫描版

    软件随想录_扫描版_5.79M

    软件随想录.pdf

    根据标题和描述,我们可以假设“软件随想录.pdf”是一本关于软件的个人收集电子书。该描述还提到该电子书只能用于学习目的,并且不能用于商业用途,这提示我们版权和知识产权是软件行业中非常重要的方面。 由于实际...

    软件随想录+程序员必读pdf

    《软件随想录》是许多程序员和IT从业者都推崇的一本书,它深入探讨了软件开发过程中的各种问题,包括团队协作、项目管理、代码质量、技术债务等关键议题。这本书结合作者的经验,提供了许多实用的建议,旨在帮助...

    计算机教育_软件随想录_给计算机专业学子的建议知识.pdf

    在计算机教育领域,尤其对于计算机专业的学生,提升个人能力至关重要。Joel Spolsky的建议主要聚焦于两个关键方面:软实力的培养和基础技术的扎实掌握。软实力,特别是良好的沟通能力,对于任何行业的成功都起着决定...

    软件随想录(中英文)

    《软件随想录》是一本深受程序员喜爱的书籍,它主要涵盖了程序员的成长历程、编程理念、软件开发实践以及行业洞见等多个方面的内容。这本书通过作者的个人经验分享,旨在帮助读者提升编程技能,理解软件开发的本质,...

    软件随想录

    《软件随想录》是一本深入探讨软件开发与行业洞见的书籍,它汇集了作者在软件工程领域的诸多思考和经验总结。通过阅读这个压缩包内的文件,我们可以探索到一系列关于软件开发的重要知识点,涵盖了软件设计、编程哲学...

    软件随想录:程序员部落酋长Joel谈软件

    通过阅读《软件随想录》,读者不仅可以获得关于软件开发的实际建议,还能深入了解软件行业的文化和精神。Joel Spolsky的真知灼见为所有与软件相关的人提供了一种全新的思考方式,帮助他们在职业生涯中取得更大的成就...

    《代码随想录》最新PDF全集整理发布

    内容概要:这是关于作者针对自己的代码学习笔记《代码随想录》,进行两年后的全面更新与汇总的一则公告。新的PDF版本整合了所有最新内容,并修复和完善了一系列题目解释。尽管如此,作者仍推荐优先在网站上阅读以...

    软件随想录(英文版) - More Joel on Software

    通过上述内容,我们可以看出《软件随想录》不仅涵盖了软件开发过程中的技术细节,还关注到了团队协作和个人成长等多个维度。这对于希望深入了解软件工程领域的专业人士来说,无疑是一本非常宝贵且全面的指南。

    2015-04_P292 软件随想录.pdf

    2015-04_P292 软件随想录.pdf 1

    代码随想录知识算法讲解PDF

    代码随想录贪心算法知识,非常管用

    代码随想录算法PDF.zip

    《代码随想录》是一本深受程序员喜爱的算法学习书籍,其PDF版本为读者提供了方便的电子阅读体验。这本书主要针对准备参加编程面试或者想要提升自己算法能力的开发者,通过实例解析和实战演练,帮助读者深入理解算法...

    代码随想录算法PDF.rar

    《代码随想录》是一本深受程序员喜爱的算法学习书籍,尤其对于初学者来说,它提供了深入浅出的讲解和实战演练。...通过阅读和实践书中的例子,读者将能够更好地应对各种算法挑战,为今后的软件开发工作打下坚实的基础。

    代码随想录的pdf版本,需要准备秋招的小伙伴们看过来呀!

    通过阅读《代码随想录》的PDF版,你可以随时随地学习这些内容,不受地点限制。然而,要注意版权问题,尊重作者的劳动成果,合法合规地使用电子资源。同时,实践是检验真理的唯一标准,理论学习之余,动手编写代码,...

    joel 软件随想录

    软件大牛再出新书。相信第一本joel说软件 你也看了 想必收获不少 这本也不能错过

Global site tag (gtag.js) - Google Analytics