知行:程序员如何保持二者的平衡

网上并不缺少告诉你 “采取行动” 的内容,很大程度上,它们希望你忘记学习并专注于行动。这些帖子的出发点也许是善意的,但并非事情的全貌。

光学习不行动是没用的,但只行动不学习同样如此。程序员是知识工作者,这意味着学习是我们工作的必要部分,然而这需要我们去创造学习机会,关键在于平衡。

如果你屁股一坐在那不停的收集文章却从不使用这些信息,那么你就需要偏向行动;但是,如果你盲目的进入行动,你也不会走得太远。

曾经多少次,你为那些无知且鲁莽的程序员创造的项目进行善后清理,收拾残局?他们可能不仅仅是缺乏技能,也可能是不愿意学习。不熟练的程序员也许会给团队带来负面的生产力,特别是那种不假思索就大干快上类型的程序员。

学习和行动是相辅相成的。学习太少会导致效率低下和低质量的软件,行动太少,则没有结果或结果微乎其微,忽略不计。作为程序员,为了最大化你的成效,需要在获取知识和使用它们做有用的工作之间取得平衡。

在这篇文章中,你会学会这种平衡的艺术。最后,你将会拥有一些具体的策略来改善你的工作与智识。

学习何以重要

首先要提醒大家,我们只有这么多时间。不仅是说一天我们只有 24 小时,而且我们也只有有限的一点点富有有效、保持专注的时间。即使你能把所有 16 小时的时间都花在开发软件和学习上,但在那之前你恐怕早就精疲力竭了。

大多数高效的作家和艺术家每天只花几个小时工作在他们的手艺上,即使是那些技艺超群之人,每天也只花几个小时进行刻意练习。在这两种学习中,你所能投入的精力是有限的 —— 同样,行动亦如此。

这一限制强调了在你使用时间时对效率的需求,面对生活中的所有需求,多数人都很难找到他们一天内能工作的最大有效时间。即使你能很好的管理你的时间,接近最大的极限,你仍然需要注意如何去分配时间。(这是学习的主要好处之一,知识可以使你更有效率)

对给定的程序库或编程栈知道的越多,就越能绕过问题,你也就不需要花那么多时间在 StackOverflow 上 “钓” 答案。

此外,学会如何管理时间,清晰编码,并更好的沟通,可以使你在其他方面更有效率。用对话来解决复杂的问题通常比用代码更快。我有时会称之外 “外交决议”,这是我最喜欢的修复 Bug 的方法(译注:Bug 有时就是不同人对同一个表象的不同理解)。你作为程序员碰到的许多问题都是由于缺乏清晰性导致的。

学习也会扩张你的技能集。对新技术的了解意味着你可以构建不同类型的软件,这意味着你能从维护它们到架构它们。知识扩展了你的能力。

技术总是处在变化之中,我们需要花时间了解行业的当前趋势来规划我们的职业生涯,而软件开发就是这样一种紧跟变化的职业。

程序员的努力奋斗使我想起了《爱丽丝梦游仙境》中 “红桃皇后” 的一句话:

亲爱的,在我们这个地方,你必须尽可能快的奔跑,才能留在原地;如果你想去任何地方,你必须跑得比那快两倍。

我们行业发展很快,我们需要保持学习,否则我们将被抛下。

行动的重要性

在前文中,我批评那些呼吁行动而不是学习的人,但这并不意味着行动是不重要的。行动是必不可少的。

你拥有多少知识并不重要,假如你都不使用它,那就是毫无意义的积累。学习的目的是改进行动,而不是在程序员的知识面上获胜。

你也许读过数百本编程书籍,但如果你晚上和周末都窝在沙发上追剧,而不是去创建你的业余项目,那读过的这些书都无关紧要了。如果你的工作中都一直使用相同的技术、技巧和实践,那也无所谓了。只有当你吸取了学到的所有教训,并试图将其应用到现实世界中时,你才能取得进步。

行动巩固学习,行动也触发回忆,这是学习的关键部分。例如,也许你在网上看过二十多个视频课程,但这并不重要:你不会了解一项技术,除非你真正用它来构建某种东西。如果我没用某个技术构建过至少算是 Demo 的项目,我是绝对不会放在我的简历上的。

人们并不关心你知道些什么,人们只关心你能做什么。知识是有助于行动的,但它不应取代行动。别做一个受过高等教育的电视迷,把你辛苦习得的知识运用起来吧。

平衡方法

在这点上,你应该理解平衡的重要性。现在,你将学习一些具体的策略,将这种平衡带入自身的生活。

第一个策略是成为一名更高效的学习者。花点时间学会如何学习,学得越快,就越能腾出时间来采取行动。作为程序员,学习是我们所做工作的重要部分,花时间学习如何学习将给你的职业生涯带来巨大的红利。

除了学习如何学习之外,在你的日程中找出额外的时间,通过把一些跑腿的差事和其他 “死” 时间与学习时间合并起来。你没法用这些时间来编写软件,所以你可以自由的利用这些时间来学习。我在通勤时间听播客和有声书,做家务时我也会听。在过去的几年中,我用这种方式已经消化了数百本书,要不还真没那么多时间去读。我在排队时也阅读文章,这些时间通常会被浪费掉,让它们成为有用的学习时间。

提高整体效率的另一种方法是更加小心地处理所消费的信息。避免时间被社交媒体和低质量的信息娱乐所吞噬,很多提供这类信息的垃圾网站会成为你时间的黑洞,而给你的生活带来的价值微乎其微。你不仅节省了时间,也减轻了压力。大多数 “信息垃圾食品” 站都是依赖于触发压力反应。压力会降低你的创造力,让你更难建造东西。限制垃圾信息,会给予你更多时间去学习和行动。

在你开始学习一个主题之前,要知道你需要从中得到什么,弄清楚你要用这些知识采取什么样的行动。例如,假设你对虚拟现实(VR)开发感到好奇,记下来你想用这些知识做什么。你是想要构建一个很酷的 VR 应用呢,还是想在下次和你的开发小伙伴谈论 VR 时能有些有趣的话题可说?相应的,根据不同的目的调整你的学习计划。如果你只是想跟上 VR 技术的最新发展,你可以去订阅一些相关的博客,到此为止也就够了。通过只从特定资源和主题获取相关的内容,你能够节省大量的时间。

另外一个节省时间的方法是练习 “即时” 学习。即时学习,是指你花时间学习的东西立刻就会用在当前的项目或目标上。与其积累大量可能没什么用处的技能,不如把时间花在学习与当前项目相关的事情上。把你的学习和行动直接绑定起来,这种方法在那种 “潮流涌动” 的软件开发领域尤其有用,就像 JavaScript 的世界。

当你在创造一些东西时,定期评估什么样的信息会让你进展更快。当你是在胡乱地摆弄一个问题而非用你的头脑解决它,就要特别注意了,这时候,看看书可能比用头砸键盘要容易得多。

最后,在学习和行动之间取得平衡的最好方法就是同时做这两件事。每当我学到一些东西,我就把它和某个项目关联起来。这可能是一些公开的东西,比如博客文章或者技术演讲,或者使一些私有的东西,比如参考实现。

总而言之,你不会真正了解一项技术,直到你用它来建造了一些东西。一定要把你的学习和一个项目关联起来,才会真正把知识烙印下来。

知行合一

学习和行动是同一枚硬币的两面,为了获得最好的职业生涯,你要二者兼顾。

在学习和行动之间走钢丝是很困难的,但有几种策略是可以做到的。从如何学习有效的学习,到关联学习与行动,你职业生涯的两个方面便能得到平衡。

首先,坐下来考虑一下你的学习计划。弄清楚你想做什么,你需要什么技能才能达到目的。然后为每一项技能安排好学习计划,把计划渗入到一些项目中以加强你的学习。

未来,你会感谢当下的你自己的。


作者:Dustin Ewers
日期:2018-10-12
原文:How to Balance Knowledge and Action


写点文字,画点画儿,记录成长瞬间。
微信公众号「瞬息之间」,既然遇见,不如同行。

posted @ 2019-01-03 20:31  mindwind  阅读(992)  评论(1编辑  收藏  举报