Github 365天: 给你一年的时间,你会怎样去提高你的水平

给你一年的时间,你会怎样去提高你的水平???

正值这难得的sick leave(万恶的空气),码文一篇来记念一个过去的366天里。尽管想的是在今年里写一个可持续的开源框架,但是到底这依赖于一个好的idea。在我的Github 孵化器 页面上似乎也没有一个特别让我满意的想法,虽然上面有各种不样有意思的ideas。多数都是在过去的一年是完成的,然而有一些也是还没有做到的。

说说标题

尽管一直在Github上连击看上去似乎是没有多大必要的,但是人总得有点追求。如果正是漫无目的,却又想着提高技术的同时,为什么不去试试?毕竟
技术非常好、不需要太多练习的人只是少数,似乎这样的人是不存在的。大多数的人都是经过练习之后,才会达到别人口中的“技术好”。

这让我想起了充斥着各种气味的知乎上的一些问题,在一些智商被完虐的话题里,无一不是因为那些人学得比别人早——哪来的天才?所谓的天才,应该是未来的智能生命一般,一出生什么都知道。如果并非如此,那只是说明他练习到位了。

练习不到位便意味着,即使你练习的时候是一万小时的两倍,那也是无济于事的。如果你学得比别人晚,在很长的一段时间里(可能直到进棺材)输给别人是必然的——落后就要挨打。就好像我等毕业于一所二本垫底的学校里,如果在过去我一直保持着和别人(各种重点)一样的学习速度,那么我只能一直是Loser。

需要注意的是,对你来说考上二本很难,并不是因为你比别人笨。教育资源分配不均的问题,在某种程度上导致了新的阶级制度的出现。如我的首页说的那样: THE ONLY FAIR IS NOT FAIR——唯一公平的是它是不公平的。我们可以做的还有很多——CREATE & SHARE。真正的不幸是,因为营养不良导致的教育问题。

于是在想明白了很多事的时候起,便有了Re-Practise这样的计划,而365天只是中间的一个产物。

编程的基础能力

虽说算法很重要,但是编码才是基础能力。算法与编程在某种程度上是不同的领域,算法编程是在编程上面的一级。算法写得再好,如果别人很难直接拿来复用,在别人眼里就是shit。想出能work的代码一件简单的事,学会对其重构,使之变得更易读就是一件有意义的事。

于是,在某一时刻在Github上创建了一个组织,叫Artisan Stack。当时想的是在Github寻找一些JavaScript项目,对其代码进行重构。但是到底是影响力不够哈,参与的人数比较少。

重构

如果你懂得如何写出高可读的代码,那么我想你是不需要这个的,但是这意味着你花了更多的时候在思考上了。当谈论重构的时候,让我想起了TDD(测试
驱动开发)。即使不是TDD,那么如果你写着测试,那也是可以重构的。(之前写过一些利用Intellij IDEA重构的文章:提炼函数以查询取代临时变量重构与Intellij Idea初探内联函数)

在各种各样的文章里,我们看到过一些相关的内容,最好的参考莫过于《重构》一书。最基础不过的原则便是函数名,取名字很难,取别人能读懂的名字更难。其他的便有诸如长函数、过大的类、重复代码等等。在我有限的面试别人的经历里,这些问题都是最常见的。

测试

而如果没有测试,其他都是扯淡。写好测试很难,写个测试算是一件容易的事。只是有些容易我们会为了测试而测试。

在我写EchoesWorksLan的过程中,我尽量去保证足够高的测试覆盖率。

从测试开始的TDD,会保证方法是可测的。从功能到测试则可以提供工作次效率,但是只会让测试成为测试,而不是代码的一部分。

测试是代码的最后一公里。所以,尽可能的为你的Github上的项目添加测试。

编码的过程

初到TW时,Pair时候总会有人教我如何开始编码,这应该也是一项基础的能力。结合日常,重新演绎一下这个过程:

  1. 有一个可衡量、可实现、过程可测的目标
  2. Tasking (即对要实现的目标过程进行分解)
  3. 一步步实现 (如TDD)
  4. 实现目标

放到当前的场景就是:

  1. 我想在Github上连击365天。对应于每一个时候段的目标都应该是可以衡量、测试的——即每天都会有Contributions。
  2. 分解就是一个痛苦的过程。理想情况下,我们应该会有每天提交,但是这取决于你的repo的数量,如果没有新的idea出现,那么这个就变成为了Contributions而Commit。
  3. 一步步实现

在我们实际工作中也是如此,接到一个任务,然后分解,一步步完成。不过实现会稍微复杂一些,因为事务总会有抢占和优先级的。

技术与框架设计

在上上一篇博客中《After 500: 写了第500篇博客,然后呢?》也深刻地讨论了下这个问题,技术向来都是后发者优势。对于技术人员来说,也是如此,后发者占据很大的优势。

如果我们只是单纯地把我们的关注点仅仅放置于技术上,那么我们就不具有任何的优势。而依赖于我们的编程经验,我们可以在特定的时候创造一些框架。而架构的设计本身就是一件有意思的事,大抵是因为程序员都喜欢创造。(ps:之前曾经写过这样一篇文章,《对不起,我并不热爱编程,我只喜欢创造》)

创造是一种知识的再掌握过程。

回顾一下写echoesworks的过程,一开始我需要的是一个网页版的PPT,当然这类的东西已经有很多了,如impress.js、
bespoke.js等等。分析一下所需要的功能:markdown解析器、键盘事件处理、Ajax、进度条显示、图片处理、Slide。我们可以在
Github上找到各式各样的模块,我们所要做的就是将之结合在一样。在那之前,我试着用类似的原理写(组合)了Lettuce

组合相比于创造过程是一个更有挑战性的过程,我们需要在这过程去设计胶水来粘合这些代码,并在最终可以让他工作。这好比是我们在平时接触到的任务划分,每个人负责相应的模块,最后整合。

想似的我在写lan的时候,也是类似的,但是不同的是我已经设计了一个清晰的架构图。

而在我们实现的编码过程也是如此,使用不同的框架,并且让他们能工作。如早期玩的moqi.mobi,基于Backbone、RequireJS、Underscore、Mustache、Pure CSS。在随后的时间里,用React替换了View层,就有了backbone-react的练习。

技术同人一样,需要不断地往高一级前进。我们只需要不断地Re-Practise。

领域与练习

说业务好像不太适合程序员的口味,那就领域吧。不同行业的人,如百度、阿里、腾讯,他们的领域核心是不一样的。

而领域本身也是相似的,这可以解释为什么互联网公司都喜欢互相挖人,而一般都不会去华为、中兴等非互联网领域挖人。出了这个领域,你可能连个毕业生
都不如。领域、业务同技术一样是不断强化知识的一个过程。Ritchie先实现了BCPL语言,而后设计了C语言,而BCPL语言一开始是基于CPL语
言。

领域本身也在不断进化。

这也是下一个值得提高的地方。

其他

是时候写这个小结了。从不会写代码,到写代码是从0到1的过程,但是要从1到60都不是一件容易的事。无论是刷Github也好(不要是自动提交),或者是换工作也好,我们都在不断地练习。

而练习是要分成不同的几个步骤,不仅仅局限于技术:

  1. 编码
  2. 架构
  3. 设计
  4. 。。。

来源:51CTO

时间: 2024-11-18 09:56:17

Github 365天: 给你一年的时间,你会怎样去提高你的水平的相关文章

GitHub无法访问或访问缓慢解决办法

缘由 由于众所周知的原因,Github最近无法访问或访问很慢. 由于Github支持https,因此此次屏蔽Github采用的方法是dns污染,用户访问github会返回一个错误的IP 翻墙当然是一种解决办法了,但总感觉不是很爽 临时解决办法 在终端执行指令sudo vi /etc/hosts打开hosts文件进行编辑 插入如下内容,保存退出即可! # github 204.232.175.78 http://documentcloud.github.com 207.97.227.239 htt

利用Github pages建站-超简单小白专属

Github pages可以使用自己的html,js等资源建站.我们可以使用hexo在本地生产静态网页然后发布到github上.废话少说,按照下列步骤执行 1.注册github账号 并新建一个 用户名+github.io的repository.   2.安装nodejs 下载地址 在cmd中执行 Java代码   node -v    检测是否安装成功,若提示node命令不存在的时候,请将C:\Program Files\nodejs添加到用户环境变量的PATH中   3.安装hexo Java

GitHub网站究竟可不可靠?谷歌工程师教你用BigQuery一探究竟

更多深度文章,请关注: https://yq.aliyun.com/cloud 作者简介:Felipe Hoffa,谷歌开发顾问,来自智利,现工作于旧金山以及全球各地,谷歌Cloud Platform社区编辑. 以独特方式组织的可视化数据往往能够为我们提出一些有趣的观点.Felipe Hoffa最近使用BigQuery结合Reddit近八年来的网站活动以及上线时间数据进行了可视化分析,我们从中看到了一些非常有趣的信息.作为一名刚入门的负责任务控制的网站可靠性工程师,我总是会这样问自己,"如果我是

Laravel使用Socialite实现GitHub登录认证

1.引言 除了让用户走注册流程实现登录认证外,在社交网络日益发达的今天,许多网站还提供了使用社交网络账号实现第三方登录认证的功能.强大的Laravel也为这种功能提供了官方包--Socialite,Socialite目前支持国外多种社交媒体登录,包括Facebook.Twitter.Google.LinkedIn.GitHub以及Bitbucket.因为GFW的缘故,本节我们将简单演示如何通过Socialite使用GitHub进行第三方登录认证. 2.安装Socialite包 要使用Social

开放的力量—破解 GitHub 的发展密码

GitHub : 一个共享虚拟主机服务,用于存放使用 Git 版本控制的软件代码和内容项目.它由 Chris Wanstrath.PJ Hyett 和 Tom Preston-Werne 用 Ruby on Rails 编写而成. -维基百科 但是这项服务逐步演变成为了开源软件开发与管理的社区,其开放一切的梦想实现了软件开发的虚拟化.这股力量是强大的.成立 1 年之后不久公司就吸引了 10 万用户.2012年GitHub获得了A16Z的1亿美元融资,表明了 VC 对该公司的信心.同年,GitHu

Office 365让龙天路更好的进行物流信息化管理

北京龙天路物流有限公司公司总经理薛兴伟表示 "建设物流跟踪系统是我公司向业务流程化.管理信息化.服务标准化迈出的重要一步.不仅如此,我相信通过未来在Office 365平台上的业务应用,一定可以让我们的业务管理能力更提升一步,来提高我们在行业内的竞争力" 北京龙天路物流有限公司(以下简称"龙天路")总部设在北京,在全国各大主要城市有30多个业务网点,公司成立时,就融合新加坡和荷兰先进管理经验和经营模式,坚持以顾客为关注焦点,并先后获得"全国物流行业优秀诚信

开放的力量—破解GitHub的发展密码

中介交易 SEO诊断 淘宝客 云主机 技术大厅 GitHub : 一个共享虚拟主机服务,用于存放使用 Git 版本控制的软件代码和内容项目.它由 Chris Wanstrath.PJ Hyett 和 Tom Preston-Werne 用 Ruby on Rails 编写而成. -维基百科 但是这项服务逐步演变成为了开源软件开发与管理的社区,其开放一切的梦想实现了软件开发的虚拟化.这股力量是强大的.成立 1 年之后不久公司就吸引了 10 万用户.2012年GitHub获得了A16Z的1亿美元融资

部分博客中的代码已放到了GitHub上,欢迎大家下载阅读!

GitHub上的代码与CSDN博文之间的对应关系为: 代码 博文 https://github.com/zhouzxi/ReadConfig Linux下配置文件读取操作流程及其C代码实现:http://blog.csdn.net/zhouzhaoxiong1227/article/details/45563263 https://github.com/zhouzxi/SimpleLogSystem-Linux Linux下一个简单的日志系统的设计及其C代码实现:http://blog.csdn

使用 Github Pages 发布你的项目文档

你可能比较熟悉如何用 Github Pages 来分享你的工作,又或许你看过一堂教你建立你的第一个 Github Pages 网站的教程.近期 Github Pages 的改进使得从不同的数据源来发布您的网站更加的方便,其中的来源之一就是你的仓库的 /docs 目录. 文档的质量是一个软件项目健康发展的标志.对于开源项目来说,维护一个可靠而不出错的知识库.详细说明所有的细节是至关重要的.精心策划的文档可以让增加项目的亲切感,提供一步步的指导并促进各种方式的合作可以推动开源软件开发的协作进程. 在