烦恼一般都是想太多了。

0%

关于职业与工作方向的思考

一直以来,我所学颇杂。没有一个固定的方向。但人到中年,果然不能不考虑一下今后的路该怎么走。我们这个行业是一个人才辈出的行业,也是一个长江后浪推前浪的行业,稍不注意,就会为时代所淘汰。

大学

大学念的是 电子科学与技术,其中涉及的基本课程是比较多的。如 模拟电路,数字电路,C语言,单片机,汇编,信用与系统,通信原理,量子力学等课程。但其实都没有用心去学,多数的时间都浪费在电脑游戏上面,至今想来,后悔不已,但可惜时光已不再。

而毕业后的第一份工作,也不是和我的专业有关,而是进入了一个做手机渠道的问题,在其中浑浑噩噩的度过了两年。最终才接触了真正与程序,软件有关的东西。

游戏

从游戏开始,才真正的算是开始了解些东西。从第一份工作的时候,其实我就没有停止过对于程序的探索。但苦于实在是不得入门,完全不知道从哪里开始。而自己做看过的书籍,却没有一本是教我怎么样去写一个漂亮的程序出来的。如,APUE,LINUX相关的东西。2011年左右,移动互联网还不是很繁荣的时代,多数的游戏还是在PC上,自然就逃不了C++,MFC等内容。问题是,我们书本上学的东西,全是让在 Terminal 下进行写代码,哪里会教用用来写一个界面呢。

我接触此游戏也是从后台开始的。这个游戏,不需要太多的开发工作,框架引擎是已经选定了的。所需要多的,就是将其假设起来,通过修改相关的配置文件,利用Lua编写的程序来实现各种功能。

恰好,这就是我所擅长的,对APUE的多次阅读,让我对LINUX的理解其实是非常深刻的。在那个圈子里,小有名气。而我也从未停止对于知识的渴望。MYSQL相关的知识就是在那个时候所学习的。

设置,游戏涉及到的还不仅仅如此,还会涉及到各种展示如 html制作,cdn, ddos防御等等。这些知识,居然在那个时候虽不是很深入,但却也有了相当的了解。

后面换的工作,也是与运维有关,确实,多数工作都是在Linux上,难度都不大,只是对于业务系统的了解深度,决定了工作的效率。

转行

生活总得继续,云服务的出现,让传统运维越来越少,不能不转行了。安卓、iOS兴起,让每个人都无法避免的想要加入移动互联网。

虽然和我共事,工作的人,都觉得我的技术过硬,有点厉害。但其实我却不这么觉得,因为我觉得我自己无法设计出一个完成的系统架构,解决一个项目的业务。这就跟我无法在只学了终端下编程就能写出GUI程序一样。

最近的一分工作是写安卓代码。以前从来没有接触过Java,有点心惊。在此之前,我从来没有使用过IDE写过一行代码,全都是VIM。但是据说,如果是写JAVA的话,还是用IDE吧,VIM就算了。诚如其言,我还是使用了AS。

接触其中,才觉得其实安卓也不是很难。特别是其在使用性上越来越方便,其宗旨是让用户更多的专注在业务逻辑上的时候,我已经不再纠结于我的控件是否摆放得非常的符合人体学了。

因为我们是以项目为导向,而不是以产品为导向。主要目的是解决问题,而不是提高体验。估计这话产品经理听到了会很不爽的。

但这其中还是有很多值得研究的东西。当第一眼看到以前的老人写的代码的时候,感觉是懵逼的。完全不知所言。但当对安卓的整体架构有了了解以后,就再也不会看不明白了。

比如,我现在就十分鄙视用 AsyncHttpClient 来做网络请求来,我觉得还是 Retrofit 比较好使。我现在讨厌把业务逻辑也放在 View 内,造成我改一个需求的时候,头昏眼花。我觉得 MVP 就是一个非常不错的做法,虽然,会增加一些开发的工作量,但会大大减少维护的难度呢。

当然,一直为大家所推崇的,dagger + rxjava 我还没有空去了解,但我觉得不远了。

未来

马上 30 了,这是一个坎,程序员的中年危机,比哪个行业都来惨烈。是 30 岁了还在电脑面前写代码,同时要听着那个新来的小伙计在那咂咂乎乎;还是自己去做点什么事情呢?不知道曾经在哪里看到过一句话,每一个程序员最终的归宿都是项目经理。

但这却不是我所想,至少最近几年内我无法想象。那么这三四年内我所能做的事情,难道就只是提高自己的技术,做一个自由的职业者么?但我与同行比起来似乎我并不具备什么优势呢?