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

《一路编程》

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

——作者:Steven Foote(美)

在这本书中你可以学到:

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

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

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

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

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

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

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

• 和程序员团队一起工作

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

译者(佟达)序

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

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

>>>>

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

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

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

>>>>

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

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

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

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

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

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

>>>>

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

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

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

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

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



原文发布于微信公众号 - 思特沃克(ThoughtWorks)

原文发表时间:2017-01-06

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Jerry的SAP技术分享

SAP成都研究院郑晓霞:Shift Left Testing和软件质量保证的一些思考

今天的文章来自Jerry的同事,曾经的搭档郑晓霞(Zheng Kate)。郑晓霞是在Jerry心中是一位很有实力的程序媛,2011年从西安某软件公司跳槽到SAP...

1652
来自专栏云计算D1net

人们应该了解的20个亚马逊云服务

3926
来自专栏DevOps时代的专栏

你所不了解的 DevOps

2034
来自专栏IT米粉

加强管理能提高程序代码质量吗?

代码质量是咱们程序开发中永远的一个痛,提升代码质量有很多种方式,强化管理是一种很常见的方式,这里咱们就聊聊,所谓的管理,真的是提升代码质量最有效的方式吗? 外包...

2985
来自专栏无原型不设计

什么是“移动先行”原则,如何践行?

2010年的全球移动通信大会上,谷歌时任首席执行官Eric Schmidt 提出:产品设计应遵循 “移动先行” 的原则。 该原则具体指什么?遵循该原则的依据有...

3624
来自专栏产品成长日志

工作5年,我的互联网工具箱(30个提升办公效率的神器)

上学时,总有些同学给人的感觉是没怎么努力学习,但是成绩却名列前茅,当时感觉就是因为那些同学聪明,自己太笨。

1532
来自专栏EAWorld

企业级应用的高可靠运维实践与DevOps(一)

? 很高兴今天有机会在这里与大家交流,也要感谢普元提供的交流平台和普元CTO焦总的邀请。我今天与大家分享的主题是关于企业级应用的可靠运维实践的这个话题。 ? ...

4299
来自专栏SDNLAB

为什么OpenFlow没有被广泛采用?

可操作性与可扩展性问题 OpenFlow的终端用户以及市场人员明确指出其技术问题:操作复杂,很难测试以及扩展。 这不是OpenFlow的核心技术问题,但确是其...

3516
来自专栏Java面试通关手册

说几件小事

熟悉我的朋友应该知道,从大概3个月前,我开源了一个后端(偏Java方向)的学习/指南文档。Github地址为:https://github.com/Snailc...

941
来自专栏PPV课数据科学社区

22个对于数据科学家来说容易犯的错误

对于软件工程师或数据科学家来说,下列错误是很容易犯(随意顺序):列表如下: 在团队没有尽自己的能力出力。 把自己看成以为天才。 使用一些上司看不懂的专业...

3546

扫码关注云+社区

领取腾讯云代金券