GitHub连击500天:让理想的编程成为习惯

尽管之前已经有100天、200天、365天的文章,但是这不是一篇象征性的500天的文章。对这样的一个事物,每个人都会有不同听看法。有的会说这是一件好事,有的则不是。但是别人的看法终究不重要,因为了解你自己的只有你自己。别人都只是以他们的角度来提出观点。

在这500天里,我发现两点有意思的事,也是总结的时候才意识到的:

  1. 编程的情绪周期
  2. 有意图的练习

那么,当我们不断地练习的时候,我们就可以写出更好的代码。

500天小结

我想你也听过一万小时天才理论的说法:要成为某个领域的专家,需要10000小时。而在这其中每重要的一点是有意图的练习——而不是一直重复性地用不同的语言去写一个相同的算法。如果我们有一天8小时的工作时间 + 2 小时的提高时间,那么我们还是需要1000天才能实现一万小时。

500天与10000小时

当然如果你连做梦也在写代码的话,那么我想500天就够了,哈哈~~。

虽然不是连击次数最多的,但是根据Most active GitHub users的结果来说,好似是大陆提交数最多的人,没有之一。再考虑到提交都是有意义的——不是机器刷出来的,不是有意识的去刷,我觉得还是有很大成就感的。

而要实现500天连击很重要的两点是:时间和idea。但是我觉得idea并不是非常重要的,我们可以造轮子,这一点就是在早期我做得最多的一件事,不断地造轮子——如《造轮子与从Github生成轮子》一文中所说。除此,你还可以用《GitHub去管理你的idea》,每当你想到一个Idea以及完成一个idea的时间你就会多一次提交。

时间则是一件很讽刺的事,因为人们要加班。加班的原因,要么是因为工作的内容很有意思,要么是因为钱。如果不是因为钱的话,为什么不去换个工作呢?比如我司。看似两者间存在很多的对立,但是我总在想技术的提升可以在后期解决收入的问题,而不需要靠加班来解决这个问题。人总是要活着的,钱是必需的,但是程序员的收入都不低。

编程的情绪周期

接着,我观察到了一些有意思的现象——编程的情绪周期也很明显。

所谓“情绪周期”,是指一个人的情绪高潮和低潮的交替过程所经历的时间。

如下图所示的就是情绪周期:

简单地来说,就是有一个时间段写代码的感觉超级爽,有一个时间段不想写代码,但是如果换一个说法就是:有一个时间段看书、写文档的感觉很爽,有一时间段不想看书、写文档的感觉。这也就是为什么在我的GitHub首页上的绿色各种花。不过因为《物联网周报》的原因,我会定期地更新一个相关的开源项目。

但是总来说,我习惯在一些时间造一些轮子、创建文档,这就是为什么我的GitHub会有一些开源电子书的缘故。

有意图的练习

编程需要很长的学习时间,也需要很长的练习时间。尽管我是从小学编程,自认为天赋不错,但是突破了上个门槛还是花费了三四年的时间。其中的很大一部分原因是,没有找对一个合适的方向。而在这期间也没有好好的练习,随后的日子里我意识到我会遇到下一个门槛,便开始试图有意识的练习。

在我开始工作的时候,我写了一篇名为《重新思考工作》的文章。在文章中我提到了几点练习的点:

  • 加强码代码的准确性
  • 写出更整洁的代码
  • 英语口语 (外企)
  • 针对性的加强语言技能

在一些日子的练习后,我发现这还是太无聊了。天生就喜欢一些有意思的东西,有趣才更有激情吧~~。不过,像下图的打字练习还是挺有意思的:

还是能打出了一堆错误的字符。但是对比了一下大多数人的人,还算不错,至少是盲打。但是,还是存在着很大的提升空间。

随后,我开始一些错误的练习,如对设计模式和架构的练习。试图去练习一些在生产上用不到的设计模式,以及一些架构模式。而这时就意味着,需要生搬一些设计模式。最后,我开始以项目为目的的练习,这就是为什么我的GitHub上的提交数会有如此多的原因。

预见性练习

还有一种练习比较有意思,算是以工作为导向的练习。当我们预见到我们的项目需要某一些技术,我们可能在未来采用某些技术的时候,我们就需要开始预见性的练习这些技术。

好的一点是:这些项目可能在未来很受初学者欢迎。

总结

每个人都有自己的方向,都有一个不错的发展路线,分享和创造都是不错的路。

THE ONLY FAIR IS NOT FAIR . ENJOY CREATE & SHARE.

欢迎关注我的GitHub: https://github.com/phodal

转发保留: GitHub连击500天:让理想的编程成为习惯

时间: 2024-10-05 06:13:44

GitHub连击500天:让理想的编程成为习惯的相关文章

李瑞钦+袁理想结对编程项目

李瑞钦+袁理想结对编程项目 项目要求: 1.用户注册功能.用户提供手机号码,点击注册将收到一个注册码,用户可使用该注册码完成注册: 2.用户完成注册后,界面提示设置密码,用户输入两次密码匹配后设置密码成功.密码6-10位,必须含大小写字母和数字.用户在登录状态下可修改密码,输入正确的原密码,再输入两次相同的新密码后修改密码成功: 3.密码设置成功后,跳转到选择界面,界面显示小学.初中和高中三个选项,用户点击其中之一后,提示用户输入需要生成的题目数量: 4.用户输入题目数量后,生成一张试卷(同一张

Github连击200天(1)——ShowCase

今天是我连续泡在Github上的第200天,也是蛮高兴的,终于达了: 故事的背影是: 去年国庆完后要去印度接受毕业生培训--就是那个神奇的国度.但是在去之前已经在项目待了九个多月,项目上的挑战越来越少,在印度的时间又算是比较多.便给自己设定了一个长期的goal,即100~200天的longest streak. 或许之前你看到过一篇文章让我们连击,那时已然140天,只是还是浑浑噩噩.到了今天,渐渐有了一个更清晰地思路. 先让我们来一下ShowCase,然后再然后,下一篇我们再继续. 一些项目简述

15个编程好习惯

编者按:这是国外程序员Al katib总结的一些编程习惯. 1. 动手编码之前,你需要对要编码实现的解决方案有一个正式的或粗略的设计.永远不要在没有任何设计的前提下就开始编码,除非所编代码不重要. 2. 优秀的代码文档跟编程语言知识一样重要.在代码源文件中,为每个主要的代码段添加注释,解释代码的基本逻辑.最好注明程序的构建和修改日期,以及修改的原因也是非常有必要的. 3. 维护程序的各个版本同样重要.当前有些编程工具都自带一个版本管理工具.无论你什么时候改变自己的程序,它们都会将其保存为.bak

SQL Server 要避免的编程坏习惯

摘自 <SQL Server MVP Deep Dives Vol.2> 使用select * 会返回不需要的列,增加磁盘和网络开销 如果view的定义里用了select *, 而底层的表有列名的变化的时候,view仍然会返回原来的列 IF OBJECT_ID('tb1') IS NOT NULL DROP TABLE tb1 GO CREATE table tb1(id int) GO IF OBJECT_ID('v1') IS NOT NULL DROP VIEW v1 GO CREATE

编程好习惯-类型检查

公司一款手持终端,是在老产品代码的基础上研发,经常发生死机问题,死机原因很大部分是代码不严谨导致,今天排查遇到一个整型溢出导致的死机问题: 在foo.c文件中定义有 char g_sds_length = 0; 在foo.h文件中声明为 extern char g_sds_length; 但是在bar.c中有定义有     void api_sds_rec_handle()     {         int rec_sds_length;         g_sds_length = rec_

编程编码习惯

更多内容请关注:dotNET学习天地 一起学习,一起进步. 原文地址:https://www.cnblogs.com/xingxingzhou/p/11747137.html

天天写业务代码的那些年,我们是如何成长过来的

比起写业务代码更不幸的是,主要工作是修 Bug,bug,buG, bUg. 在一家大的公司里,不同的人总会有不同的运气: 运气好的人遇上一个好的项目,升职加薪,从此就走上了人生的巅峰. 运气差的人摊上一个差的项目,升不了职,少加了薪,并且还获得不了技术成长. 我刚毕业那会儿,所在团队的主要工作是,维护一个『又老又旧』的系统.比起写业务代码更不幸的是,我们的主要工作是修 Bug,bug,buG, bUg. 那一年多里,尽管都是维护旧系统和少量的新需求,我们还是在飞速的成长~~.而来源主要是: 组内

增长工程师修炼之道

前言 我的成长四步曲 在我成长初期,我制定了一些计划来实现下面的一些能力: 能做到你想做的: Tasking与学习能力 用更好的方法来实现功能 Better Code & Architecture 运营(Growth Hacker) 除了第一步,每一个步骤都花费了相当长的时间来学习,光在学习方面就差不多一年了. 能做到你想做的: Tasking与学习能力 虽然这看上去是一件很难的事,但是也不是一件很难的事.这也不依赖于你是否对某一个技术栈的理解,这只实际上只是学习能力的一种体现. todo-ex

git文章列表

关于gitlab默认clone协议 Git实现从本地添加项目到远程仓库 翻翻git之---一个简单的标签控件 LabelView (随手发了两张小宝宝的玩耍照) Git 项目推荐 | Java 版微信普通号机器人 翻翻git之---炫酷的自定义翻滚View TagCloudView GitHub连击500天:让理想的编程成为习惯 git初基本用法总结 xcode 自带的git工具创建项目流程 翻翻git之---编译器般高大上的WebView RichEditor (PS:家里两个小祖宗大爆照)