countryer

  博客园 :: 首页 :: 联系 :: 订阅 订阅 :: 管理
  3 Posts :: 0 Stories :: 0 Comments :: 0 Trackbacks

公告

2012年1月8日 #

第七部分  经营软件公司

1.仿生学办公室

强调优越的办公环境。

2.他山之石,不可攻玉

对你来说,最重要、最关键的部分,一定要使用最原始的工具(如果你有足够的时间和能力从底层开始开发的话);

要么保证你使用的工具是可靠的、可以信任的,要么就把这部门的源代码搞到(自己写,或使用提供源码的工具),这样一旦出了问题,你至少还有机会解决;

3.简化性

不要片面地追求简化性,而削减软件的重要功能。

4.揉一揉,搓一搓

当你想要重写你的基础代码时,考虑重构。

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

。。。。

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

1)出现问题时,要寻根朔源,找到问题出现的根本原因;

2)让用户进行一项看起来有些愚蠢的确认时,要委婉地说明,不然他们根本不会去做;

3)坦诚地承认错误;

 

第八部分  发布软件

1.挑选发布日期

1)如果你的客户人数比较少(你的软件是针对特定的客户的),那么最好经常性地发布小幅修改的新版本;

2)如果你已经有了大量的付费用户(你的软件是面向大众的),最好不要太频繁地发布新版本。

2.软件定价

篇幅太长了,现阶段自己对所做的系统也没什么定价的权力,所以先不看了。

 

第九部分   修订软件

1.五个为什么

遇到问题时,要刨根问底,找到问题出现的根本原因,然后制定相应的对策,确保以后不会再发生类似的问题;

一定要确保不会再次发生,否则前面做的工作都是白费;

让碰到的问题都成为“黑天鹅因素”。

2.确定优先级

1)软件开发前,首先确定发布时间,然后将所有功能进行优先级排序,当项目无法按时完成时,从后往前去掉不重要的功能;

2)不要为了极少数客户的要求而修改你的功能列表;

3)判断每个功能的成本,再为每个功能设置一个权重(你认为它在系统中的重要性),以权重/成本作为功能的优先级指数。

2)

posted @ 2012-01-08 23:29 countryer 阅读(20) 评论(0) 编辑

2012年1月7日 #

第四部分  管理大型项目

1.火星人的耳机

为了保证早期版本(IE5、6)的网页能够正常显示,IE8进行了大量的改动以保证兼容性。

2.为什么Microsoft Office的文件格式如此复杂

介绍了Office的Word、Excel文件的二进制格式,并建议:

1)使用Office内置的功能去完成文档的输出;

2)如果只是要生成在Excel中能打开的表格数据,考虑使用CSV格式;

3)Word文档可以考虑生成RTF文档。

3.要挣钱,就别怕脏

讲他如何卖软件赚钱的。

(到目前为止,感觉软件随想录这本书中的大部分内容都是Jole关于软件开发、人才培养、项目管理等不同方面的一些感想。看书的过程中,有时候感觉就是在看故事,倒并不一定要从中学到什么,或者学到的东西根本就不是作者原来要讲的东西,而只是自己灵光一闪的想法而已。)

 

第五部分  编程建议

1.循证式日程规划

1)不要忽视日程规划,不要因为觉得规划的日程不可能实现而放弃规划,或只是应付了事;

2)制定规划会迫使你清楚自己要做的东西,如果你没有想过这些东西,你制定的日程就没有实际意义了;

3)日程中的任务应该是较小的、能够快速完成的,而不是一个大的、复合的大功能;

4)追踪你的时间安排,比较每个任务的原定完成时间和实际完成时间,计算两者的比率,在估算最终完成时间的时候作为参照;

5)把编程以外的工作,包括一些不可避免的辅助性工作计算到任务的完成时间中,也包括修改问题的时间;

6)为新的功能设想、测试等工作留出足够的缓冲时间;

7)利用时间日程,倒逼自己去掉程序中不重要的功能;

2.关于战略问题的通信之六

关于软件的效率、功能和硬件限制的问题;

以Windows Office战胜Lotus的例子说明:如果你的产品受到硬件水平的影响而导致运行效率不够理想,不必担心,硬件自身的发展会帮助你解决问题;如果这个时候将大量的时间和人力投入到产品的优化上,可能当你新产品发布的时候你会发现,你的竞争对手受益于摩尔定律,他们产品运行效率上的问题已经解决了;而且他们在你做系统优化的时候,又添加了很多新的功能。

硬件限制的问题不是致命的问题,随着硬件性能的提升和价格的下降,这些问题会自然地得到解决;

还要考虑到软件寿命的问题:如果你的产品是不断更新发布的、需要慢慢积累用户的,那Jole的观点是适用的;但如果你的软件是服务于特定客户的,需要在规定时间内提交产品供其使用,那么软件运行效率优化还是十分重要的,毕竟你不能逼迫用户马上去采购性能先进但价格昂贵的硬件设施。

3.你的编程语言做得到吗

多接触几种开发语言和环境,可以拓展自己的视野,让你解决问题的思路更加灵活。

4.让错误的代码显而易见

1)写出优美代码的几个层次:

可以分清好的和糟糕的代码;

对好的代码有了初步的认识,但停留在是否符合规范的层次;

可以找到隐蔽的不干净的代码,发现表面之下的问题;

精心构建自己的代码,保持它们清晰易懂、不容易出错;

2)“寻找一种代码的书写规范,让错误的代码变得容易被看出。让代码中的相关信息在显示屏上集中在一起,使你能够当场发现和改正其中的错误。”

3)被误解的匈牙利命名法:不是要在变量、函数前添加i,s来表示它是int还是string;而是通过前缀来标识这个变量是行还是列(rw/col),是相对于屏幕(xw-x坐标相对于window)还是相对于页面(xl-相对于layout)。这样从名称上就可以看到这个变量/函数的意义,当xl和xw直接进行计算的时候,就会发现里面可能存在的逻辑错误。

简单来说,就是通过提高代码的可读性,使得错误更少、更容易发现。

 

第六部分  开发软件公司

1和2是jole为两本书写的前言:《Eric Sink on the Business of Software》和《Micro-ISV:From Vision to Reality》。

3.飙高音

好的程序员的作用:

优秀程序员的效率远远高于不好的程序员,开发效率相差十倍;

而不好的程序员永远都做不出优秀程序员开发出的产品,所以单纯增加人手的方法是无法得到好的产品的;

就像一堆飙不了高音的歌唱演员放在一起,音高也打不到F6(女高音的最高音)。

 

posted @ 2012-01-07 14:31 countryer 阅读(82) 评论(0) 编辑

2012年1月4日 #

观点摘录:

第一部分  人员管理

1.我的第一次BiilG审查

1)应对一项审查时,一定要进行细致的准备工作,你需要考虑到所有(至少是大部分)可能遇到的问题和细节;

2)你的审查者不是来评论你写的东西的,他只是想确定你对实现那些目标是不是有把握。他会拷问你各个细节,直到你答不上来为止。

2.寻找优秀的程序员

1)优秀的程序员要去一些专业性的求职网站/论坛/社区去找,他们不会出现在大型的求职论坛,在那里连可靠的、称职的程序员都很少;

2)在他们还是学生的时候就开始进行准备,吸引优秀的实习生来公司工作;

3)谨慎使用员工推荐的方式。

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

1)优越的硬件条件;

2)好的工作环境,简单的人际关系,不要有怪人、办公室政治,尊重他们;

3)让从事的工作看起来更有趣、有意义;

4.三种管理方法

1)军事化管理法:简单粗暴的、指令式的管理;

缺点:

没有人愿意被管;

管理者无法对每一个细节做出决定;

在微观层面,只有负责干活的程序员才是最了解问题的,他们是做出决策的最佳人选;

2)经济利益驱动法:用经济利益进行外部激励;

缺点:

外部激励是一种弱得多的激励;

聪明的人总是想法设法钻规则的漏洞,使自己的利益最大化,这会使事情发展的路线偏离规则设计者的初衷;

谨慎使用经济利益驱动,管理需要制度,制度应当由管理层制定,而不是简单地用多发钱的方式训练他们;

避免使用外部刺激代替内部刺激。

人们会想法设法使

3)认同法:让程序员认同你的目标;

设法创造出内部激励,做起来比较困难,但效果较好。

 

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

1. 不要仅仅满足于学习Java/C#等高级语言,学习一下C语言等比较接近于机器的语言;

2. 大量实践。

(这部分都是在告诉美国的计算机系大学生,在大学学习期间应该注意的问题;对于一个中国非计算机专业的毕业生而言,意义不大。)

 

第三部分  设计的作用

1.字体平滑、反锯齿和次像素渲染

1)苹果:字体算法尽量保持原始的设计,即使有损屏幕显示的清晰性;

2)微软:字体的形状要适应像素的限制,要保证屏幕显示清晰,即使字体的形状因此而背离原始设计。

2.寸土必争

不要忽视细节,仔细地打磨你的作品。

3.大构想的陷阱

1)小心陷阱:当你对系统有了一个整体性的认识,感觉所有的东西看起来都是清晰无比的,然后就准备开始工作了,这时你就很可能陷入了一个大构想的陷阱;

2)详细设计:对系统有了整体的设想之后,要对它的细节进行分析和设计,不妨写一个详细的设计说明书,逼迫自己去思考一些较为细节的内容(当然,也不要过度设计);

3)让你的程序中的对象和真实世界中的对象看上去很像,包括它的行为都很像,这样你的程序会让人容易理解,这对于程序设计是很重要的原则。

4)推荐图书:梦断代码(Dreaming in Code)

4.别给用户太多的选择

1)Vista糟糕的用户体验:15种关机方式;

2)过多的选择会让用户困惑,提供简单、一致的操作入口;

3)程序员往往希望方方面面都照顾到,因此为用户提供了过多的选择。

5.易用性是不够的

没看明白,也不知道“社会化界面”的含义。

6.用软件搭建社区

貌似在讲他自己的社区设计。

 

 

 

 

 

posted @ 2012-01-04 22:57 countryer 阅读(24) 评论(0) 编辑