软件随想录-读书笔记
人员管理
- 优秀程序员不会在招聘市场找工作。
- 招聘优秀程序员:走出去(论坛、会议寻找优秀程序员)、实习生、建立社区。
- 私人办公室、工作环境、玩具(显示屏?)、社交生活(如何被对待、同事、独立自主、不搞政治)、新奇的技术
- 军事化、经济利益、认同法管理方法
写给未来程序员的建议
- 练好写作
- 学好C语言
- 学好微观经济学
- 不要因为枯燥就不选修非计算机专业的课程
- 选修有大量编程实践的课程
- 别担心所有工作被印度人抢走??
- 找好一份好的暑期实习工作
- 寻找专业人士的帮助,培养自信心
设计的作用
- 如果你问人们喜欢什么样的风格和设计,除非这些人受过专门训练,否则他们一般会选择自己最熟悉的品种。大多数人根本不知道应该怎么选择,他们只好选一个自己最熟悉的答案。
- 商业软件-就是一种寸土必争的游戏。”创造一个有使用价值的软件,你必须时时刻刻都在奋斗,每一次的修补,每一个功能,每一处小小的改进,你都在奋斗,目的是为了再多创造一点空间,可以再多吸引一个用户加入。没有捷径可走。你需要一点运气,但是这不取决于你是否幸运。你之所以会有好运气,那是因为你寸土必争”
- 为了发现可以改进的地方,你必须有一个思维定势,始终如一地用批判的眼光看世界。
- 世界上只有一件事比你自己设计软件更困难,那就是一个团队一起设计软件。(深有体会)
- 别给用户太多选择,选择太多反而不好用。
- 易用性是不够的,如果一个应用程序具备确实非常重要的功能,而且用户真地非常需要这个功能,那么即使这个程序难用得令人感到可悲,它仍然会大受欢迎。反过来说,有一个应用程序,被做成是世界上最容易使用的东西,但是如果它对任何人毫无用处,那么它照样会完蛋。
- 社会化软件、社会化界面。不要禁止伟哥广告,而是让这个广告没被人看到。装死,让发广告的人觉得已经成功了,但是只有自己能够看到广告。你可以发,但是别人看不到。
管理大型项目
- 要挣钱,就别怕脏。如果你为了”麻烦事”找到了解决办法,市场就会向你支付报酬。轻而易举的事情是拿不到钱的。
- 许许多多的创业公司所有的产品并不解决任何“麻烦事”,别人很容易做出复制品。这类公司中相当一部分,给人的感觉就是不实和空洞,因为他们没有解决实际中迫切需要解决的任何困难问题。只有等到他们解决了困难问题,他们对用户才是有用的。用户只会向解决困难问题的公司付钱。
- 如果你想保持增长,不管是个人,还是公司,那么唯一的方法就是扩张自己擅长处理的业务边界。
- 每当你新解决了一件“麻烦事”,你的业务和市场都会有巨大的增长。
编程建议
循证式日程规划(分解时间、追踪时间用途、模拟未来情况、不要有强迫症、积极管理你的项目、范围渐变)
只有第一线的程序员才能提出完成日期的估计值。一发现错误就立即修正,将用时算入原始任务用时之中。防止管理层向程序员施加压力,要求加快开发速度。一份日程规划就是一个装满木块的盒子。
改善代码的质量规则:
(1) 尽量将函数写得简短
(2)变量声明的位置离使用的位置越近越好
(3)不要使用宏去创建你自己的编程语言
(4)不要使用goto
(5)不要让右括号与对应的左括号之间的距离超过一个显示屏
匈牙利命名法(应用型命名法)
开办软件公司
- 如果你不清楚你的软件解决了什么棘手问题,就不要去开软件公司。
- 不要独自一人创办公司。
- 一开始不要抱太高期望。
- 最好的工作条件–>最好的程序员–>最好的软件–>利润
经营软件公司
- 仿生学办公室,程序员真正以办公室为家的程度。
- 他山之石,不可以攻玉。对你最重要、最关键的部分,你一定要使用更原始的工具。一旦我认识到这一点,我就决定不再信任任何其他人写出的糟糕的应用服务器,而要自己重新用C++和Netscape Server的底层API写一个。因为我想通了,这样的话,假设某个地方出错了,那就是我自己的代码出错了,我能加以处理,并且最终解决问题。
- 代码重构:(1)不添加任何新功能。(2)无论何时向源码库提交代码,都要保证程序依旧能够完美地运行。(3)我所要做的只是一些合乎逻辑的变换,几乎都是机械性的,而且能够立刻确定不会改变代码行为。
- 组织bata测试的二十个最高秘诀:(1)开放式的beta测试是没用的。(2)要想找到那些能够向你反馈意见的测试者,最好的方法是诉诸他们“言行一致”的心理。(3)不要妄想一次完整的Bata测试的所有步骤能够少于8~10周的时间内完成。(4)不要妄想在测试中发布新的软件版本的频率能够快于每两周一次。(5)一次bate测试中计划发布版本不要少于4个。(6)如果在测试过程中你为软件添加了一个功能,那么哪怕这个功能非常微小,整个8个星期的测试也要回到起点。(7)即使你有一个申请参加bate测试的步骤,最后也只有五分之一的测试者会向你提交反馈意见。(8)我们制定了一条政策,所有向我们提交反馈意见的测试都将免费获赠一份正版软件授权。- (9)你需要的严肃测试者的最小数量大约是100人左右。(10)批准的数量小于1500份的话,不会得到充分反馈意见,多于就会被反馈意见淹没。(11)大多数beta测试的参与者只是在第一次拿到这个程序的时候才会去试用一下,然后失去兴趣。(12)不要混淆技术bate和市场bate。
发布软件
- 确定发布日期、列出软件要实现的功能,然后按照优先顺序排列。落后于预定进程时,把排在最后的功能砍掉。
- (1)经常发布稍作改进的版本(2)每12到18个月发布一次(3)每3到五年发布一次。
- 如果你的顾客人数较少,那么你最好经常性地发布小幅修改的新版本。如果你已经有了大量付费用户,那么最好不要太频繁地发布新版本。有几百万用户和几百万整合点的软件系统,最好偶尔才发布新版本。