我呢,这个人比较笨,学习编程是比较慢的那一个。我记得我的第一份程序员的工作是在一家外包公司,上班一个多月之后,有一天下班,碰巧跟项目经理搭同一部电梯,他对我说:“小伟,看你在介绍项目的时候挺有激情的,要不你转到我们的销售部吧”,其实我们公司一共9人,他负责销售和技术两个部门,挺牛逼的一个人。我说:“啥情况?你是在暗示我的技术太差了吗?”,“没有啊”。接着又说,“你啊,有时间就好好理解一下面向对象编程吧”,“好吧”。
两年过去了,在一个月前,我尝试学习新的编程语言:Swift,一路学习,一路惊叹:“靠!这样也可以。” 一周之后,我感觉:这Swift真是太爽了,应该用它写个东西玩玩。
然后就是折腾写什么呢?最后还是找出,我以前在学习javascript的时候,参考别人写的一个小游戏(微信流行一时的打飞机),注意了,别人也是用javascript写的一个游戏,我是参考被人写的,因为当时刚开始接触编程不久,当时真是挺蒙圈的,做出来之后,还是有点模糊的感觉,嗯,我就是这么笨得一个人。但是!现在我在用Swift去写他的时候,都是在业余时间写的,两三天之后就完成90%,跟以前对比是:1.开发周期缩短了很多,2.编程思想完全不一样3.写完后不蒙圈了,4.还优化了一些逻辑。地址:https://github.com/CoderKman/AircraftWar
写完后,我突然有点惊讶,我的学习速度快了很多,思路也清晰了,难道是得到神的眷顾了?我开始思考,最后,得出一个结论:学习一门新的技术的过程大致可以分为两个阶段,第一个阶段是:基础阶段,第二个阶段是:增长阶段。就拿我们学习IOS开发来说,在基础阶段呢,我们需要理解一大堆概念和思想,还要学习语法,运行原理,原理里面又一大堆概念和思想,特点等。所谓的增长期就是当我们完全学习了所有的这些“基础阶段”所包括的基本概念和规律之后,我们就可以利用这些基础知识一边实践一边学习,这个时候我们才可以写出优雅的,具有思想的代码,这才是一个程序工程师的宝贵之处。这就是我认为的增长期。
其实当我们进入了增长阶段之后,我们的学习速度是以指数级增长的,因为基础都打好了嘛,一点就明,一看就明。可是,在基础阶段,往往是既痛苦又迷茫的。所以,分享我的编程之路希望对一部分人有帮助吧。
这两年前后的对比,就这样的一个转变,说明了两点:
1.学习分两个阶段(当我把基本知识理解深了之后,后面的学习只需要花很少的时间)
2.编程思想比具体代码更重要(我只要掌握更好的思想,就能更好的做出我想做得东西,而用什么工具(编程语言)去做,并不太重要,对效率的影响并不大)
当然,有些朋友可能会说,搞编程快两年了,这是理所当然的,嗯,也许吧。但是我希望的是,刚学习编程、或者刚学习新技术的同志们,能够多花点时间深入理解这个技术领域的概念,原则,思想,还有相关的设计,对就是这些虚的东西,一边实践,一边学习,一边思考,一边领会。这样子,过一段时间之后,你就会发现你进步得很快。也希望你可以提前踏过基础阶段,把这个阶段缩短至一年、半年。事实上,有很多程序员三年后,五年后,十年后,还是没有进入增长期,也许就是我们还没理解编程的某一个思想,或者还缺乏某一个设计模式的知识。