送书|编程魔法的麻瓜入门手册——《一路编程》

思特沃克2019-01-10 16:56:43

《一路编程》

不论你想要成为一个专业的软件开发者,还是想要学习如何更高效地和程序员沟通,或者只是对于程序如何工作感到好奇,这本书都非常适合作为帮你达成所愿的第一步。

               ——作者:Steven Foote(美)

在这本书中你可以学到:

 • 如何简化及自动化诸多编程工作 

• 在程序中处理不同类型的数据 

• 使用正则表达式查找和处理模式 

• 编写能够决定该做什么、什么时候做的程序

• 使用函数编写干净、简洁的代码 

• 编写可以让其他人很容易理解和改进的程序 

• 测试并调试软件,使其变得可靠 

• 和程序员团队一起工作 

• 学习接下来要建立一生的编程技能的步骤

译者(佟达)序

在中国,IT从业者有数百万之多,但这其中,称得上会编程的,不会超过十分之一。 

我所说的会编程,绝不仅仅是会写代码,而是包括环境搭建、版本管理、构建管理、单元测试、文档编写、团队合作,以及任务拆分在内的综合技能。很多人——包括我自己——一开始都无法理解,一个程序员除了写代码,为什么还需要懂这么多东西?

>>>>

当年在学校,有幸参加一个学生团体,利用课余时间做点小项目。第一次几个人一起写代码,还有点小激动。然而激动并没有延续很久,过了两天,当大家准备把各自写的代码合到一起时,发现这是个根本无法完成的任务,每个人都有自己的想法,从代码组织方式,到代码风格,甚至连IDE都不一样。那是第一次感受到,真正的软件开发,和写C语言程序设计的作业完全不一样。 

2009年年底,我到微软亚洲研究院的创新工程中心实习,当时的部门负责人是邹欣,他是《移山之道》和《构建之法》的作者。进组的第一天,我就拿到几张纸,上面写着一些基本的编码规范。分配给我的电脑上环境已经准备好,从TFS上签出项目代码,在项目文件中的编译选项已经配置好,直接运行编译,之后执行脚本就可以将服务跑起来。

从新人进组到可以开始工作,不到一天时间,真是让我眼界大开。当然,这才是开始,后面从代码提交,到工作项分配,再到上线部署,每一件事都在刷新着我对软件开发的理解。不过,作为一个小小的实习生,那时的我只想安安静静地写代码,没有仔细思考这些专业工作背后的意义。

>>>>

我毕业后的第一份工作就职于在一家研究所,所在的部门人员能力都很强,但是因为信息相对闭塞,对于现代软件开发方法并不是很了解,所以开发团队的很多做法都比较原始,导致需要花费大量的时间和精力在管理代码版本、修复由于更新代码导致一些已有功能不能用的bug等上。

我尝试将在微软亚洲研究院学到的那些知识引入到团队中,觉得只要搭建起TFS,就水到渠成了。可惜现实狠狠给我上了一课,搭建TFS其实是所有事情中最简单的,设定编码规范、规范代码提交流程、统一编程环境、编写自动化脚本等,每一件事都非常困难。

后来,我来到ThoughtWorks,发现这里每个人都能够熟练使用Git管理代码,使用Gulp、Maven、SBT等管理构建构成,还会写大量的自动化测试来保证质量。从代码修改到测试环境上线,只需要5分钟时间,整个过程不需要人参与,程序员们只要看着屏幕上的流水线走到最后亮起绿灯,就可以安心地做下一个任务。后来有人给这种工作方式起了个很直观的名字,DevOps,中文叫作“开发自运维”。 这时我才意识到,如果一个团队中大部分人都不了解这些现代软件开发的知识,靠一两个人去推动,几乎不可能。

在这里,我了解到了为什么需要敏捷开发,为什么要做持续集成、持续交付,为什么要组建全功能团队。以前对于软件开发的很多疑惑,都慢慢解开了。我常常想,要是我在还没毕业的时候,就知道这些事情,会少走多少弯路啊! 

最近几年,参与了几次技术咨询项目,接触到更多软件开发者。很多业界有名的公司,实际上软件开发人员的技能非常不足。完全不理解软件工程任何概念的程序员大有人在,不会使用命令行工具、不知道如何处理代码冲突、从不做单元测试、基本上全靠网上搜索一些代码片段来完成任务,这样的人真心不能算会编程。

当然也不乏一些在日常工作中有思考,能够理解软件开发的痛点,但是苦于不知道如何改进的程序员。因为从来没有人告诉他们怎么做才是正确的编程方式。

>>>>


现在市面上对于每一个流行的技术都有大量的书籍文档做介绍,然而,唯独缺少一类书,告诉读者如何才能做一名合格的程序员。事实上,我自己以前也一直认为,要想成为一名合格的程序员,需要读很多不同方面的书。直到我看到了本书。  

当时接下这本书的翻译,初衷是想要将这本书送给我当时的女朋友,现在的妻子,因为她刚好也是会计,和本书作者在转行做程序员之前的职业一样。我的本意是通过这本书,让我的老婆也可以对编程感兴趣,能够理解我每天对着电脑到底是在干什么。

然而当我翻译到第4章,介绍JavaScript构建工具那部分时,我发现这本书并不是我一开始想的那样,并不只是一本介绍如何写JavaScript代码的入门书。在只有两百多页的书中,作者对所有软件开发相关的技能都做了介绍。对于每个编程必备技能,作者仅仅介绍其在日常开发过程中最常用到的一些知识,用20%的篇幅,把80%的场景都覆盖到了。

不仅如此,因为作者自己从对编程一无所知开始学习,所以在介绍一些相对难理解的概念时,能够设身处地地从初学者角度着想,用直白的语言,将一些概念解释出来。尽管可能从专业人士角度看,不算非常严谨,但对于日常开发工作来说,刚好够用。 

对于程序员来说,这是最好的时代,物联网几乎改变了所有行业,甚至已经有人在提“程序员拯救世界”这种说法,作为程序员,我们应感到自豪;然而,这也是最坏的时代,软件开发对程序员的要求越来越高,20年前也许会用HTML设计网页已经非常厉害,但今天你需要会很多不同的技能才能成为一名合格的程序员。

如果你希望能够在软件开发这条路上一直走下去,本书可以帮你迈出坚实的一步。



迫不及待要看书?点击左下角[阅读原文],享8.6折购书优惠!

另外,我们将为评论区点赞数最多的五位免费赠书。下周五公布获奖结果,这次的幸运儿是你吗?