《软件随想录》 摘录
2010-02-05 12:13
[Book]
More Joe on Software
- Joel Spolsky
寻找优秀的程序员
- 走出去
- 实习生
- 建立自己的社区
程序员在组织中如何被对待
- 如果你不尊重程序员,你就得不到优秀的程序员。
- 谁是他们的同事
- 独立和自主
基本上,如果你要雇佣聪明人,你就必须让他们在工作中发挥机能。
程序员希望自己之所以被雇佣,是因为自己的机能,希望被被人当成专家那样对待,有权力在自己的专业领域中作出决定。 - 不搞政治
- 让一流的新员工挑选他们自己的项目
- 使用非常必要的热门新技术
程序员不在乎的一件事 ----------------------- 他们实际上不在乎钱,除非你在其他事情上搞砸了。
当然并不意味着你可以向他们支付低工资。因为程序员对公正公平是在乎的。他们会被激怒的,然后突然之间,钱就将成为一个大问题。
三种管理方法 -----------------------
- 军事化管理法
- 经济利益驱动法
- 认同法
学校只教Java的危险性 -----------------------
- 过去十年中,大量本来堪称完美的好学校,都百分之百转向了Java语言的怀抱。[P52]
- 大学里只教Java语言,无法淘汰那些永远也成不了优秀程序员的学生,这已经是很糟糕的事情了。[P54]
- 还有,计算机科学是由证明(递归)、算法(递归)、语言(λ演算)、操作系统(指针)、编译器(λ演算)所组成的,所以说那些不教C语言、不教Scheme语言、只教Java语言的学校实际上根本不是在教授计算机科学。[P56]
技术派(geek)和务实派 ----------------------- 从这个角度看,计算机界可以分成技术派(geek)和务实派(suits)两大类。[P61]
技术派想要把质量问题用软件自动处理。为了这个目的,他们发明了单元测试、测试驱动开发方法、自动测试、动态逻辑等,目的只有一个,就是证明程序中没有错误。
务实派并不真地关心质量有没有问题。只要有人愿意出钱购买软件,他们才不想关心代码中有没有错误。
当前,在技术派和务实派的大战中,务实派是获胜的一方,因为他们控制了公司的预算。老实说,我不觉得这是一件很糟糕的事情。务实派认识到,消灭软件代码中 的错误是一件边际报酬递减的事情。一旦软件的质量达到了一定的水准,能够用来解决特定的问题,那么就会有用户从这个软件中获益,用户也会因此愿意出钱购 买。
同时,务实派对于“质量”有一个更广义的定义。你尽管大胆的想象,这个定义完全符合利益原则。
给计算机系学生的建议 -----------------------
- 毕业前练好写作
- 毕业前学好C语言
- 毕业前学好微观经济学
- 不要因为枯燥就不选修非计算机专业的课程
- 选修有大量编程实践的课程
- 别担心所有工作都被印度人抢走
- 找一份好的暑期实习工作
- 寻求专业人士的帮助,培养你的自信心