JQuery之父: 每天都来点代码吧!

本文讲述了jQuery创始人John Resig如何通过每日坚持编程的习惯改变,有效克服业余项目的进展难题,从而实现持续进步。

from :http://article.yeeyan.org/view/340567/431980


再厉害的人也会遇到瓶颈,只有不断地提高自己和持之以恒才能突破。 jQuery的创始人和技术领袖,John Resig,在业余编程项目的瓶颈时期究竟采取了什么策略?来应对自己的危机? 无论你是否是程序猿,你都可以从中受益。

去年秋天我的业余编程项目(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)。我写了如此的多,以至于我有时候都忘记了我到底干了些什么,前一周的工作都好像是很遥远的记忆样。我对我所完成的工作量是及其满意的。

我认为这个习惯改变是一个很大的成功并且希望能尽可能地继续下去。与此同时,我将倾尽所有将这个策略推荐给其他希望让其业余项目有实质进展的人。无论这个技术对于你是有用或者没用,请告诉我。我会非常乐意听更多的趣事的!


**高校专业实习管理平台设计与实现** 本设计项目旨在构建一个服务于高等院校专业实习环节的综合性管理平台。该系统采用当前主流的Web开发架构,基于Python编程语言,结合Django后端框架与Vue.js前端框架进行开发,实现了前后端逻辑的分离。数据存储层选用广泛应用的MySQL关系型数据库,确保了系统的稳定性和数据处理的效率。 平台设计了多角色协同工作的管理模型,具体包括系统管理员、院系负责人、指导教师、实习单位对接人以及参与实习的学生。各角色依据权限访问不同的功能模块,共同构成完整的实习管理流程。核心功能模块涵盖:基础信息管理(如院系、专业、人员信息)、实习过程管理(包括实习公告发布、实习内容规划、实习申请与安排)、双向反馈机制(单位评价与学生反馈)、实习支持与保障、以及贯穿始终的成绩评定与综合成绩管理。 在技术实现层面,后端服务依托Django框架的高效与安全性构建业务逻辑;前端界面则利用Vue.js的组件化特性与LayUI的样式库,致力于提供清晰、友好的用户交互体验。数据库设计充分考虑了实习管理业务的实体关系与数据一致性要求,并保留了未来功能扩展的灵活性。 整个系统遵循规范的软件开发流程,从需求分析、系统设计、编码实现到测试验证,均进行了多轮迭代与优化,力求在功能完备性、系统性能及用户使用体验方面达到较高标准。 **核心术语**:实习管理平台;Django框架;MySQL数据库;Vue.js前端;Python语言。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
在电磁散射与雷达技术的研究中,涉及粗糙表面电磁特性模拟的核心概念包括统计参数化建模方法、不同电场矢量方向的极化模式、特定方向的能量反射现象、理想化波前模型以及具有随机起伏特征的界面。以下是对这些要点的系统阐述: 统计参数化建模是一种基于表面统计特征描述其不规则性的电磁散射计算方法,尤其适用于均方根高度较小的粗糙界面在微波至毫米波频段的散射特性分析。 水平极化与垂直极化分别指电场矢量平行于地面和垂直于地面的振动状态。在雷达探测中,采用不同的极化模式有助于提升目标辨识度并抑制环境干扰。 当电磁波与物体相互作用时,部分能量沿接近入射方向返回,这种现象称为反向散射。其在雷达系统的探测灵敏度与目标特征分析中具有关键作用。 平面波是在均匀介质中传播的理想波型,其电场与磁场分布保持一致的相位关系,常作为理论简化模型用于电磁问题的解析与数值计算。 粗糙界面指具有随机起伏特征的表面,其不规则程度可通过均方根高度进行量化。这种结构特性会改变电磁波的传播路径与能量分布,进而影响信号的接收与处理。 相关压缩文件可能包含了实现上述建模方法的程序代码,通常采用数值计算语言编写,用于模拟不同极化状态下粗糙表面对平面波的反向散射响应。通过此类仿真,能够预测各类场景下的散射参数,为雷达系统设计与遥感数据解译提供理论依据。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值