我的编程成长计划 1.0

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

  1. 用更好的方法来实现功能
  2. Better Code & Architecture
  3. 运营(Growth Hacker)

所以,其实这也算这篇文章的三个小节。在你跟着这篇文章走之前,你需要具备一个根本的能力:能做到你想做的

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

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

在扯这些废话之前,先让我们来看看我们是如何实现一个功能、应用的。这也是在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,不容易出现别的问题。

而这些只是我得到的结论,每个人都会得到不同听结论的。因而,探索是一件很有意思的事~~,如图:

所以实际上,这一步是去探索一个更广阔的天空。我们需要知道不同的语言和技术栈的一些优势,了解并知道如何去应用即可。

如,以前我用的是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。毕竟从一个领域到一个新的领域,最好是通过现有的领域作为过渡。

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

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

所以在适当的时候去推销,在适当的时候持续下去。

小结

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

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

每个人都可以用不同的方式成长,知道自己的喜欢的然后去计划。

你的计划呢?

首发于2016.03.06

原文发布于微信公众号 - phodal(phodal-weixin)

原文发表时间:2016-05-29

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏新智元

《福布斯》:谷歌能从开源生态系统中获得什么?

【新智元导读】《福布斯》日前刊文,记者深入谷歌,探明其开源以TensorFlow为代表的一系列核心技术原因:开源能够更好更快地改善技术,同时也能够让自己成为价值...

3405
来自专栏CSDN技术头条

Facebook创建新开源组织TODO,Google、Twitter等继续捧场

继WebScaleSQL后,Facebook继续加大在开源界的投入。在本周一的旧金山的@Scale会议上,Facebook宣布了两项开源领域的努力——用以帮助公...

1635
来自专栏PPV课数据科学社区

必懂 | 这是一篇让你快速把握数据分析的文章

1、为什么要注重数据分析? 我们为什么要注重数据分析,对此我的想法是: 有效避免拍脑袋、主观臆想; 为决策提供支撑,更能说服人; 通过数据分析,可以看到决策...

2905
来自专栏北京马哥教育

零基础学习Python数据挖掘

? 作者:聊聊数据分析和挖掘 https://www.zhuanlan.zhihu.com/p/25575805 Python已经稳坐机器学习的第一语言(机...

3675
来自专栏程序员互动联盟

告别码农

一、成长的寓言:做一棵永远成长的苹果树 一棵苹果树,终于结果了。第一年,它结了10个苹果,9个被拿走,自己得到1个。对此,苹果树愤愤不平,于是自断经脉,拒绝成长...

3548
来自专栏Java程序员的架构之路

程序员准备面试时常犯11个错误,切记!

如果面试官要考核你的技术,很有可能会要求你在白板上写代码,而不是电脑上。所以,你就不能只在电脑上练习。电脑上的编译器会自动发现你的语法错误,但是白板不会。

2441
来自专栏大数据文摘

我们可以从Alexa语音助手的错误中学到什么:用户对话界面的设计性挑战

1292
来自专栏CSDN技术头条

软件开发中的deadline该怎么定

日常谈话中有多少次你在谈到deadline(期限)时,曾至少有一个人对这个概念嗤之以鼻?我已经听过太多次了,甚至连我自己也这么干过,不过现在我想改正这一习惯。 ...

2249
来自专栏Java学习网

关于软件开发你真正需要知道的几个事情

我之所以写这篇文章是因为有一个朋友最近决定跻身软件工程行业。我的这位朋友聪明,精力充沛,品貌兼优,又善于学习:每个人都认为这样的人才必将有一番作为。但是,在踏出...

3235
来自专栏Web行业观察

关于产品那些事

上面是 Urban Dictionary 对 Badass 的英文解释,非常到位。Badass = bad + ass,bad 是“坏的”,ass 是“屁股、愚...

1064

扫码关注云+社区

领取腾讯云代金券