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

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

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

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

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

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

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

学习何以重要

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

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

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

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

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

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

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

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

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

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

行动的重要性

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

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

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

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

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

平衡方法

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

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

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

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

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

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

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

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

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

知行合一

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

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

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

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



作者:Dustin Ewers

日期:2018-10-12

原文:How to Balance Knowledge and Action



写点文字,画点画儿,记录成长瞬间。

微信公众号「瞬息之间」,既然遇见,不如同行。

原文地址:https://www.cnblogs.com/mindwind/p/10216726.html

时间: 2024-08-30 17:11:27

知行:程序员如何保持二者的平衡的相关文章

程序员如何平衡工作与生活

中国职场人的工作生活失衡很常见,IT行业更是"重灾区".而在IT行业中程序员是近年来受关注度很高的一群人,他们似乎一直以"钱多话少加班晚"成为被大家调侃的对象,稀有的女程序员也被人们贴上了"为了工作不修边幅"的标签.事实上,从随机调查到的女程序员那里,我们发现了她们每个人都有独特的工作生活平衡技巧.这些是可以供男程序员借鉴的. 注重团队协作 在男人主导的工作领域有一些女生参与其中,看起来更符合"男女搭配,干活不累"的设定.从接

程序员讨论《黑客帝国》(二)平衡和进化

接上一篇<真实与虚拟>. 我有点纳闷,机器之主在他创造的虚拟世界中拥有无上的能力和权威,那他想解决任何问题不都轻轻松松吗?他想毁掉Zion,一个命令而已,就如同拔掉自家后院的杂草一样简单,又何必让机器如此大动周章,甚至屈膝让尼奥去帮忙? 这让我想起了一个有意思的问题,在我们设计的程序中,能量和物质是守恒的吗? 绝大多数人会拍脑袋说,当然不守恒,我设置一个变量value,可以让它等于任何值,从0到正溢出皆可.不过,当设计一款网游的时候,你会发现一些有趣的事实,如果玩家数量不变,而新的更好的装备不

程序员到项目经理:从内而外的提升

转自:http://www.cnblogs.com/watsonyin/archive/2012/09/10/2679528.html 目录 从程序员到项目经理(一):为什么要当项目经理 从程序员到项目经理(二):升职之辨 从程序员到项目经理(三):认识项目经理 从程序员到项目经理(四):外行可以领导内行吗 从程序员到项目经理(五):程序员加油站,不是人人都懂的学习要点 从程序员到项目经理(六):程序员加油站 — 懂电脑更要懂人脑 从程序员到项目经理(七):程序员加油站 — 完美主义也是一种错

《C和C++程序员面试秘笈[精品]》-笔记

2015-12-16 原文:在C++中可以通过域操作符"::"来直接操作全局变量 2015-12-16 原文:后缀式(i++)必须返回对象的值,所以导致在大对象的时候产生了较大的复制开销,引起效率降低.因此处理使用者自定义类型(注意不是指内建类型)的时候,应该尽可能地使用前缀式递增/递减,因为它天生"体质"较佳. 2015-12-16 原文:内建数据类型的情况,效率没有区别. 自定义数据类型的情况,++i效率较高. 2015-12-16 原文:当表达式中存在有符号类

高效程序员的45个习惯

本文转载 <高效程序员的45个习惯>一书 目录 第1章 敏捷---高效软件开发之道 第2章 态度决定一切 1.做事 2.欲速则不达 3.对事不对人 4.排除万难,奋勇前进 第3章 学无止境 5.跟踪变化 6.对团队投资 7.懂得丢弃 8.打破沙锅问到底 9.把握开发节奏 第4章交付用户想要的软件 10.让客户做决定 11.让设计指导而不是操纵开发 12.合理地使用技术 13.保持可以发布 14.提早集成,频繁集成 15.提早实现自动化部署 16.使用演示获得频繁反馈 17.使用短迭代,增量发布

StackOverflow程序员推荐:每个程序员都应读的30本书

“如果能时光倒流,回到过去,作为一个开发人员,你可以告诉自己在职业生涯初期应该读一本,你会选择哪本书呢?我希望这个书单列表内容丰富,可以涵盖很多东西.” 很多程序员响应,他们在推荐时也写下自己的评语.以前就有国内网友介绍这个程序员书单,不过都是推荐数 Top 10的书.其实除了前10本之外,推荐数前30左右的书籍都算经典,伯乐在线整理编译这个问答贴,同时摘译部分推荐人的评语.下面就按照各本书的推荐数排列. 1. <代码大全>史蒂夫·迈克康奈尔 推荐数:1684 “优秀的编程实践的百科全书,&l

Java程序员应该了解的10个面向对象设计原则

面向对象设计原则: 是OOPS(Object-Oriented Programming System,面向对象的程序设计系统)编程的核心,但大多数Java程序员追逐像Singleton.Decorator.Observer这样的设计模式,而不重视面向对象的分析和设计.甚至还有经验丰富的Java程序员没有听说过OOPS和SOLID设计原则,他们根本不知道设计原则的好处,也不知道如何依照这些原则来进行编程. 众所周知,Java编程最基本的原则就是要追求高内聚和低耦合的解决方案和代码模块设计.查看Ap

为什么国外程序员爱用 Mac?

from http://www.vpsee.com/2009/06/why-programmers-love-mac/ Mac 在国外很受欢迎,尤其是在 设计/web开发/IT 人员圈子里.普通用户喜欢 Mac 可以理解,毕竟 Mac 设计美观,简单好用,没有病毒.那么为什么专业人士也对 Mac 情有独钟呢?从个人使用经验来看我想有下面几个原因: 1.Mac OS X 是基于 Unix 的.这一点太重要了,尤其是对开发人员,至少对于我来说很重要,这意味着Unix 下一堆好用的工具都可以随手捡到.

程序员,你为什么值这么多钱?

听说一段时间不加薪,人就会开始思考起和工资有关的问题.消费水平又提升了,能力也进步了,经验也更多了,怎么还没涨工资呢? 近两年,有了点余钱就开始考虑起投资来,比如:投资股票首先需要判断的就是关于公司价值和价格的关系.回到个人身上,似乎工资也就是个人价值在市场上的一个价格.那我们的工资是如何被定义或确定的? 因为我的程序员职业背景,下面就以这个职业为例来分析下这个问题. 表象与实质 工资的高低给我们的感觉似乎和你的技能.经验呈一个正比关系.毕竟每次找工作面试的时候,考察的都是候选人的技能.经验相关