我的成长计划——写在成为GitHub最活跃的中国大陆用户
这次我决定不耍流氓的写一篇鸡汤,这篇是以过程到结果的文章——以前老是写结果,总感觉不好~~。
Blabla,群聊的时候,看到一个网站有一个 Most active GitHub users 的排名,发现我在里面的位置是20——在我前面还有一个台湾的同学。虽然我现在已经超过他了,但是这个榜单没有更新。:blush::blush::blush:
而实际上成为最活跃的中国大陆用户,只是有意图的练习的结果。。。
在我找到大四找到工作后,默默制作了一个计划。这个计划大概分为三步,而每一步大概会花一年时间去实践:
- 用更好的方法来实现功能
- Better Code & Architecture
- 运营(Growth Hacker)
所以,其实这也算这篇文章的三个小节。在你跟着这篇文章走之前,你需要具备一个根本的能力: 能做到你想做的 。
能做到你想做的: Tasking与学习能力
虽然这看上去是一件很难的事,但是也不是一件很难的事。这也不依赖于你是否对某一个技术栈的理解,这只实际上只是学习能力的一种体现。
在扯这些废话之前,先让我们来看看我们是如何实现一个功能、应用的。这也是在Growth里提到的Tasking:
- 有一个明确的实现目标。
- 评估目标并将其拆解成任务(TODO)。
- 规划任务的步骤(TODO)
- 学习相关技能
- 执行Task,遇到难题就跳到第二步。
以本文的写作为例,细分上面的过程就是:
- 我有了一个中心思想——在某种意义上来说就是标题。
- 依据中心思考我将这篇文章分成了四小节。
- 然后我开始写四小节的内容。
- 直到完成。
而如果将其划分到一个编程任务,那么也是一样的:
- 我们想到做一个xxx的idea。
- 为了这个idea我们需要分成几步,或者几层设计。
- 对于每一步,我们应该做点什么
- 我们需要学习怎样的技能
- 集成每一步的代码,就有了我们的系统。
所以,实际上这并不是考验你技术能力的点,而是考验你如何划分任务和学习能力的点。在我不断地实现一个个系统的时候,最后我才意识到了这一点——学习能力和Tasking才是最重要的。换句话说,你现在学会什么并不重要,重要的是你以后有没有学习的能力。
有了一直想着过安逸的生活,所以就会安乐的死去。不过反正人生在世,自己开心就行,不要管别人怎么说。随后,我发现大部分我想到的都可以实现。
那么问题来了:
- 用铅笔写字也是写,用钢笔写字也是写,用电脑打字也是写——到底要用哪个工具来写。
- 用楷体来显示也是显示,用宋体显示也是显示——到底要怎样的实现。
这实际上就是:用更好的方法来实现功能。
用更好的方法来实现功能
对于这一步来说,有太多的东西值得去探索:
- 更好的架构
- 更好的工具
- 更好的语言
- 。。。
对于语言这一点上来说,Python和Ruby是两个不同的极端,不过看上Ruby是继承Perl的思想的基础上,就不多说了。Python,一个问题只有一个方法;Ruby,一个问题有几个方法。因而在这两个语言来,想要快感就用Ruby,还有近年来流行的Scala。想要便捷就是Python,不容易出现别的问题。
而这些只是我得到的结论,每个人都会得到不同听结论的。因而,探索是一件很有意思的事~~,如图:
所以实际上,这一步是去探索一个更广阔的天空。我们需要知道不同的语言和技术栈的一些优势,了解并知道如何去应用即可。
如,以前我用的是Django的RESTful方案Tastypie管理来解决问题。后来,又发现了Django REST Framework,又用它实现了原来的逻辑。大四时,我发现PHP语言中的Laravel在RESTful这件事情上,似乎很有表现力,并且更容易“部署”——LNMP。接着实习时,发现Java在部署上更不错,它只需要一个Java包。而这个过程,只是出自于部署方面来考虑问题的。
即使现在我是一个使用Node.js的人,我还是觉得Java的打包就是优势。
在探索的过程中,我们就知道 挖掘技术哪家强 ?
Better Code & Architecture
在实际编程的过程中,我们就会遇到很多代码问题。在这时,我们尽管有好的架构,然而并不能从根本上解决问题。只能保证从蓝图上看是对的,而不能导致质量问题。
代码的腐烂都是源自于平时的工作习惯问题,而在很多时候是需求导致的。这些看上去就是噩梦——加班,没有时间学习,效率低。没有时间学习,效率低,加班。
而对于代码质量来说,也是如此的一种循环:
而在这时可以学的东西可多了,如Bad Smell,重构,设计模式,编写测试等等。
最后,我只得到了一个短句:
> 重构到设计模式
好的代码是重构出来的。
再往深层次之上就是架构,而架构往往是一种不容易得到的。尽管我看了一系列的书:
- 《领域驱动设计》
- 《企业应用架构模式》
- 《领域特定语言》
- 《恰如其份的软件架构》
- 《面向模式的软件架构》
- 。。。
最后,我还是依据一本书的书名,才领悟了一本书的书名《浮现式设计》。也是同样的话:
> 好的架构是演进出来的。
而这些都依赖于我们的实践,听信别人说的话,并不能让我们学会什么。只有自己做了,才知道什么是好,什么是不好。
Growth Hacking
当我们有了一个好的Idea,一个好的架构以及一份良好的代码,并且我们还能将其执行下去。那么,我们还需要什么?
这也是我现在正在尝试的领域,也是过去我想做的,但是却找不到一个好的方向。后来,想了想就有了Growth这个APP。毕竟从一个领域到一个新的领域,最好是通过现有的领域作为过渡。
自媒体正在最近几年内崛起,同时由于聚合网站的存在,信息在不断地爆炸。一个好的作品、文章要传播起来已经越来越越难了。
在现有的领域里,知乎、微博、公众号已经开始在垄断人们的碎片时间。一个东西可能在火了几天之后,你就很难得到他的信息了。
所以在适当的时候去推销,在适当的时候持续下去。
小结
在那之前你需要明白的一点是,你要成为一个怎样的人?是行业的专家?还是领域的专家?等等!
我想的是一直可以做一些有趣的事,单纯深入一个垂直领域对我来说太枯燥了。对于我来说,我只会在造轮子的时候去研究一个轮子。而不是深入研究某个轮子,我会得到造某种轮子的方法。我只会在创造一些有意思的东西的时候,才会深入某个领域去学习。而不是为了深入某个领域,再去学习这个领域的知识 。。
每个人都可以用不同的方式成长,知道自己的喜欢的然后去计划。
来自: http://www.phodal.com/blog/most-active-chinese-github-users-plan/