对新程序员的推荐书目

BirdGu 2004-04-21 06:13:50
论坛里经常有人要求推荐一些书籍。不过我提出这个问题是希望坛子里的老鸟们从另一个角度来讨论这同一个问题。
假设你的公司新招了一批程序员。作为新员工培训计划的一部分,老板要你为他们推荐一些必读书目。新程序员的水平和背景大致是这样的:
计算机或相关专业本科或研究生毕业,或有不超过两年的工作经验。也就是说专业的基础课程,比如数据结构之类已经学过了。也学过C或JAVA之类的高级语言(本科基本都会学C和JAVA)。工作经验是比较少的,特别是应届毕业生,可能有一些兼职工作的经验。总的来说,编程量是不大的。工作习惯和编程习惯都还在养成中。

对所推荐书的要求是:
1. 暂不考虑具体语言、体系架构或技术方面的书。因为此类书不同的公司有不同的要求,难于讨论。对于具体的语言、技术等,可以另开帖子,或去专门的论坛讨论。所以这里讨论的书可能会是比较“务虚”的。
2. 目的是帮助新程序员提供编程水平、养成良好的工作与编程习惯,更好地胜任程序员的工作;学习并掌握初步的分析、设计知识与能力。为职业上的进一步发展打下扎实的基础。在设计分析、设计方法方面,希望是以面向对象方法为主的。
3. 考虑到程序员的工作负荷,以及学习具体技术知识的需要,我认为推荐的阅读量大约是1年半的时间读完5本这一类“务虚”的书。

闲话少说,言归正传。这里先提出我推荐的书目,权当抛砖引玉:
第一本是:The Pragmatic Programmer, 程序员修炼之道,Andrew Hunt, David Thomas

第二本是:Agile Software Development Principles, Patterns, and Practices, 敏捷软件开发, Robert Cecil Martin

第三本是:Refactoring: Impoving the Design of Existing Code, 重构, Martin Fowler

第四本是:Test-Driven Development,测试驱动开发,Kent Beck

第五本是:?
对第五本我拿不定注意,应该是Design Pattern,还是一本关于UML的书,比如UML Distilled。
另外我不清楚现在的本科毕业生在读“敏捷软件开发”之前,是否还需要一本关于面向对象基础知识的书。
另一个不能很肯定的问题就是,新程序员什么时候开始读软件软件开发过程的书比较好。但我觉得第一步恐怕还是学好如何写程序,然后再学习如何开发软件,这样会更扎实一些。
...全文
242 77 打赏 收藏 转发到动态 举报
写回复
用AI写文章
77 条回复
切换为时间正序
请发表友善的回复…
发表回复
redguardtoo 2004-04-26
  • 打赏
  • 举报
回复
正如楼上所说,调试的话,兴趣是第一位的.

madhappy 2004-04-25
  • 打赏
  • 举报
回复
GZ
mis98ZB 2004-04-25
  • 打赏
  • 举报
回复
呵呵,我来介绍一下我是怎么打下DEBUG的基本功的。
嘿嘿,都是游戏惹的祸啊 :P
当初玩游戏觉得不爽,就想修改。
先是用PC Tools 5改存盘文件,后来用FPE、GM、GW什么的改内存数据。
都是查找数据,然后分析意义、猜测算法,然后实验。
随着游戏厂商对数据的加密越来越严格,我的手艺也在不断提高。 :)
呵呵,最有意思的有款麻将游戏被我改的一上手就是13张发财,哈哈,自摸、天胡、字一色、绿一色……役满!!

当然这比不上那些用soft ice破软件的,不过debug也应该足够了。
Chuanyan 2004-04-24
  • 打赏
  • 举报
回复
prosadn(热血青年) :俺说2000-3000阿,不是3500。一千多的俺真的没有见过阿,就算有,也恐怕是少数吧?
redguardtoo() :想要一个好的图书馆,很难阿……
BirdGu(鲲鹏) :计算人均占有率的话,恐怕学校里上机实习的条件比90年代上半页时更差。我体会不到没有经历过从结构化向面向对象过渡,而直接去学习面向对象的感觉。好像《重构》,里面比较多的就是在结构化层次上(可能这个表达有点问题),我看起它来并没有产生像别人那么大的感触。
moonsilver 2004-04-24
  • 打赏
  • 举报
回复
ozzzzzz(希望敏捷)

呵呵,我想你既没有真正理解MVC里的M和C,也没有真正理解"健壮分析"中的实体对象与控制对象。
ozzzzzz 2004-04-24
  • 打赏
  • 举报
回复
逻辑所处的层不同,MVC中的逻辑是在M中,C只是决定怎么对用户的输入作出反映。健壮分析中逻辑在控制对象,实体对象只是一些类似数据表格这样的东西。从软件的整体层面看MVC只是对应于界面层。实际上你要是所有的三层结构,表面看起来结构都很类似,但是其实内部的运行逻辑却完全的不同。
BirdGu 2004-04-24
  • 打赏
  • 举报
回复
第一,o6z和moonsilver两位要吵架请挪贵步,去别的地方。

第二,两位要讨论健壮分析与MVC的差别,特别是控制逻辑应该在M中还是C中的问题,请另开论题。对这个问题,我也有兴趣参加,但在这里显然偏题了。
ArvinGuo712 2004-04-24
  • 打赏
  • 举报
回复
我是学机械的大三了感觉什么都不懂,什么有很懂。垃圾。我就是中国大学生的写照。
从大一开始我就帮助计算机的哥哥弟弟姐姐妹妹们写程序,替他们考试。
就这样我大一考过了vb6.0 c语言 计算机原理
大二我学会了作网页 asp php jsp 了解了asp.net java c# 考试通过了数据结构
大三我专注于学习java vb.net 谁知他们考试又叫我,就这样我又考过了RedHat 9.0 面向对象程序设计 软件工程 SQL sever 2000
快毕业了我在帮他们写毕业设计,累得要死,他们老师真是屎一样,我把我面试的题目写了一边给他,他竟然说很好。人家公司都没要我,就因为我写的烂,他竟然说好。我受不了了。每年他们那奖学金我都害怕,中国软件完了。
现在我回到一家煤矿作机械本行,我感觉踏实得很。
他们工作了,见到我说真可惜我们1.5k 到 10k 你也来吧!
我呢只有0.8K可是我。
看什么狗屎书呀,你那些书我也看过,有用吗?
现在的学生看到的只是钱,这些对于他们没有任何用。


tzhguan 2004-04-24
  • 打赏
  • 举报
回复
mark
redguardtoo 2004-04-24
  • 打赏
  • 举报
回复
现在世面上还有一些关于调试的书,有些是基于语法,程序设计层面来说的.这些书也不错.

但是公司可能考虑的是要能够快速捉bug.而且调试本身和调试工具,操作系统,具体的库结合的比较紧密(理论上所有的调试都可以用printf代替).

所以我还是推荐操作层面讲的比较多的东西,例如上文的1),2),3).
redguardtoo 2004-04-24
  • 打赏
  • 举报
回复
1)
<应用程序调试>(debug application) by John Robbins
作者本人原来在NuMega.网上有英文电子版,这本书讲的都是调试中的难点技术.对于初学者,后面几章看起来有点难.该书附的资料索引很不错.可以进一步阅读.

中文版翻译的不太通顺(翻译者的语文水平问题),但是翻译的还算准确,也附有英文,附送光盘,也不错.

2)
<Windows程序调试>(Debugging Windows Programs: Strategies, Tools, and Techniques for Visual C++ Programmers), by by Everett N. McKay (Author), Everett N. McKay (Author), Mike Woodring 代替。

基本是各种windows平台下的调试技术大全(但是有些深度不及debug application,主要是原理性的东西点到为止了.).

3)
<C++调试手册> <asp调试手册> ...<...调试手册>和上面的书比较起来难度较低,是入门级的调试技术. 讲操作的内容比较多一点. 翻译的不错.内容也很好.

一般我认为1)或者2)随便拣一本看看,一般公司里的调试就可以应付了.
如果看了3)的话,是快速入门的方法.但是可能还是需要再看1)或2)
Chuanyan 2004-04-24
  • 打赏
  • 举报
回复
你两个跑题了,俺去睡觉了,休息是为了走更长远的路。
估计明天火箭该赢了。
moonsilver 2004-04-24
  • 打赏
  • 举报
回复
嘿嘿,感觉哪有老兄您好,您可是动不动就想给别人当导师的。
moonsilver 2004-04-24
  • 打赏
  • 举报
回复
ozzzzzz(希望敏捷):

不过你那么不喜欢别人批评和不同意见,老觉得别人在向你挑衅,并且发的言透着品格低下,那么为什么不把挑衅者的贴子删掉呢?因为既然是挑衅和废话,那么按照你定的版规删掉是名正言顺啊。
ozzzzzz 2004-04-24
  • 打赏
  • 举报
回复
所以你的感觉比我的更好。
moonsilver 2004-04-24
  • 打赏
  • 举报
回复
ozzzzzz(希望敏捷):

嘿嘿,说出去的话,泼出去的水,你喜欢收回去,我不喜欢。我也没觉得哪有不妥,每句话都是我想说的。
ozzzzzz 2004-04-24
  • 打赏
  • 举报
回复
moonsilver(银月杀手)
你要是觉得自己那个不不妥,可以告诉我啊,我给你删啊。只要你愿意我随时都可以给你删。
ozzzzzz 2004-04-24
  • 打赏
  • 举报
回复
我把自己的回复给删掉了,不作无意义的争论。
重构的对于一般当然的人最大的感触就是写代码而不是贴代码。看gof最大的感触是,逻辑要放在安全的地方。看代码阅读的感触是,写别人看得懂的代码真不容易。看RUP的感觉是这些鸟人真的会作买卖。
看CSDN的论坛的感觉是,这年头自以为是的傻瓜真多,靠!那个傻B的ozzzzzz最甚:)
moonsilver 2004-04-24
  • 打赏
  • 举报
回复
呵呵,斑竹就是有这个好处,回完贴觉得不妥的可以赶快删掉。
moonsilver 2004-04-24
  • 打赏
  • 举报
回复
ozzzzzz(希望敏捷):

嘿嘿,指出你没有真正理解概念,你就能联系到我的人品上去,不同意你的观点,你就能说我是故意挑衅。我到很希望有人指导,只不过恐怕你够不上那个资格。GOF在书里举了个入门例子,你就把它当作标准答案,只是想告诉你,看书不要总是只看开头两页,想理解某个概念也不要只看一本书,项、想研究问题光看书不行,还要实践,实践也不够,还要思考。不要总是试图教别人什么,首先态度就错了,认识怎么能深入呢?说实话,院士也不见得有你的自我感觉那么良好。
加载更多回复(57)

1,265

社区成员

发帖
与我相关
我的任务
社区描述
软件工程/管理 管理版
社区管理员
  • 研发管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧