基本信息
- 原书名:New Programmer's Survival Manual: Navigate Your Workplace, Cube Farm, or Startup
- 原出版社: Pragmatic Bookshelf

【插图】

编辑推荐
资深软件开发专家Josh Carter 20余年编程生涯心得体会,从程序员成长视角,系统总结和阐述了专业程序员在编程技能和方法、编程工具、自我管理、团队协作、组织架构、工作态度和原则、自我学习和持续改善等方面应该掌握的33个技巧。
内容简介
计算机书籍
《程序员修炼之道:专业程序员必知的33个技巧》是每一位致力于成为专业程序员的软件开发新手都应该阅读的一本书。它是资深软件开发专家Josh Carter 20余年编程生涯的心得体会,从程序员成长的视角,系统总结和阐述了专业程序员在专业技能、编程工具、自我管理、团队协作、工作态度以及需要采取的行动等方面应该掌握的33个非常重要且实用的技巧。作者以自己以及身边的同事积累下来的经验、犯过的错误为素材,旨在为新人们引路,让他们在能力修炼的过程中少走弯路!
全书分为四个部分:第一部分(技巧1~14),从编程技能和工具使用两个方面总结了14个技巧,包含如何正确地书写代码、测试驱动设计、管理代码复杂度、改善遗留代码、代码评审、开发环境优化、自动化等;第二部分(技巧15~24),从自我管理和团队协作两个方面总结了10个技巧,包括如何树立自我形象、压力管理、建立良好人脉和高效会议等;第三部分(技巧25~30),介绍了典型高科技公司的组织结构以及你在整个公司中的位置,并且阐述了薪酬分配的问题;第四部分(技巧31~33),介绍了在日常工作中如何持续改善自己的工作和学习状态。
目录
译者序
前言
第一部分 专业编程
第1章 编程生产 2
技巧1:敲打代码 4
技巧2:坚持正确 9
技巧3:测试驱动设计 19
技巧4:驯服复杂度 25
技巧5:优雅地失败 33
技巧6:确定风格 39
技巧7:改善遗留代码 45
技巧8:代码审核要早且多 50
第2章 整理工具 55
技巧9:优化环境 57
技巧10:流畅表达 64
技巧11:熟悉平台 71
技巧12:自动让痛苦消失 76
技巧13:控制时间及时间线 79
技巧14:使用源码,卢克 83
译者序
我注意这本书其实有一段时间了,因为这是一本独特的书。虽然面向程序员,却并非一本单纯的技术书籍。尽管英文书名包含New Programmer,但对于入行多年的“老兵”同样能做到开卷有益。事实上,在翻译本书的过程中,我本人也从中获益匪浅。
对于刚踏入社会工作的毕业生,要完成从学生到社会人的转变并非易事。尤其是那些从事编程工作的社会新鲜人,有许多的观念和事情需要去转变和学习。比如:你以前可能孤身一人开发完成整个应用,现在则可能要跟他人合作;你之前的代码可能是自己分目录保存不同副本,如今可能要用到类似Git这样的版本控制软件;你之前的代码可能是自己手动测试,而新公司可能要求你写自动化的单元测试……除了这些纯技术上的变化外,你还会面临一些诸如绩效考核、配合市场人员宣传、职业生涯这样的新事物。
所有以上内容,你都会在本书中找到相应的内容和建议。虽然读一本书不会让你马上转变身份,但起码会给你提供帮助,让你感觉不再孤单。说句心里话,要是当年我有一本这样的书该有多好!
虽然时光无法倒流,但现在也为时未晚。对于在踏入编程大门初期错过了本书的朋友们,同样能在本书中找到适合自己的内容。你是否每到绩效考核时就头痛?你是否觉得长时间坐在办公室内编程损害了你的健康?你是否讨厌开会,认为它们纯粹是浪费时间?你是否关心所在公司的营业情况?你有没有想过换个工作?……打开这本书,读一读别人的想法和做法。
除了本书的内容外,我接下这本书的翻译其实还有一个私心:希望我的同行妻子也能从中汲取些营养。于是,在“初译—审校—润色—审校”的过程中,她最终承认这是一本好书,决定要将从书中学到的经验用到实际中—这是“润物细无声”的典型案例。
最后,我要感谢参与本书的所有的机械工业出版社的编辑,让我有机会负责本书的翻译工作,而且有一个非常愉快的合作体验;同时,我还要感谢参与本书审校工作的朋友:朱晓弟、仵建锋和焦斌。当然也不能遗漏老婆,不仅是因为你的审校次数最多、最深入,而且还因为你对于我生活的支持和帮助!
胡键
于西安
前言
按行业规模编程,其中的代码库规模以上千(或几十万)行代码来衡量。你怎样才能快速入门,开始作出贡献?
遨游在除了程序员之外还有许许多多其他角色的组织内。当要了解产品特性时,你向谁请教?
每年都有所成就。当绩效考评潜伏在地平线上时,你知道老板的目标吗?你知道自己将如何被判定吗?
还有很多很多。你的编程技能只是工作第一年里要用到的技能的一部分。
我们中的幸运儿会有识途老马充当向导。本书则是一位虚拟向导,它将为你指明方向,指出前方的高山和峡谷,同样也将让你避免跌入令人讨厌的陷阱。
我的经历
你或许能从我在1995年上大学时的情景中找到一些与自己经历相似之处:我一开始走的是传统老路,一名杜克大学计算机科学与电子工程系的学生。我曾找过我的导师,询问哪些课程最有利于我未来求职。他是个聪明的家伙—一名罗德学者和这间工程学校冉冉升起的新星—他的回答是:“我不知道。我从未在行业里工作过一天。”
我大失所望。我想构建真实、有人买的产品,而不是写研究论文。因此,那个夏天我设法加入了硅谷一家方兴未艾的创业公司:General Magic。它是由当初创造了Macintosh计算机的同一拨人(Andy Hertzfeld和Bill Atkinson)创建的。我的同事包括来自苹果公司System 7(操作系统)团队的一些顶级开发者和后来创建了eBay的那个哥们儿。
我在两个月的实习期内学到的编程知识比我在学校里两年学到的还要多。我给杜克大学打了个电话,说我不打算回学校了。就这样,我在行业里的狂野冒险开始了。
现在说说你
本书的读者可大致划为如下几类:
选修计算机科学和有这样疑问的大学生和将要毕业的学生:“现实世界里的编程是这个样子吗?”(简单说:不是。)
具有其他背景,因为爱好或副业而涉足编程,现在想将其作为全职工作的职业人士。
正在考虑编程行当,但想找些书中和课堂上没有教过的东西的其他人。
不论你属于哪种类型,你现在的情况是:到了靠编码为生的时候。就代码部分而已,市面上以之为主题的书可谓汗牛充栋。但讨论跟这个工作相关的其他方方面面的书籍,就不见得有那么多了—这正是本书的初衷。
对于转行的从业者,有些章节可能对你没多大用处—假如你具有市场营销的背景,那就用不着我来告诉你市场营销究竟为何物。但你还是可以从工程部门的运作方式以及代码从概念到发布的演变过程的相关内容中获益。
本书组织结构
本书以技巧的形式写就,每个技巧用寥寥数页说明某个主题,有些技巧可能稍长。相关的技巧组织在一起形成章,但阅读它们的顺序可以由你来定。若想了解全景图,那就一页页从头读到尾。但可随意来回翻阅——当技巧需要彼此引用时,会在文中明确指出。
一开始的讨论跟代码密切关联:第1章“编程生产”从你擅长的编程出发,就如何让代码随时可以用于生产环境提供了指导。没有人想让充满Bug的代码面市,但在行业规模的项目上确保代码正确并经过良好测试却是不小的挑战。
媒体评论
—— Bob MartinObject Mentor公司总裁,著有《The Clean Coder》
这本书极好地总结和叙述了软件开发新手缺失的软件开发“宏观视图”,以及许多其他的方面。这是一本开启全新软件职业生涯的优秀入门书。
—— Andy Keffalas软件工程师和团队领导
这本书阐述了不断发展和变化的IT行业潜规则,观点新颖有趣、内容深入浅出。假如你刚拿到计算机学位,一定要读一读这本书。
—— Sam Rose格拉摩根大学计算机科学系学生
这本书包含了所有在我刚入行时就应该学习的知识,是软件开发新手的必读书籍,对行业里的所有人来说,同样开卷有益。
—— Chad Dumler-Montplaisir软件开发者
书摘
专 业 编 程
技巧1:敲打代码
技巧2:坚持正确
技巧3:测试驱动设计
技巧4:驯服复杂度
技巧5:优雅地失败
技巧6:确定风格
技巧7:改善遗留代码
技巧8:代码审核要早且多
技巧9:优化环境
技巧10:流畅表达
技巧11:熟悉平台
技巧12:自动让痛苦消失
技巧13:控制时间及时间线
技巧14:使用源码,卢克
第 1 章
编 程 生 产
将编程作为一种娱乐消遣,你会轻易忽略像边界情况处理、错误报告等这类事情,它们确实有点麻烦。可一旦你从事编程生产(更别提要养家糊口)你就不能走捷径。
编写生产质量级别的代码似乎是一个明摆着的目标,但计算机行业却费了不少时日才弄明白正确的实现之道。例如,Windows 95曾经有个Bug会让操作系统在连续运行49.7天之后挂起—但是该Bug花了4年时间才暴露,有Bug这件事本身并不特别让人觉得惊讶,时间之所以这么长是因为其他Bug在不到49.7天的时候就让Windows 95崩溃了。