10年学到的编程经验总结

我作为一个web开发者的旅程始于2000年,那时我还只有21岁,我依然可以清楚地记得那些日子里激荡在我内心的感觉。如果一定要找一个词来形容的话,我觉得那是——愉悦。

我不需要担忧时间、最后期限和轻重缓急,也不需要担心生产力。我所要关心的只有一件事,那就是学习,尽可能多和尽可能快地学习。

我急急忙忙地前进不是因为时间期限这些事情,仅仅是因为这让我感觉良好,让我觉得有趣。学习如何构建东西,发现一个全新的世界让我由衷地兴奋不已。

一晃几年过去了,时间来到了2006年左右,我开始认真对待编程。我开始作为一名web开发人员参与到专业的工作中。也许你会认为这样做毁掉了我所有的乐趣,我不怪你。这无疑是一种截然不同的体验。

回首过往,我作为专业的web开发人员的旅程一点也不糟糕,虽然过程并不总是一帆风顺。对于我们许多人来说,工作是为了生活,但如果你愿意的话,工作并不会阻碍你感到快乐。

20160419145109707977

下面我要分享我在这旅程中收获的可以改进工作/生活平衡,并让工作趣味盎然的一些内容。

让堆栈滚吧!

热爱你每天使用的工具自然是好的,特别是如果你已经使用了很长一段时间。总是搜寻让自己感到舒服的东西是一种天性。但事实是,你现在正在使用的堆栈,并没有你想象得那么重要,下面我会告诉你原因。

大多数新的编程工具被构建来解决前人未能解决的具体问题。显然,随着时间的推移,我们试图解决的问题会发生变化,从而使得工具生态系统很可能也发生变化,就像不断进化的生命体会努力适应新的环境一样。

我必须承认,我也很惭愧于忽略铺天盖地的宣传,只愿意舒舒服服地使用我久经沙场的工具。我也倾向于认为让别人花时间经历所有的痛苦一步一步往上爬地到达新技术,才能更有效地学习,然后当在未来的某个时候,如果新技术被证明是好的,那么我自己采取的策略是快速掌握它。

虽然这些做法是完全可以理解的,但我在这里要告诉你的是,这是愚蠢的做法。事实上,你应该做截然相反的事情。

我鼓励你花时间去学习又新又闪亮的语言、框架、模式,不管什么都好,因为那是你成长的方式。那也是你拓展知识的方式,也是使得工作变得令人愉快的地方。

因此,你应该坚持的一个非常重要的事情,是学习。挑战自我去探索新的东西,正是这些使得生活和工作有了乐趣。

拥抱不舒服的状态!

可能只是想想你需要搞定那么一大堆的工作事务以跟上大家的节奏,你就已经觉得不舒服了。但其实,你不应该这样想。

走出舒适区,进入未知领域是迄今为止最好的学习方法。坚持老一套不会教你很多你所不知道的内容。

你需要从不同的角度思考,你需要用不同的工具解决不同的问题,你需要扩展你的知识领域,你会享受于其中的每一分钟。相信我。

不惜一切代价远离压力!

像那样处于一种不舒服的状态并试图紧跟行业发展的速度,是有负作用的,因为每一天都会有数量庞大的新信息汹涌而至。你常常会觉得白天没有足够的时间去做你想要做的一切事情。没错,这样的确会让你没有充裕的时间做事。

不过真实的情况是这样的,只有屈指可数的一些内容能够在给定的任何时间激发你的热情,并且如果你能集中注意力到那些事情上的话,那么骤然之间,你会得到一个更易于管理的范围。

我要与你分享的是我的范围管理系统。这个系统基于GTD(Getting Things Done)方法和每日目标设置。

长期目标

我使用的主要的衡量单位是长期目标,这里的长期目标指的是那些我想要在一段相当短的时间内完成的目标,时间范围从几天到几周。

长期目标的一个例子是“阅读《Javascript Pattens》”或“为UtmTag.com建立预订系统”。这些都是长期的,因为很明显你不可能一口气做完。

如何定义长期目标的一个非常重要的方面是,有一种循序渐进的感觉。我的意思是每一个长期目标都有一个我可以明确的结束日期。

因此,长期目标不是“我要赚大钱”,因为没有明确的方法来衡量这个过程和进展(我强烈建议阅读David Allen写的《Getting Things Done》这本书,如果你想要知道在实际中关于如何定义目标的话)。

在前面的例子中,我可以轻松地说,“好吧,这本书我已经看了有一半了,所以我完成了进度的X”,或者“我可以在一两周内完成这个系统”。

在长期目标上取得进展是一个重要的激励因素。因为如果不能衡量进度的话,我们很容易中途放弃。

每日目标

那些长期目标在展望宏伟蓝图的时候很有用,但是除此之外,还有一个神奇的秘诀。要想每天都按照预先规划前行,最重要的一个技巧是每天都有充足的动力去完成一部分长期目标。这就是为什么我喜欢将长期目标联合每日目标一起使用。

每日目标要小得多,正如其名,其范围是一天。所以任何需要超过一天时间才能完成的任务都不是每日目标,不过可以通过再次细分使之成为每日目标。

如何定义每日目标甚至比定义长期目标更重要。你需要实际安排每天能完成的工作量,同时要考虑到一些你不能控制的事情,例如跑腿和其他事务。

我建议从很小的工作量开始(例如2H小时/天),看看自己能否在这个基础上增加工作量而不会觉得不堪重负。

每日目标的一个例子是“在UtmTag.com上花2小时编码”,其长期目标是“为UtmTag.com建立订阅系统”,每日目标能够使得我们静下心来每天有一定的进展。

相比于长远目标,这些每日目标似乎比较渺小,但是一点点累计起来并且当你再回过头来看的时候,你会发现,咦,原来你的长期目标已经完成了一半。

自得其乐

曾经有段时间我希望时间能一直停留在周末,这样我就不用回去上班了。也有一段时候,我迫不及待地数着假期结束,以便于回到工作岗位上。

那么,为什么会有两种截然相反的心情呢?会出现第一种感受是因为你不得不做一些你不喜欢的事情,而第二种则是因为你兴奋不已以致于没有顾虑其他。

很明显,第二种感情是我们大多数人所希望的,那么我们可以做些什么呢?我发现了兴奋这种感情的一些特点,并且我正在试着融入我每一天的工作中。

什么让工作变得有乐趣?

在你考虑将乐趣融入到你的日常工作之前,你必须先定义对于你而言乐趣意味着什么。

对我来说,乐趣是指通过完成我以前认为不可能的事情——归咎于感知到的复杂——而实现的某种启迪。

因此,挑战自我去探索和学习新的东西,而不是工作于那些陈词滥调的任务,使我更享受于我的工作。

这让我明白了我应该少做那些没有这种特点的工作,多做那些有这些特点的工作。

我享受的工作

当然,我享受的工作,别人可能会觉得难以苟同,这很正常。但是我依然想分享一些东西,这些东西让我觉得自己像一只快乐的小蜜蜂,你可以借鉴我的点子,制作出你自己的清单。

  • 工作于我自己的项目/思路
  • 工作于促使我学习的项目
  • 致力于开源
  • 探索新的编程技术
  • 探索新的编程语言
  • 磨砺我的编辑技巧
  • 摆弄我的编辑器配置

结论

请记住,你选择做什么样的工作,其实就是选择了什么样的生活和什么样的工作感受,这完全取决于你。所以,如果你想享受你的生活,那么你酒应该喜欢上你的工作。

真心希望这篇文章能帮助你,并且我非常期待听听大家是如何改善工作/生活平衡的。

英文原文:Lessons Learned From 10 Years of Programming

中文译文:http://www.codeceo.com/article/10-years-of-programming.html


关注我

我的微信公众号:前端开发博客,在后台回复以下关键字可以获取资源。

  • 回复「小抄」,领取Vue、JavaScript 和 WebComponent 小抄 PDF
  • 回复「Vue脑图」获取 Vue 相关脑图
  • 回复「思维图」获取 JavaScript 相关思维图
  • 回复「简历」获取简历制作建议
  • 回复「简历模板」获取精选的简历模板
  • 回复「加群」进入500人前端精英群
  • 回复「电子书」下载我整理的大量前端资源,含面试、Vue实战项目、CSS和JavaScript电子书等。
  • 回复「知识点」下载高清JavaScript知识点图谱

每日分享有用的前端开发知识,加我微信:caibaojian89 交流