个人编程成长四步曲

此次我决定不耍流氓的写一篇鸡汤,这篇是以过程到结果的文章——之前总是写结果,总感受很差~~。git

Blabla,群聊的时候,看到一个网站有一个Most active GitHub users的排名,发现我在里面的位置是20——在我前面还有一个台湾的同窗。虽然我如今已经超过他了,可是这个榜单没有更新。???github

Most active GitHub users

而实际上成为最活跃的中国大陆用户,只是有意图的练习的结果。。。编程

在我找到大四找到工做后,默默制做了一个计划。这个计划大概分为三步,而每一步大概会花一年时间去实践:设计模式

  1. 用更好的方法来实现功能微信

  2. Better Code & Architecture架构

  3. 运营(Growth Hacker)ide

因此,其实这也算这篇文章的三个小节。在你跟着这篇文章走以前,你须要具有一个根本的能力:能作到你想作的工具

能作到你想作的: Tasking与学习能力

虽然这看上去是一件很难的事,可是也不是一件很难的事。这也不依赖于你是否对某一个技术栈的理解,这只实际上只是学习能力的一种体现。学习

todo-example.png

在扯这些废话以前,先让咱们来看看咱们是如何实现一个功能、应用的。这也是在Growth里提到的Tasking:测试

  1. 有一个明确的实现目标。

  2. 评估目标并将其拆解成任务(TODO)。

  3. 规划任务的步骤(TODO)

  4. 学习相关技能

  5. 执行Task,遇到难题就跳到第二步。

以本文的写做为例,细分上面的过程就是:

  1. 我有了一个中心思想——在某种意义上来讲就是标题。

  2. 依据中心思考我将这篇文章分红了四小节。

  3. 而后我开始写四小节的内容。

  4. 直到完成。

而若是将其划分到一个编程任务,那么也是同样的:

  1. 咱们想到作一个xxx的idea。

  2. 为了这个idea咱们须要分红几步,或者几层设计。

  3. 对于每一步,咱们应该作点什么

  4. 咱们须要学习怎样的技能

  5. 集成每一步的代码,就有了咱们的系统。

因此,实际上这并非考验你技术能力的点,而是考验你如何划分任务和学习能力的点。在我不断地实现一个个系统的时候,最后我才意识到了这一点——学习能力和Tasking才是最重要的。换句话说,你如今学会什么并不重要,重要的是你之后有没有学习的能力。

有了一直想着过安逸的生活,因此就会安乐的死去。不过反正人生在世,本身开心就行,不要管别人怎么说。随后,我发现大部分我想到的均可以实现。

那么问题来了:

  1. 用铅笔写字也是写,用钢笔写字也是写,用电脑打字也是写——到底要用哪一个工具来写。

  2. 用楷体来显示也是显示,用宋体显示也是显示——到底要怎样的实现。

这实际上就是:用更好的方法来实现功能。

用更好的方法来实现功能

对于这一步来讲,有太多的东西值得去探索:

  1. 更好的架构

  2. 更好的工具

  3. 更好的语言

  4. 。。。

对于语言这一点上来讲,Python和Ruby是两个不一样的极端,不过看上Ruby是继承Perl的思想的基础上,就很少说了。Python,一个问题只有一个方法;Ruby,一个问题有几个方法。于是在这两个语言来,想要快感就用Ruby,还有近年来流行的Scala。想要便捷就是Python,不容易出现别的问题。

而这些只是我获得的结论,每一个人都会获得不一样听结论的。于是,探索是一件颇有意思的事~~,如图:

civ5-worst.jpg

因此实际上,这一步是去探索一个更广阔的天空。咱们须要知道不一样的语言和技术栈的一些优点,了解并知道如何去应用便可。

如,之前我用的是Django的RESTful方案Tastypie管理来解决问题。后来,又发现了Django REST Framework,又用它实现了原来的逻辑。大四时,我发现PHP语言中的Laravel在RESTful这件事情上,彷佛颇有表现力,而且更容易“部署”——LNMP。接着实习时,发现Java在部署上更不错,它只须要一个Java包。而这个过程,只是出自于部署方面来考虑问题的。

即便如今我是一个使用Node.js的人,我仍是以为Java的打包就是优点。

在探索的过程当中,咱们就知道挖掘技术哪家强

Better Code & Architecture

在实际编程的过程当中,咱们就会遇到不少代码问题。在这时,咱们尽管有好的架构,然而并不能从根本上解决问题。只能保证从蓝图上看是对的,而不能致使质量问题。

better-architecture.jpg

代码的腐烂都是源自于平时的工做习惯问题,而在不少时候是需求致使的。这些看上去就是噩梦——加班,没有时间学习,效率低。没有时间学习,效率低,加班。

eff-worknight.png

而对于代码质量来讲,也是如此的一种循环:

code-time.png

而在这时能够学的东西可多了,如Bad Smell,重构,设计模式,编写测试等等。

最后,我只获得了一个短句:

重构到设计模式

好的代码是重构出来的。

再往深层次之上就是架构,而架构每每是一种不容易获得的。尽管我看了一系列的书:

  • 《领域驱动设计》

  • 《企业应用架构模式》

  • 《领域特定语言》

  • 《恰如其份的软件架构》

  • 《面向模式的软件架构》

  • 。。。

最后,我仍是依据一本书的书名,才领悟了一本书的书名《浮现式设计》。也是一样的话:

好的架构是演进出来的。

而这些都依赖于咱们的实践,听信别人说的话,并不能让咱们学会什么。只有本身作了,才知道什么是好,什么是很差。

Growth Hacking

当咱们有了一个好的Idea,一个好的架构以及一份良好的代码,而且咱们还能将其执行下去。那么,咱们还须要什么?

what-is-growth-hacking.jpg

这也是我如今正在尝试的领域,也是过去我想作的,可是却找不到一个好的方向。后来,想了想就有了Growth这个APP。毕竟从一个领域到一个新的领域,最好是经过现有的领域做为过渡。

自媒体正在最近几年内崛起,同时因为聚合网站的存在,信息在不断地爆炸。一个好的做品、文章要传播起来已经愈来愈越难了。

在现有的领域里,知乎、微博、公众号已经开始在垄断人们的碎片时间。一个东西可能在火了几天以后,你就很可贵到他的信息了。

因此在适当的时候去推销,在适当的时候持续下去。

小结

在那以前你须要明白的一点是,你要成为一个怎样的人?是行业的专家?仍是领域的专家?等等!

cat-interest.jpg

我想的是一直能够作一些有趣的事,单纯深刻一个垂直领域对我来讲太枯燥了。对于我来讲,我只会在造轮子的时候去研究一个轮子。而不是深刻研究某个轮子,我会获得造某种轮子的方法。我只会在创造一些有意思的东西的时候,才会深刻某个领域去学习。而不是为了深刻某个领域,再去学习这个领域的知识 。。

每一个人均可以用不一样的方式成长,知道本身的喜欢的而后去计划。

(PS: 欢迎关注个人微信公众号(搜索:Phodal))

enter image description here

相关文章
相关标签/搜索