热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

程序员应该每天写代码

去年秋天,我编写的业余项目到了紧要关头:因为我找不到一个方法——既不用牺牲在KhanAcademy工作的高效率,又可以做更多的事,所以项目一直没有进展。关于工作于业余项目,主要问题

去年秋天,我编写的业余项目到了紧要关头:因为我找不到一个方法——既不用牺牲在Khan Academy工作的高效率,又可以做更多的事,所以项目一直没有进展。

关于工作于业余项目,主要问题为:我基本上在周末做业余项目,偶尔也会在平时的晚上做一点。事实证明这个工作策略对我而言并不适合。尽可能地在工作日尝试和完成高质量的工作让我承受了很多难以置信的压力(并且如果我不能的话,会让我有挫败感)。这里有一个问题是,你不能保证每个周末都有空——而且我也不愿意把两天时间都用来编程(而没有任何休息或去做其他事情的时间)。

而且,还有一个问题是,隔一周再工作于项目代码,会非常容易忘记曾经正在工作的要点以及一些遗留的内容(即使你已经记了笔记)。而且,如果这个周末有事,等下个周末再接着搞项目的话,那就间隔了两周,14天了。这种多周的上下文切换可能是致命的(我有很多业余项目正是死于这种饥饿的注意力)。

受Jennifer Dewalt去年完成的令人难以置信的工作——在180天软科小院建立180个网站的启发,我觉得有必要尝试和她类似的策略:每天做点业余项目。

程序员应该每天写代码

我决定为自己定一些规则:

必须每天写代码。也可以写文档,写博客,写其他的东西,但必须是在写代码的基础上。代码必须有用。不要去调整代码缩进,也不要代码重新格式化,如果可以得话,也不要去重构。(当然所有这些事情是允许的,但不能作为一天的专属工作。)午夜之后不写代码。代码必须开源,放在Github上。

有些规则看上去有些随意。因为从技术上说,代码并不需要在午夜之前写,但我不希望因为熬夜太晚以致于写出一些马马虎虎漏洞百出的代码。而且代码也没有必要开源或放到Github上。我定这些规则的目的只是迫使我自己能在写代码的时候更专注(考虑可重用性和决定在进程早期创建模块)。

到现在为止,我终于成功了,已经接近20周,我做到了连续工作于业余项目上。这完全改变了我如何写代码的方式,并且对我的生活和心理产生了重大的影响。

程序员应该每天写代码

在改变习惯的过程中,发生了很多有意思的事情:

 最小化可行的代码。

强迫每天不少于30分钟的写代码时间。(否则的话就真的很难写出有意义的代码,特别是你还得记起前一天你是从哪里离开的。)工作日我能投入的时间不是很多(通常不超过1小时,但都超过30分钟),但在周末,有时我会工作一整天。

 将编码养成为一个习惯。

需要注意的是,我并不特别在意Github上的别人对我的看法。我认为这是这一条最关键的地方:这是你为自己做的改变,而不是为了取悦别人而做的改变。这同样适用于健康饮食和锻炼:如果你不关注于改善自己,那么你永远不会取得真正的成功。

 战胜焦虑感。

首先我想说的是,我会频繁地感到高度焦虑,当没有完成“足够”工作或没有取得“足够”进步的时候(这两样都比较难以量化,因为我的业余项目没有具体的时间限制)。我意识到,取得进展的感觉,和取得实际进展同样重要。一旦我每天都能有持续的进步,那么焦虑感就会一点点减少。合理安排自己的工作量,不要制定一些不切实际过度自负的期望。

 周末。

在周末完成工作是朝着目标前进绝对至关重要的动力(因为通常只有在这种情况下,我才能为业余项目编写有意义的代码)。这是一件好事。在周末制定一个周计划,能让我不再耿耿于沮丧。因为以前我很少能在平时完成我想要做的工作,因此只能迫使自己为了完成更多的工作而拒绝其他的周末活动(享受美食,参观博物馆,逛公园,朋友聚会,等等)。我强烈地感觉到,虽然业余项目非常重要,但也不应该没有自己的生活乐趣。

 后台处理。

每天编码业余项目的一个有趣的副作用是,你当前的任务会经常运行在你的脑海里。因此,当我去散步,去洗澡,或做任何其他不需要大脑参与的活动时,我都会思考之后我要编码什么,寻找解决问题的好办法。但当我每周一次或隔周工作于代码时,这就不会发生。相反,那些时候我的脑海中会出现其他的任务,或者,通常情况下,会充斥着因为没有完成任何业余项目而生成的焦虑感。

 上下文切换。

当重新继续于业余项目时,总会有上下文切换成本。不幸的是。在整整一周都工作于其他项目之后再想重新投入到业余项目中是非常难的。每天写代码则有助于减少“读档”时间,更容易记起自己当时正在做什么。

 工作的平衡。

想要有所改变的最重要的方面之一就是简单地学习如何更好地平衡工作/生活/业余项目。在决定我每天要工作于项目之后,我需要更好地平衡自己的时间。如果我被安排晚上出去,直到深夜才能回来,那么那一天的话我就得在早上搞业余项目,在我开始Khan Academy的工作之前。此外,如果我需要加班完成我的工作,并且回家晚了,那么我会赶紧回家来完成我的每天任务(而不是跳过这一天)。我要指出的是,这样一来,我在业余爱好(如雕版印刷)上的确不能有太多的时间,但这是一个合理的权衡取舍。

 别人的看法。

这是外部交流这个新习惯时带来的好处。我的小伙伴理解我必须每天完成这项工作,因此有时活动会围绕它进行调度。并且也可以心安理得地说:“是的,我也很想和你们一起出去玩/看电影/等。但我必须搞定我的编码工作“,能够被小伙伴理解和接受。

 写了多少代码?

曾经有一段时间我很难相信自己在过去的几个月里居然写了这么多代码。我创建了几个新网站,重写了一些框架,并创建了大量新的node模块。我写了这么多,以致于有时侯会忘记自己做的这些成绩——几个星期似乎是一个遥远的记忆。看到这些我已经完成的工作量,我特别开心。

我认为在习惯方面的改变是一个巨大的成功,并希望能够保持继续。因此,我向大家推荐这个策略,希望能帮助完成业余项目的实质性工作。非常期待听到大家的意见和建议,让我们共同进步!

英文原文:Write Code Every Day


推荐阅读
  • Android中高级面试必知必会,积累总结
    本文介绍了Android中高级面试的必知必会内容,并总结了相关经验。文章指出,如今的Android市场对开发人员的要求更高,需要更专业的人才。同时,文章还给出了针对Android岗位的职责和要求,并提供了简历突出的建议。 ... [详细]
  • 如何用UE4制作2D游戏文档——计算篇
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了如何用UE4制作2D游戏文档——计算篇相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 本文详细介绍了云服务器API接口的概念和作用,以及如何使用API接口管理云上资源和开发应用程序。通过创建实例API、调整实例配置API、关闭实例API和退还实例API等功能,可以实现云服务器的创建、配置修改和销毁等操作。对于想要学习云服务器API接口的人来说,本文提供了详细的入门指南和使用方法。如果想进一步了解相关知识或阅读更多相关文章,请关注编程笔记行业资讯频道。 ... [详细]
  • Metasploit攻击渗透实践
    本文介绍了Metasploit攻击渗透实践的内容和要求,包括主动攻击、针对浏览器和客户端的攻击,以及成功应用辅助模块的实践过程。其中涉及使用Hydra在不知道密码的情况下攻击metsploit2靶机获取密码,以及攻击浏览器中的tomcat服务的具体步骤。同时还讲解了爆破密码的方法和设置攻击目标主机的相关参数。 ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • 解决Cydia数据库错误:could not open file /var/lib/dpkg/status 的方法
    本文介绍了解决iOS系统中Cydia数据库错误的方法。通过使用苹果电脑上的Impactor工具和NewTerm软件,以及ifunbox工具和终端命令,可以解决该问题。具体步骤包括下载所需工具、连接手机到电脑、安装NewTerm、下载ifunbox并注册Dropbox账号、下载并解压lib.zip文件、将lib文件夹拖入Books文件夹中,并将lib文件夹拷贝到/var/目录下。以上方法适用于已经越狱且出现Cydia数据库错误的iPhone手机。 ... [详细]
  • sklearn数据集库中的常用数据集类型介绍
    本文介绍了sklearn数据集库中常用的数据集类型,包括玩具数据集和样本生成器。其中详细介绍了波士顿房价数据集,包含了波士顿506处房屋的13种不同特征以及房屋价格,适用于回归任务。 ... [详细]
  • Go GUIlxn/walk 学习3.菜单栏和工具栏的具体实现
    本文介绍了使用Go语言的GUI库lxn/walk实现菜单栏和工具栏的具体方法,包括消息窗口的产生、文件放置动作响应和提示框的应用。部分代码来自上一篇博客和lxn/walk官方示例。文章提供了学习GUI开发的实际案例和代码示例。 ... [详细]
  • 本文介绍了绕过WAF的XSS检测机制的方法,包括确定payload结构、测试和混淆。同时提出了一种构建XSS payload的方法,该payload与安全机制使用的正则表达式不匹配。通过清理用户输入、转义输出、使用文档对象模型(DOM)接收器和源、实施适当的跨域资源共享(CORS)策略和其他安全策略,可以有效阻止XSS漏洞。但是,WAF或自定义过滤器仍然被广泛使用来增加安全性。本文的方法可以绕过这种安全机制,构建与正则表达式不匹配的XSS payload。 ... [详细]
  • 如何提高PHP编程技能及推荐高级教程
    本文介绍了如何提高PHP编程技能的方法,推荐了一些高级教程。学习任何一种编程语言都需要长期的坚持和不懈的努力,本文提醒读者要有足够的耐心和时间投入。通过实践操作学习,可以更好地理解和掌握PHP语言的特异性,特别是单引号和双引号的用法。同时,本文也指出了只走马观花看整体而不深入学习的学习方式无法真正掌握这门语言,建议读者要从整体来考虑局部,培养大局观。最后,本文提醒读者完成一个像模像样的网站需要付出更多的努力和实践。 ... [详细]
  • 2022年的风口:你看不起的行业,真的很挣钱!
    本文介绍了2022年的风口,探讨了一份稳定的副业收入对于普通人增加收入的重要性,以及如何抓住风口来实现赚钱的目标。文章指出,拼命工作并不一定能让人有钱,而是需要顺应时代的方向。 ... [详细]
  • MySQL中的MVVC多版本并发控制机制的应用及实现
    本文介绍了MySQL中MVCC的应用及实现机制。MVCC是一种提高并发性能的技术,通过对事务内读取的内存进行处理,避免写操作堵塞读操作的并发问题。与其他数据库系统的MVCC实现机制不尽相同,MySQL的MVCC是在undolog中实现的。通过undolog可以找回数据的历史版本,提供给用户读取或在回滚时覆盖数据页上的数据。MySQL的大多数事务型存储引擎都实现了MVCC,但各自的实现机制有所不同。 ... [详细]
  • GPT-3发布,动动手指就能自动生成代码的神器来了!
    近日,OpenAI发布了最新的NLP模型GPT-3,该模型在GitHub趋势榜上名列前茅。GPT-3使用的数据集容量达到45TB,参数个数高达1750亿,训练好的模型需要700G的硬盘空间来存储。一位开发者根据GPT-3模型上线了一个名为debuid的网站,用户只需用英语描述需求,前端代码就能自动生成。这个神奇的功能让许多程序员感到惊讶。去年,OpenAI在与世界冠军OG战队的表演赛中展示了他们的强化学习模型,在限定条件下以2:0完胜人类冠军。 ... [详细]
  • svnWebUI:一款现代化的svn服务端管理软件
    svnWebUI是一款图形化管理服务端Subversion的配置工具,适用于非程序员使用。它解决了svn用户和权限配置繁琐且不便的问题,提供了现代化的web界面,让svn服务端管理变得轻松。演示地址:http://svn.nginxwebui.cn:6060。 ... [详细]
  • SpringBoot整合SpringSecurity+JWT实现单点登录
    SpringBoot整合SpringSecurity+JWT实现单点登录,Go语言社区,Golang程序员人脉社 ... [详细]
author-avatar
猫儿
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有