查看原文
其他

学编程不如学自动化?

Erik Dietrich CSDN 2019-12-18
全民编程时代,你是否想过编码的最终目的何在?或许是为了更方便地实现一些事情,或许是为了提高效率,然而与其一步一步自学编程,本文作者表示,不如直接利用已有的工具来实现自动化。

作者 | Erik Dietrich
译者 | 弯月,责编 | 屠敏
出品 | CSDN(ID:CSDNnews)
以下为译文:
还有人记得几年前纽约市长决定开始学习编程吗?不仅仅是他一个人,那可真是一段全民皆学编程的全盛时代。我记得有报道称明星球员Chris Bosh鼓励自己的孩子学编程以造福人类。人们突然间迸发出一种不可思议的情绪,认为所有人都应该放弃编程之外的任何追求,转而学习Ruby或其他编程知识。如果2012年的时候Andy Warhol还活着的话,他肯定会说:“在未来,每个人都会写15分钟的代码。”
Jeff Atwood写了一篇有趣的文章来反驳这种时代思潮,题目为“千万不要学习编程”(http://blog.codinghorror.com/please-dont-learn-to-code/)。这篇文章涵盖了很多基础的观点,同时还提出了一些有趣的观点,但总体论点无外乎是,“不要把写代码当成目标,你的目标应该是学习如何解决问题”。我认为这是一个非常优秀的哲学观点,但我想补充一点细节。
以前,我曾写过一篇文章来表述我认为培养解决问题的能力的重要性,我的这篇文章标题叫做“解决问题的人”(https://www.daedtech.com/job-titles-be-like-the-wolf)。所以,请不要以为我不同意他的观点,我也认为许多程序员过于沉迷于代码。我认为这不是一个非常普通的问题。然而,与此同时,我认为纽约市长、Chris Bosh和其他人都没有真正解决这个问题。具体来说,这个世界越来越趋向技术化,这意味着很多追求已被自动化淘汰,而其他方面的追求也需要越来越高的技术水平。我的未婚妻是专业的文字编辑,如果她能够精通HTML和CSS,就可以更轻松地完成自己的工作。
因此,我与Jeff一样认为人们学习编程,是因为他们觉得编程可以赚到很多钱,或者因为他们想成为编写很多代码的人,但我认为我们不能简单地说:“除非你是认真的而且愿意花费数年时间磨练自己的编程技术,否则就不要碰编程。”快速发展的科技格局吸引了越来越多的人义无反顾地加入到科技达人的大军中。
关于这个主题,我想提出一个不同的建议。我认为并非每个人都需要学习编程技术。我认为每个人都需要学习并理解如何实现自动化。即便不是亲历亲为,至少能够懂得如何实现自动化,并讨论是否值得付出这类的努力。

生活中的自动化

下面我来举例说明。晚上,我与一位朋友一起制作了一些PPT的课程资料。我们制作的幻灯片主要是图片和一些附加说明的文字(字体很大)。我们将图片粘贴到幻灯片中,调整一下大小,然后用Mac的触控板将图片居中。这时,他说:“PPT中应该有一些快捷键,只需点击就可以将图片从垂直和水平方向上自动居中。”
这就是那一刻有关自动化的构想。PPT中的居中是一种无脑、繁琐又耗时的工作,是一个很好的自动化对象。想象一下,你需要通过拖拽和细微的操作调整图片,希望看到那条表明图片居中的线出现。但是,这条线找起来如此麻烦,所以你需要不断尝试,并在心中默念:小心,快到了!慢点!完了!错过了。打起精神,再来一次!
当然,找到自动化的对象后,我们的工作还没有结束。我提倡的人才(精通自动化的人才)需要做如下评估,最后再确定自动化。
PPT是否提供了这样的功能,还是说只是我们对此一无所知?
经过一番快速的谷歌搜索后,我们发现PPT好像并没有这样的功能。如果有这样的功能,那么肯定有博文说只需两步就能搞定:“第一步,按下这个神奇的按钮;第二步:没有第二步。”但是,也不能排除PPT确实有这种功能的可能性。 
我们应该深入研究吗?
现在不行。我们的幻灯片就快完成了。但退一步想,确实值得深入研究。
从长远来看,我们应该深入研究吗?
很难说。我不确定一生中有多少时间浪费在这个问题上。可能确实浪费了一些时间,但我并不是PPT的热心用户,因此可能要过很多年才能帮我省出几个小时。而谁知道解决这个问题需要花费多少时间呢?
从长远来看,为了人类我们应该深入研究吗?
嗯……那肯定应该吧。单我一个人在使用PPT数年后,就会因为这个问题浪费几个小时,那么整个人类可能只需几微秒就会在这个问题上浪费几个小时。就在此时此刻,很多人就在PPT上与这个问题苦战。
如果我们做出了解决方案,可以卖钱吗?
嗯,我很怀疑。但是,也许也会有一些微不足道的收入。或者,我们也可以做出解决方案,然后捐献出去,赚一个好名声。 
那么好,接下来该怎么做?
我们可以在合适的时候,例如在机场大厅等飞机的时候,挑一个小时出来研究这个问题。这是一个很不错的临时任务,看看我们能否在有限的情况下解决这个问题。能否在空白的幻灯片上按下“ctrl-E”快捷键就可以实现水平居中?如果可以,那么我们能否找到一种方法来垂直居中,然后将两个快捷键结合起来?如果可以,那么只需一点配置即可解决这个问题。我们都知道我们成功了,因为只需单击一个快捷键,就可以在空白的幻灯片上将某个图片从水平和垂直方向上居中。如果这个小测试通过了,那么我们就可以写一篇博客文章,晒出我们的成果,然后继续其他场景的研究。

外行的解决方案

我想在此指出一些问题,虽然表述起来有点曲折。首先,我们需要找出这个艰巨的任务,以及一个自动化的备选方案。找出图像居中时的确切坐标是一项极其适合计算机的工作。之后出现的一系列问题包括有可能已有现成的解决方案的可能性,那么就没有必要想出一个新的解决方案;或者,想出一个新解决方案耗费了太多时间,与其带来的收益相比得不偿失。在软件开发领域,这个阶段的工作有各种名称,例如“需求发现”、“需求分析”和“Sprint 0”等等。
之后,我们可以制定一个暂时的行动计划以及一些风险缓解措施。我们需要付出一些努力来看清我们能做什么,我们需要限制这个阶段付出的努力,以免一发不可收拾。接下来,我们需要制定一个具体的策略,将后面的大量工作分解成能够提供一定增量价值的小任务。软件开发公司称之为敏捷方法(或精益方法)。最后,尽管我们还没有编写实际的代码,但我们清楚实现的方法,而且还对最后的成功有清晰、可验证的描述。在企业中,这称为“验收测试驱动开发”(Acceptance Test Driven Development,即ATDD)。
但是,请不要忘记用术语及时地和程序员展开讨论。更为重要的一点是,成功的软件开发项目(包括代码、IDE编译器等)只是成功的自动化项目的特例。所有工作都可以自动化,甚至是一些非常简单的工作,而无需实际编写任何代码。从这个角度来看,Jeff的观点绝对正确。程序员喜欢写代码,但是编写代码并不是解决问题时的首要目标。
从整个人类历史的长河来看,重复工作就是一种“有痛苦才有收获”的方法。低下头,融入并完成繁琐的工作是有价值的。但是在整个人类历史的大部分时间里,我们都没有计算机。事实证明,计算机确实非常擅长执行重复性的琐碎任务,这种任务需要精确性,却不需要判断力。计算机的这种能力远胜于我们,因此让计算机来完成这样的任务更有意义。
我们不能简单地认为将来每项工作的完成都需要依赖复杂专业的计算机应用程序。但是,鉴于计算机的普遍性,我们完全可以认为,将来面对每项工作时,我们都需要分辨出哪些任务更适合人类,而哪些任务则更适合计算机。我们至少要学会分辨哪部分工作浪费了时间。接下来,就需要发挥你的创造力,利用你掌握的工具(例如搜索解决方案、利用应用程序等)来实现自动化。更进一步,你还可以挽起袖子学习一些编程的知识,以帮助你继续前进。因为,尽管纽约市长无需编写任何代码,但如果该市的IT部门出现问题,他能够参与其中并不是一件坏事。
原文:https://daedtech.com/dont-learn-to-code-learn-to-automate/
本文为 CSDN 翻译,转载请注明来源出处。
【End】
Java系列面试成长课来了!8年经验面试官教你如何顺利拿到心仪的Offer!第二课是Java数据库面试,想了解小白与高级开发工程师的差距?立即扫码报名学习:

热 文 推 荐 

☞国产数据库年终大盘点!
GitHub 有望在中国开设子公司?
☞开发者请注意!2020年的大前端发展趋势已出炉!| 原力计划

扎心!12 月全国程序员工资统计,半年工资仅涨 500 元!

数学学渣必备!拍照上传,分步求解,微软解题神器拯救你

扛住100亿次请求——如何做一个“有把握”的春晚红包系统

点击阅读原文,即刻报名!
你点的每个“在看”,我都认真当成了喜欢

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存