Leo荐书系列介绍:
由于博客访问量的关系,某些PR公司找我写软文的价码儿已经开到千字600块了,但是本博客上仍然没有任何一篇某公司花钱买去的文章。我愿意花时间写的东西有三个特点,首先是写的不错,之后要么是对大家有帮助、要么是对我有帮助。
最近,常有出版社的编辑找我写书评或者读后感,我也希望能通过自己的阅读向大家推荐些好书,于是在博客上开了这个“Leo荐书”系列。目前计划每月更新两期。
Joel Spolsky给计算机专业大学生的建议
北京图灵的刘静编辑找到我,希望我写个《软件随想录:程序员部落酋长Joel谈软件》的读后感。我查了下,书的原名叫《More Joel on Software》,针对Joe之前出过的一本《Joel on Software》而言本书是第二本所以多个More,是由Joel的随笔、讲座集结而成,相当部分可以在他的博客上找到。至于为什么中文名字这么怪,为啥要很莫名的叫酋长,那您怕是要去问出版社了。
因为还没有样书,所以我从她给我的目录里选了三章,它们的名字是:
第8章 学校只教Java的危险性
第9章 在耶鲁大学的演讲
第10章 给计算机系学生的建议
从目录上看以上三章对目前正在就读大学的同学应该很有帮助。
“学校只教Java的危险性”里Joel的意思是Java比C更简单,可以降低计算机系同学的淘汰率,所以开设的学校越来越多;另外他还不同意美国很多学校取消数据结构和函数式编程这两门学起来很难的课。他的观点是课程太简单,不能淘汰那些不应该成为程序员的人。
托教育改革的福,中国的大学数据结构还是必修课,函数式编程好像是放在C语言里讲的。具说Joel的网站每篇文章点击都超过10万,不知道是否大家都同意他“大学课程越来越容易不便淘汰学生的观点”,反正我认为此观点不适用于国内。随着时间的推移,国内大学教育已有从精英教育转向职业教育的趋势,很多课程就是为了让大学易于掌握,说白了是门手艺,出去好谋生。搞的太复杂不利于大多数人,另外真正对计算机科学有兴趣的同学自会继续深造,多半与课程楼上月设置无关。
“在耶鲁大学的演讲”里Joel回顾了自己的大学生涯和职业生涯,其中包括不同公司对程序员的态度,值得大家借鉴。其中有关“内部程序员”的特征就是国内“做项目”程序员的切实写照。Joel的观点是“世界上大概有80%的程序员是内部程序员,如果你从学校毕业的时候
不是非常非常小心,你可能会发现不经意间你已经在开发内部软件了。让我告诉你,这种工作会把你榨干。”所以,尽量不要做“内部程序员”而应该去专业的软件公司,他提出三个理由:
1、你永远无法用正确的方法做事。你总是被迫用最保险的方法做事。
2、一旦你的程序可以用了,你就不得不停止开发。所有那些内部程序看上起就像给狗吃的早餐,只要狗能吃饱就行了,何必再多花钱让食物变得色香味俱全呢?你辛辛苦苦做出来的只是一些令人难为情的次品,然后,你还必须十万火急地为去年制造的次品打补丁。
3、如果你在专业的软件公司中编程,你的工作与公司的主营业务直接相关,是能够为公司直接带来收入的。这至少意味着一件事情,就是管理层会想到你。也就是说,你能得到最好的福利、最舒适的办公室和最佳的晋升机会。
我看的部分整体行文都很精彩,尤其是提到以上三个理由。做“内部程序员”其实也是国内大部分程序员员的现状,多少有些不得以而为之——每个人都应该先解决生存问题。
“给计算机系学生的建议”里Joel提出了8条建议:
(1) 毕业前练好写作。
(2) 毕业前学好C语言。
(3) 毕业前学好微观经济学。
(4) 不要因为枯燥就不选修非计算机专业的课程。
(5) 选修有大量编程实践的课程。
(6) 别担心所有工作都被印度人抢走。
(7) 找一份好的暑期实习工作。
(8) 寻求专业人士的帮助,培养你的自信心。
并对8条建议做了逐一的分析。让我惊讶的是第5条和第7条也是我在大学讲座里经常提及的,包括我写的《程序员羊皮卷》里也有提到。当然Joel讲的比我更加深入,希望大家有空去看看。
最后说下本书翻译,在最近看的译版著作里算是比较好的,可以看出译者阮一峰是下了很大功夫的,有关他的努力参考博文:http://www.ruanyifeng.com/blog/2008/10/i_will_translate_more_joel_on_software.html
相信本书其它的章节会更精彩,期待您的亲自阅读。
本书购买地址:http://www.china-pub.com/196194
附录:
软件随想录:程序员部落酋长Joel谈软件
内容提要
本书是一部关于软件技术、人才、创业和企业管理的随想文集,作者以诙谐幽默的笔触将自己在软件行业的亲身感悟娓娓道来,观点新颖独特,内容简洁实用。全书分为36讲,每一讲都是一个独立的专题。
本书从不同侧面满足了软件开发人员、设计人员、管理人员及从事软件相关工作的人员的学习与工作需要。
目 录
第一部分人员管理
1我的第一次BillG审查
那个时候,我们有一档子事叫做“BillG审查”。基本上,比尔·盖茨会审查每一个重大的功能。比尔说Fxxx这个词的次数越少,就代表审查的结果越好……在我的BillG审查大会上,微软的管理层都到场了。
2寻找优秀的程序员
优秀的程序员都在哪里?我能请到他们吗?员工推荐可靠吗?
3寻找优秀的程序员之实战指南
优秀的程序员想要什么?在工作环境中他们喜欢什么?不喜欢什么?如何使你的公司成为顶尖程序员的头号选择?
4三种管理方法
如果你要领导一个团队,或者一家公司,或者一支军队,或者一个国家,那么你面对的主要问题是如何“让人们去做你要他们做的事”,更文雅的说法是如何让所有人都向同一个方向前进。
5军事化管理法
软件开发团队中的优秀程序员可以去任何他们想去的地方工作。在这种前提下,如果被人当成士兵一样对待,他们会感到相当扫兴,因此你要是这样做,最后就只能成为“光杆司令”了。
6经济利益驱动法
“经济利益驱动法”假设每个人的行为动机都是金钱,让人们听命于你的最好方法就是给他们物质奖励或者物质惩罚,以此创造行为动机。如果你使用经济利益驱动法,你就是在鼓励程序员与制度博弈。
7认同法
一般来说,认同法要求你创造一个有凝聚力的、像胶水一样粘在一起的团队,就好像家庭一样。这样一来,人们就会对他们的同事产生忠诚感和义务感。
第二部分写给未来程序员的建议
8学校只教Java的危险性
作为一个雇主,我发现那些100% Java教学的计算机系已经培养出了相当一大批毕业生,这些学生只能勉强完成难度日益降低的课程作业,只会用Java语言编写简单的记账程序,如果你让他们编写一个更难的东西,他们就束手无策了。他们的智力不足以成为程序员。
9在耶鲁大学的演讲
在学校里,明白自己应该学点儿什么最重要;在职场上,明白自己想要什么以及该如何为目标奋斗最重要。
10给计算机系学生的建议
想成为一名优秀的程序员吗?一定要记住这七条建议。
第三部分设计的作用
11字体平滑、反锯齿和次像素渲染
苹果公司和微软公司的根本不同之处在于指导思想。
12寸土必争
创造一个有使用价值的软件,你必须时时刻刻都在奋斗,每一次的修补,每一个功能,每一处小小的改进,你都在奋斗,目的只是为了再多创造一点空间,可以再多吸引一个用户加入。没有捷径可走。
13大构想的陷阱
你在头脑中形成了一个整体的设想,想好了下一步要做什么,一切看上去都清楚无比,都不用你再设计什么东西了。你马上就一头扎入了工作,开始落实你的设想……这时候,你就已经犯了两个错误。
14别给用户太多选择
程序员受到一种愿望的驱使,渴望方方面面都照顾到,让每个人都感到满意。但是,这种愿望的基础其实是一个不正确的认识,更多的选择会不会让用户感到更幸福,我们需要重新思考这一点。
15易用性是不够的
社会化界面比易用性设计更重要。如果社会化界面一塌糊涂,那么就算你有世界上最好的用户界面,你的软件也活不了。
16用软件搭建社区
软件项目同建筑项目一样,设计规划非常重要,它能够决定在线社区的成败和它的类型。
第四部分管理大型项目
17火星人的耳机
“Web标准”到底该不该存在?它为什么会乱成今天这种一团糟的局面?
18为什么Microsoft Office的文件格式如此复杂(以及一些对策)
Office软件是复杂得不可理喻、功能极其丰富的应用软件。你不可能只实现其中最常用的20%的功能,然后指望80%的用户会感到满意。
19要挣钱,就别怕脏
不管别人雇你干什么工作,你都会遇到某种很不顺心的麻烦事。……但是,重要的一点是,每当你新解决了一件“麻烦事”,你的业务和市场都会有巨大的增长。
第五部分编程建议
20循证式日程规划
有效的日程规划是创造优秀软件的钥匙。这会使你的产品变得更出色,使你的老板感到更高兴,使你的客户感到更满意,以及最重要的一点,那就是使你下午5点能够准时下班。
21关于战略问题的通信之六
从长远的观点来看,那些不关心效率、不关心程序是否臃肿、一个劲往软件中加入高级功能的程序员最终将拥有更好的产品。
22你的编程语言做得到吗
那些具备了“第一类函数”功能的编程语言,能够让你更容易地完成进一步抽象代码的任务。这意味着你的代码体积更小、更紧凑、更容易重复利用、更方便扩展。
23让错误的代码显而易见
寻找一种代码的书写规范,让错误的代码变得容易被看出。让代码中的相关信息在显示屏上集中在一起,使你能够当场发现和改正某些种类的错误。
第六部分开办软件公司
24Eric Sink on the Business of Software的前言
当你亲身经历新生意的慢慢成长,你会感到一种难以置信的激动。那是一种快乐。
25Micro-ISV: From Vision to Reality的前言
如果你也想开一家小型的软件公司,我可以提供3点个人意见:想清楚你的软件能解决什么棘手的问题;不要独自一人创办公司;一开始不要抱太高期望。
26飙高音
用许多平庸的程序员取代少数优秀的程序员,这种做法的真正问题在于,不管平庸的程序员工作多长时间,他们做出来的东西都无法像优秀程序员做得那样好。
第七部分经营软件公司
27仿生学办公室
良好的办公空间能提高程序员的生产率,也能吸引来最优秀的程序员,因此,这样的支出是值得的。
28他山之石,不可攻玉
我学到了软件开发中重要的一课。那就是,对你最重要、最关键的部分,你一定要使用更原始的工具。
29简化性
如果你把“简化性”这个词理解成“不提供大量功能”或者“只提供一种功能,并把这种功能完美实现”,那么我会为你大胆说出心里话而喝彩,但是你不可能会有很大的发展,一种故意减少功能的产品是没有前途的。
30揉一揉,搓一搓
代码重构工具正在不断进步中,如果你也想加入,开办一家可怜兮兮的小公司,专门出售奇奇怪怪的编程工具,或者想为开源运动做出有用的贡献,那么这个领域是一片广阔天地,大有可为。
31组织beta测试的十二个最高秘诀
关于如何组织一次软件的beta测试的秘诀。这些秘诀对商业项目和开源项目都适用。
32建立优质客户服务的七个步骤
如何提供让客户对我们的服务交口称赞的优质客户服务?
第八部分发布软件
33挑选发布日期
有三种方法:经常发布稍作改进的版本;每12到18个月发布一次;每3到5年发布一次。那么具体该考虑哪些因素呢?
34软件定价
软件公司犯下的最大错误就是定价太低,那样它们就不得不关门歇业。但是,还有更大的错误,那就是定价太高,那样你的公司就没有足够的顾客,不得不关门歇业。所以,你最好不要定错价格。
第九部分修订软件
35五个为什么
当某个地方出错的时候,你就问为什么,一遍遍地追问,直到你找到根本性的原因为止。
36确定优先顺序
不同的事情有不同程度的“重要性”,而不是只有“重要”和“不重要”的两个选项。如果你想把所有事情都做完,最后只会一事无成。
相关推荐
Joel Spolsky在这篇文章中提出的两大建议——提高写作技巧和掌握C语言,都是基于“软实力”的提升。这两项技能对于任何希望在IT行业取得成功的计算机科学学生来说都是非常宝贵的。通过强化这些技能,不仅可以增强...
《软件随想录》是一本由Joel Spolsky所著的著作,该书以其深刻的见解和独特的视角在全球范围内影响了无数程序员。Joel Spolsky是一位在软件开发领域有着丰富经验的老兵,他的思想不仅对软件开发者有启发性,对于设计...
Spolsky分享了他的职业经历和教训,为读者提供了关于如何提升专业技能、建立人脉网络以及平衡工作与生活等方面的建议。 ### 结论 《More Joel on Software》不仅是一本技术书籍,更是一部集思广益的智慧宝库,它...
美国著名程序员Joel Spolsky关于软件管理和技术公司管理精辟论述,读来受益匪浅,特别是其中给大学计算机系学生的建议。
根据提供的文件内容,可以看出这是一篇关于Joel Spolsky和他的网站Joel on Software的文章,但文本中包含了大量的乱码和非中文字符,这可能是由于编码错误或原文本的特殊处理造成的。尽管如此,我们仍然可以从有限的...
——Joel Spolsky 当《人件》第1版出版时,我写了一篇评论,“我强烈推荐你买一本《人件》给你或你的老板;如果你是老板,那么请为你部门的每个人买一本,并且也给自己买一本。”这个建议在12年后依然有效,并且...
《Joel on Software》是由Joel Spolsky撰写的一本著名IT著作,主要涵盖了软件开发、团队管理、软件工程以及互联网行业的多个重要方面。这本书以其深入浅出的讲解和实战经验分享,深受程序员、项目经理和技术领导者们...
——Joel Spolsky 当《人件》第1版出版时,我写了一篇评论,“我强烈推荐你买一本《人件》给你或你的老板;如果你是老板,那么请为你部门的每个人买一本,并且也给自己买一本。”这个建议在12年后依然有效,并且...
1. **软件质量**:Joel强调软件质量的重要性,主张开发人员应该关注细节,以确保产品的健壮性和易用性。他提出了“10倍程序员”理论,指出优秀的程序员可以比普通程序员更高效地编写出高质量的代码。 2. **软件工程...
### 推荐给程序员看的书籍 在信息技术领域,阅读是持续学习和发展的重要途径之一。以下是一些推荐给程序员的书籍,这些书籍涵盖了项目管理、软件工程、编码实践以及编程哲学等多个方面,对于提高程序员的专业技能和...
《基于证据的计划:Joel Spolsky的修订版Excel电子表格解析》 在项目管理领域,有效的规划和控制是成功的关键。Joel Spolsky,一位知名的软件工程师和企业家,提出了基于证据的计划方法,强调了数据驱动决策的重要...
本书是一部关于软件技术、人才、创业和企业管理的随想文集,作者以诙谐幽默的笔触将自己在软件行业的亲身感悟娓娓道来,观点新颖独特,内容简洁实用。全书分为 36 讲,每一讲都是一个独立的专题。 本书从不同侧面...
【计算机教育:软件随想录】给计算机专业学子的建议 在计算机教育中,培养软实力至关重要。这里的软实力不仅包括编程技能,更强调的是沟通和表达能力。文章的作者,Joel Spolsky,以其丰富的经验和独特的见解,为...
根据提供的文件信息,我们可以推断出这是一本关于软件写作的书籍,名为《The Best Software Writing I》,由Joel Spolsky编辑选择并作序。虽然我们没有完整的书籍内容,但可以通过标题、描述以及部分版权页的信息来...
Joel Spolsky的建议主要聚焦于两个关键方面:软实力的培养和基础技术的扎实掌握。软实力,特别是良好的沟通能力,对于任何行业的成功都起着决定性作用。在IT行业,这主要体现在写作能力和表达能力上。 首先,写作...
很多程序员响应,他们在推荐时也写下自己的评语。 以前就有国内网友介绍这个程序员...” —— Joel Spolsky 对于新手来说,这本书中的观念有点高阶了。到你准备阅读此书时,你应该已经知道并实践过书中99%的观念。– e
Joel Spolsky,作为一个曾经的耶鲁大学计算机系学生和现在的Fog Creek软件公司CEO,他的建议对于面临就业压力的计算机专业学生尤其有价值。他的观点强调了工作热情和有效沟通的重要性。 首先,Spolsky提倡热爱自己...
根据提供的文件信息,我们可以推断出这是一本关于软件开发、设计与管理的书籍,作者是Joel Spolsky。本书包含了对各种与软件开发者、设计师及管理者相关的议题的深入探讨,同时也为那些与这些专业人士合作的人提供了...