JQuery 之父: 好好学习,天天编码

去年秋天我的业余编程项目(coding side projects)到了一个紧要关头:没有充足的进度,也不能够找到一种方法在既不牺牲我可汗学院(Khan Academy)高效的工作的前提下完成更多的事情。

如何处理我的业余编程项目是有一些严重问题的。我最主要是在周末或者某些工作日的晚上编写代码。如同结果一样,这种策略并不适合我。周末我拖着巨大 的压力尝试完成尽可能多的高质量代码(如果我没能完成我会认为自己很失败)。这样想有一个问题,因为没有什么能够保证我每个周末都有空,并且想整个周末都 写程序而不是抓紧机会放松或娱乐。

每周写代码之间空挡太长也是个问题。你很容易忘记在做什么、什么还没做完(即使做记录也于事无补)。更不用说如果你错过一个周末,你就会面对长达两周的间隔。大量两周或者更多周的思维转换可是致命的(我的很多业余项目都由于精力不足而终止)。

我被Jennifer Dewalt去年完成的工作震惊了,她在180天内构建了180个网站以学习编程。受到她的启发,我强迫自己尝试一个相似的策略:每一天都要进行我的业余项目。

我决定给自己制定一些规则:

1.我必须每天都写代码。我可以写文档,博客或其他的东西。但必须依附于我所写的代码。

2.代码必须是有用的。不能代码微调,不能代码重排,且尽量不要重构。(这些事情都是允许的,但不作为当天特有的工作。)

3.所有代码必须在午夜前写。

4.代码必须开源且放在Github上。

其中的一些规则有点武断。虽然从技术上来讲代码没必要非得在午夜前写,但我想要避免熬夜太久写糟糕的代码。而且代码没必要开源放在Github上。这只是强迫我写代码时多上点心(想想重用以及决定开发过程早点写模块)。

到目前为止我进行得很顺利,我已进行了20周的连续工作。我想要写下这些是因为这方法完全改变了我的编码方式并且对我的生活以及心智都有实质性的影响。

有这些规则后,习惯的改变导致了很多有趣的事情发生:

最少可行代码(Minimum viable code).

每天我被强迫写至少30分钟的代码。(少量时间内很难写出有意义的代码,尤其是在记起前一天写到哪里后)有一些工作日我写得多点,但通常少于1小时。而周末,我有时候能一整天当程序猿。

编码即为习惯(Code as habit).

其实重要的一点是我并不特别在意Github上的(负面)聊天内容是如何被他人理解的。我认为这是从这个实验中我学到的最重要的东西:这是关于在你 一生中为了你自己而进行的改变而非为了让你的工作能讨好他人而进行的改变。这也适用于任何形式的节食或锻炼:如果你不在意提高自己,你是永远也不会成功 的。

抵抗焦虑(Battling anxiety).

在开始这个实验之前我经常担心不能够完成足够多的工作量或者取得足够的进展(这两点很难度量,因为我的业余项目没有明确的截止日期)。我发现想要取 得进展与实际取得进展是同样的重要。这让我豁然开朗。一旦我开始每天取得持续的进展,焦虑就开始消失了。我对我不断完成的工作量感到欣慰,并且我不再过度 疯狂地期望完成更多的工作。

周末(Weekends).

在周末完成的任务曾今对于推进进度是绝对重要的。的确有地表性地,这是我完成业余项目显著代码量的唯一时间。但现在并非如此,不过非常好。在周末完 成我一整周所期望的有价值的内容只能以让我以失望告终。我极少能够完成我想要完成的所有工作,而这强迫我放弃其他周末我喜欢的活动(例如,吃中式点心,参 观博物馆,去公园以及和我的小伙伴在一起玩等)以完成更多的工作。虽然我非常相信业余项目真的很重要,但总之,他们不应该阻碍你的平时生活。

发呆(Background processing).

每天都写业余项目的一个有趣的副作用就是当前业余项目的任务会频繁地在你大脑中浮现。这导致当我走路,洗澡或则进行其他不耗费脑力的活动时,我总是 在想接下来我要写些什么代码并且寻找好的方法来解决问题(译者注:别人看来就是发呆)。这在我每周或隔一周写一次代码的时候从未出现过。相反这些时间花费 在了思考其他的一些任务上,通常是懊恼自己上周没能完成业余项目的工作量。

思维转换(Context switch).

继续业余项目时总是会有思维转换代价的。不幸的是,当一整周都在干其他任务的工作时,这转变是及其困难的。就每天都写代码而言是非常有利的,因为工作间歇时间更短。这使得回忆起正在做什么更容易。

工作权衡(Work balance).

这个改变最重要的一方面是直接学会了如何更好地权衡工作/生活/业余项目。由于明确了我每天都会工作在业余项目上,我必须更好地平衡我的时间。如果 我计划晚上外出并且会很晚才回来,那么我会在一天中早些时候,既在开始我的可汗学院的主要工作前,完成我的业余项目的工作量。而且如果我没有完成我的任 务,并且在外待得很晚,我会赶回家完成他而不遗漏一天。我应该注意到了我拥有更少地时间可花费在爱好上(例如版画),但这是我需要面对的合理的折衷。

他人看法(Outward perception).

把这个新的习惯告诉别人让我更受益。我的小伙伴理解我需要每天完成这个工作,因此有的时候活动安排也很迁就我的工作。能够说“没问题,我们可以出去玩/看电影/等,但我等会儿要当会儿程序猿”并且能够被理解和考虑在内是相当欣慰的。

能写多少代码?

我简直不敢相信我上个月写了多少代码。我制作了一堆新的网站,重写一些框架,并且创建了大量新的节点模块(node modules)。我写了如此的多,以至于我有时候都忘记了我到底干了些什么,前一周的工作都好像是很遥远的记忆样。我对我所完成的工作量是及其满意的。

我认为这个习惯改变是一个很大的成功并且希望能尽可能地继续下去。与此同时,我将倾尽所有将这个策略推荐给其他希望让其业余项目有实质进展的人。

文章转载自 开源中国社区 [http://www.oschina.net]

时间: 2024-08-31 15:41:34

JQuery 之父: 好好学习,天天编码的相关文章

6 个值得好好学习的 JavaScript 框架

常言道,条条大路通罗马,可是那一条适合我呢? 由于用于构建前端页面等现代技术的出现,JavaScript 在 Web 开发社区早已是如雷贯耳.通过在网页上编写几个函数并提供执行逻辑,可以很好的支持 HTML (主要是用于页面的 表现 或者 布局).如果没有 JavaScript,那页面将没有任何 交互特性 可言. 现在的框架和库已经从蛮荒时代崛起了,很多老旧的技术纷纷开始将功能分离成模块.现在不再需要在整个核心语言中支持所有特性了,开发者允许所有用户创建库和框架来增强核心语言的功能.这样,语言的

js与jQuery 获取父窗、子窗的iframe

 本篇文章介绍了js与jQuery 获取父窗.子窗的iframe.需要的朋友可以过来参考下,希望对大家有所帮助 在web开发中,经常会用到iframe,难免会碰到需要在父窗口中使用iframe中的元素.或者在iframe框架中使用父窗口的元素   js   在父窗口中获取iframe中的元素    1.   格式:window.frames["iframe的name值"].document.getElementByIdx_x("iframe中控件的ID").clic

js与jquery获取父级元素,子级元素,兄弟元素的实现方法

 本篇文章主要是对js与jquery获取父级元素,子级元素,兄弟元素的实现方法进行了介绍,需要的朋友可以过来参考下,希望对大家有所帮助 先说一下JS的获取方法,其要比JQUERY的方法麻烦很多,后面以JQUERY的方法作对比   JS的方法会比JQUERY麻烦很多,主要则是因为FF浏览器,FF浏览器会把你的换行也当最DOM元素   原生的JS获取ID为test的元素下的子元素.可以用:   比如:   <div id="dom">     <div></d

js与jquery获取父元素,删除子元素的两种不同方法

 本篇文章主要是对js与jquery获取父元素,删除子元素的两种不同方法进行了介绍,需要的朋友可以过来参考下,希望对大家有所帮助 var obj=document.getElementById("id");得到的是dom对象,对该对象进行操作的时候使用js方法   var obj=$("#id");得到的是jquery对象,对该对象进行操作的时候使用jquery方法   1.对于上面获得的对象进行遍历   (1).js方法  for(vat i=0;j<obj

Jquery搜索父元素操作方法

 这篇文章主要介绍了Jquery搜索父元素操作方法,实例分析了parents.cloest.parent.parentsUtil及offsetParent方法的使用技巧,需要的朋友可以参考下     本文实例讲述了Jquery搜索父元素操作方法.分享给大家供大家参考.具体分析如下: 1. parents()方法 格式: 代码如下: parents([selector]) 用于获取当前匹配元素集合中每个元素的祖先元素,根据需要还可以使用一个选择器进行筛选. 如: 代码如下: $("p")

jquery查找父元素、子元素

 对使用js或者jquery查找父元素.子元素比较混淆的朋友可以参考下本文,因为是个人总结,用起来会比较方便 使用js或者jquery查找父元素.子元素经常遇到.可是用起来总容易混淆,这里统一总结了一下,以后用起来相信会方便好多    这里jquery向上查找父元素 用到的方法:closest() parents() parent()    向下查找子元素 用到的方法:find() children()    js用的是 children[] 属性    html代码   代码如下: <!DOC

使用jquery获取父元素或父节点的方法

jquery获取父元素方法比较多,比如parent(),parents(),closest()这些都能帮你实现查找父元素或节点,下面我们来一一讲解: 先举个例子, 1.<ul class="parent1"> 2.<li><a href="#" id="item1">jquery获取父节点</a></li> 3.<li><a href="#">

Jquery搜索父元素操作方法_jquery

本文实例讲述了Jquery搜索父元素操作方法.分享给大家供大家参考.具体分析如下: 1. parents()方法 格式: 复制代码 代码如下: parents([selector])用于获取当前匹配元素集合中每个元素的祖先元素,根据需要还可以使用一个选择器进行筛选. 如: 复制代码 代码如下: $("p").parents().css("border", "1px solid blue); 2. cloest方法 格式: 复制代码 代码如下: closes

jQuery事件绑定方法学习总结(推荐)_jquery

对于jQuery中的事件绑定方法,主要有on().bind().delegate().live()等这几个方法.之前都是之前拿过来用,也知道有这么几个方法,但是不清楚这几个事件绑定方法之间的区别.平时用的最多的是on方法,今天打算整理一下. bind方法 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatibl