如果你能回到过去,告诉自己在开发人员职业生涯的开始读一本书,你会读哪本书?
我希望这份清单是多样的,涵盖范围很广。
搜索:使用右上角的搜索框。要搜索当前问题的答案,使用inquestion:this。例如:
inquestion:this "Code Complete"
如果你能回到过去,告诉自己在开发人员职业生涯的开始读一本书,你会读哪本书?
我希望这份清单是多样的,涵盖范围很广。
搜索:使用右上角的搜索框。要搜索当前问题的答案,使用inquestion:this。例如:
inquestion:this "Code Complete"
当前回答
Pragmatic程序员做得很好。然而,当我刚开始工作的时候,真正影响我的是:
Windows 95系统编程秘密
我知道——它听起来和看起来有点俗气,可能有点过时了——但这是基于作者(Matt Pietrek)使用他自己的工具(随书提供的代码)调查的Win95内部结构的一个很棒的解释。请记住,这是在整个开源事件之前,微软仍然对发布内部文档非常谨慎——更不用说源代码了。 里面有一些引用,比如“如果你正在解决一些问题,遇到了一些症结,那么你需要停下来,真正深入地研究它,真正理解它是如何工作的”。我发现这是一个非常好的建议——尤其是现在,当你经常有图书馆的源代码,可以去看看。 它也激励我享受深入研究系统工作原理的乐趣,这在我的职业生涯中被证明是非常宝贵的。
哦,我还想介绍一下Don Box对。net内部的解释。
其他回答
福特的《高效程序员》
我还没有完全完成这一点,但我已经为我学到的一些技巧/技巧而兴奋不已,这些技巧/技巧让我变得更有效率。
当然,有很多东西我们都已经知道了(使用键盘快捷键,DRY等)。但也有很多新东西与之相配。细心的读者很快就会发现,这些东西是如何组合在一起产生更大的效果的。
大概是1997年左右的《傻瓜C》第一卷。这只是一篇介绍,但当你在Atari st上的《GFA Basic》中尝到编程的味道后,这是一篇很好的阅读。
Alistair Cockburn的《敏捷软件开发:合作游戏》是一本优秀的书,虽然没有得到广泛的赞扬,但却充满了深刻的见解。
它有什么特别之处?好吧,显然每个人都听说过“敏捷”这个术语,而且现在似乎大多数人都是信徒。不管你信不信,敏捷运动存在的背后都有一些深刻的原则。这本书以精确、科学的方式揭示并阐明了这些原则。一些原则是(顺便说一下,这些是我的,不是Alistair的):
团队软件开发中最困难的事情是让每个人的大脑都有相同的理解。我们正在建造巨大的、精细的、复杂的系统,这些系统在有形世界中是看不见的。你越善于让更多的人分享更深入的理解,你的团队在软件开发中就越有效。这就是结对编程有意义的根本原因。大多数人对它不屑一顾(我一开始也这么认为),但有了这个原则,我强烈建议你再试一次。你最终得到了两个深刻理解你刚刚构建的子系统的人……没有多少其他方法可以如此快速地获得如此深入的信息传输。就像瓦肯人的心灵融合。 你并不总是需要用语言来快速表达深刻的理解。一个必然的结果是:太多的词,你就超过了听者/读者的能力,这意味着你试图实现的理解转换无法发生。考虑到孩子们通过“沉浸”和“吸收”来学习如何说语言。不仅仅是语言……他举了一个孩子在地板上玩火车的例子。走过来的是另一个从未见过火车的孩子……但通过观察其他孩子,他掌握了游戏的要点,并与他们一起玩。人与人之间经常发生这种事。这和关于太多单词的推论一起,帮助您了解在旧的“瀑布”时代,试图编写700页详细的需求规范是多么错误。
里面还有很多东西。我现在要闭嘴了,但是我强烈推荐这本书!
Kernighan和Plauger的编程风格元素。 它说明了噱头-聪明和优雅-聪明之间的区别。
c++中的算法对我学习大O符号和各种排序算法的来来去去是无价的。这本书在塞奇威克认为把它分成5本可以赚更多钱之前出版了。
c++ FAQs是一本神奇的书,它告诉你在c++中应该做什么,不应该做什么。c++的向后兼容性留下了很多“地雷”,这本书帮助人们小心地避免这些地雷,同时也很好地介绍了OO设计和意图。