本文是对过去两年转行进入 IT 行业的回顾总结。

本猿的前世今生

入行

从事 IT 行业两年多,现在让我想一下大学四年在环境科学都学了什么,我已经不记得都学了什么了。反而让我想一下,我这两年多都干了什么,却是历历在目,感觉比大学四年学得都多。步入程序猿的行列似乎并没有什么不适,相反我还挺适应的,可能毕竟兴趣点在这里。当然,我不是一个甘于搬砖的码农。

两年多,我要追回别人六年多的知识积累,有时候觉得还是蛮累的,你在进步的时候别人也在进步。

我聪明吗?

我肯定不是天才,我也不处于食物链的顶级,但是我感觉我以前还挺聪明的,现在越来越笨了。主要是感觉记忆力越来越差了,从高中后半截开始,记忆力就开始下降,也许是因为那段时间疯狂扁桃体发炎+发烧吧,状态日益下滑,比如英语单词记不住了。其实记忆力是聪明的资本,好的记忆力可以提升各种效率,事半功倍。过段时间调整一下状态,多锻炼一下身体,说不定能回春?

虽说如此,但是我发现我仍然可以发挥我的作用,我的脑袋有时还是很清醒的,我会思考,我可以思考到别人思考不到的范围。也许是因为平时话少的原因,旁观者清,别人义愤填膺的时候我往往在思考下一步了;所以有的时候当我也深陷争吵之中时,我也无法保持合理的理性思考;环境对人的影响也是很大的。当然我觉得我的逻辑,我的“世界观”还是在线的,不然思考再多也没用。因此在人群中,有时候我发现我有很大的优势,而我的劣势,是缺乏侃大山的能力,去让别人知道我的想法,有时候我真的可以点醒梦中人。

记不住就多写写,不是天才就多动手。于是我开始记录,任何对我有用,以后有可能对我有用,我很有可能会返回来查阅的知识点,我都记录下来;以及梳理新学习到的技术,各个知识点,各个条条框框;我也开始分享给他人我的学习笔记,希望对别人也有所帮助。一路下来,非常有用,为此我还为我的博客开设专题这个功能,我可以快速定位到我要查阅的笔记。久而久之,你会发现,翻笔记翻久了,也就不用翻了,自然就记住了。有时候,接触的知识点多了,感觉越来越不够时间来总结笔记,写文章了。

目前的我

虽然一直提醒自己不要浮躁,但是还是有点浮躁。对新技术非常感兴趣,就想玩新技术,但是老的技术或者知识,还没打牢。基础不牢,地动山摇。还是要沉下心来,基础牢固,做什么都简单。

这两年都学了什么

接下来回顾一下两年来都学了什么吧。

关于 PHP

其实一开始学习 PHP,从 PHP 切入编程,有点误打误撞。一开始学的时候,我还是很懵的,因为我对编程没有任何概念,大学的时候也没学 C 语言,因为大学时的电脑课也不学这些。

梳理一下我目前为止做下来的三份工作:

  1. 其实第一份工作,算是对之前学习的一个总结,从此知道了我们究竟拿 PHP 来做什么。显然 ECShop 的二次开发过于简单,对我来说,提高不大,待久了浪费时间了,所以第一份工作待的时间不长。这份工作,我学到的是,PHP 基础的巩固,和形成基础的编程思想,而且也不会后悔走得早,因为我现在可以非常自信的说我比当时那些计算机专业还工作了四年的同事强(当然只是那边的同事)。
  2. 第二份工作,主要是独立开发 APP 后台,一开始是新鲜的,开发 APP 后台,一个人!还要设计数据库。原来 PHP 还能做这些事情!又开了眼界,第二份工作,让我了解了 APP 的 “世界观”。当然,现在回想起来,当时的工作是有很大的不足的。
  3. 第三份工作,其实回想起来,公司上的项目,对我来说没什么提高。但是这段时间我的提高是巨大的,主要在于我会不断地抽时间出来,学习学习再学习。真正让我对编程开始有了初步的世界观,还是在这最近一年多,接触了很多很多,涵盖范围也很广。

经验可以推翻以前的知识认知。举个例子,比如一年前我去查“负载均衡”是什么,喔百度说是这样的这样的,确实说的没错是这样的。但是负载均衡就这样而已了吗,一年之后再去回顾,经验告诉你,其实是那样的,之前的理念被自己推翻,但是之前查到的概念确实是没错的,确实是那样的,但是你有了新的认识,更准确,更富有经验的认识。当然,也可能在将来再被自己推翻。这就是一个成长的过程,所以说老程序员是存在经验上的优势的,或者说架构师是如何成长起来的,就是这么成长起来的。

由 PHP 延伸开来

PHP 只是一门语言。很开心,由 PHP 延伸开来的生态,我都不断在接触和学习。

这些 PHP 框架:

  • ThinkPHP:TP是简单粗暴的,也是入门首选。但是入门之后,还是希望能够摆脱 TP 的束缚, 不然会深受其害。当然,当我们要快速实现需求的时候,TP 还是很好的选择。
  • Phalcon:虽然公司没怎么用,国内用得很少,但是我还是自己学习了这个框架。包括博客系统,我也用 Phalcon 写了一个开源博客系统。我觉得 Phalcon 是十分优秀的。
  • Workerman:其实一开始是没有打算用 Workerman的,而是想学习 Swoole,阴差阳错地,用上了 Workerman,觉得还挺好用的,确实挺不错也很稳定。

数据库相关:

  • MySQL:MySQL 不用说了,非常流行。其实在我一开始学习的时候,还有很多 NoSQL 的声音,包括很多 MongoDB 的支持者有很多。但是发现后来这个热潮已经逐渐消退了,现在见得比较多的就是 Node.js+MongoDB 这个组合。关系型数据库在未来一段时间还会是主导,不过现在已经开始讨论 NewSQL 了。
  • Redis:Redis 估计是必学必会的了,Redis 的应用现在很多,现在我对 Redis 还不熟,以后要加强。
  • Memcache:Memcache 用得很少,很多时候会被 Redis 取代。

Web Server:

  • Apache:Apache 是我一开始搭建 PHP 环境的时候最先了解的,但是后面就逐渐倾向于 Nginx 了。
  • Nginx:对 Nginx 有好感还是之前有一次跟 Apache 比较了一下内存的占用。后来就主要在玩 Nginx 了,配置什么的也自己研究了一些。

其它方面

  • Git:不会 Git 都不好意思说自己是一个程序猿了。
  • Go 语言:这段时间抽空学习了一下 Go 语言,可以说非常感兴趣,现在就学了个皮毛,之后会继续学习。
  • Docker:可以说,17年下半年学的最有意思的一个就是 Docker 了,抱着要与时俱进的态度,而且确实需要用到这么一项非常方便的工具来帮助我的开发,就把 Docker 给学习了。现在有了这项技能,开发效率也有所提高。
  • 通讯:因为之前公司涉及到通讯这一块,关于数据传输,现在也有了一些 PHP 去对接 TCP 连接的经验,以及一些抓包分析的技巧。

未来的我

目标是什么

这段时间找工作,可以明显地感觉到,PHP 的岗位越来越少了,特别是大公司,只放出来一些比较高级的职位,而低中级职位很少了,很多公司的 PHP,特别是中大型的公司的 PHP,感觉都在转型,Go 是一个明显的方向,再一个就是 Java。虽说如此,PHP 还是不能放弃,在许多场景 PHP 还是有用武之地,而且在创业公司 PHP 还是优势很明显的。所以我会继续深入 PHP 的研究,一门语言要研究到位,基础就要打牢,基础打牢了,切换语言也是很快的了,而且在学习 PHP 的同时,接触到的数据库,服务器等等相关的内容,都是有用的;除此之外的一个目标,就是数据结构和算法,这个是不能再拖了,要慢慢地补起来,现在只能说是懂了一点点皮毛;再一个,就是学习 Go 语言,并且做些项目,现在初步的想法是准备用 Go 来搭建微信公众号,小程序的后台做个小项目。

重点学习什么

列一下未来一两年会着重学习的任务:

  • 数据结构和算法:这个就不再说了。
  • HTTP,TCP, UDP 等通讯:把网络通讯这一块啃一下。
  • Linux:要熟练 Linux,现在只能说是熟悉 Linux 的一些命令,这是不够的,有条件还要考虑能够在 Linux 环境下做开发。
  • Yii框架:经过这几次面试,我觉得我需要重新审视一下 Yii 这款框架,其实一开始学 Yii 学得很早,所以总会把它放在和 TP 一个阵营,其实 Yii 还是非常不错的,生态很好,虽然没有 laravel 那么热门,但是相对来说 Yii 上手可能会更流畅,性能也还可以,是一个折中的很好的选择,可能很多公司选择这个框架就是因为这些原因。学起来。
  • PHPUnit:要开始接触单元测试相关的内容了,不过这部分应该不难。
  • Swoole:Swoole 是早就想学的了,早机会快点学起来,因为一开始可能学得不会那么深入,目前经验也不够,但是越早学能够更有利于沉淀。
  • Golang:都说学了 Go 还学什么 Swoole,但是这是两种解决方案,懂得越多越好,技多不压身。
  • 设计模式:这一块主要了解各设计模式的原理,以及 PHP 中的实现;Go 还是比较特别的,所以 Go 的实现,我先放一放,了解了再思考一下。
  • 并发:并发这一块已经成为一道坎,因为没有并发方面的经验,错过了一家比较不错的公司,挺可惜。