我想成为一个真的程序员

3,189

最近看了 左耳朵耗子 写的一段话:

所以,我和一些人开玩笑说,我们可能都是在写一样的 for(int i=0; i<n; i++) 语句,但是,你写在那个地方一文不值,而我写在这个地方,这行代码就值 2000 元。不要误会,我只是想用这种“鲜明的方式”来加强我的观点。

读到时,脑袋一阵晕眩。为了让你往后的日子不被嫌弃,现在自己必须抓紧时间沉下来。

编程时间越久,越觉得需要回头看,啃基础。写业务的时间再久,天花板的高度也不会被你撑高。

业务的编码,为我带来的一些成长是:如何更好的代码复用;如何将具体的业务进行拆分成代码模块;如何组织项目的结构,方便快速开发与维护;如何进行日常的运维;如何配置相关的系统、环境等等。

那么这些技巧学会之后,该如何往深入走?特别是当前云技术的发展,让很多基础的运维工作变得相当简单。如果仅仅是掌握了基础的编码工作,随着时间的增长,5年、10年程序员的竞争力如何体现?每当想起这些,不能不让人焦虑。

但是过份的焦虑,会让人丧失学习能力。我们需要在认识到自己局限的同时,脚踏实地的耕耘自己这一方水土。不要想着速成,现在知识付费很流行,但是你花钱买别人嚼过的东西,提高不了自己。问渠那得清如许?为有源头活水来。特别是做为程序员我觉得更应该自己去研究、去尝试、去思考。
社会并不会嫌弃变老变慢的程序员,而是会嫌弃哪些年龄变老了,技能却依然没有变化的人。

程序员

当别人问我的职业时,我会骄傲的说:程序员。可是仔细想想感觉自己不是程序员。为什么?并不是仅仅因为月薪没上5万,而是:

程序 = 数据结构 + 算法

我在想我写的代码中,哪些包含了数据结构,哪些又包含了算法呢?都不好意思继续往下想了,我一定是个假的程序员。

为了让自己成为一个真正的程序员,不是薪水上而是能力上的。需要改变自己的学习、工作策略。多去学习需要不断练习与思考的技能,特别是需要思考的东西。因为大部分人不愿意思考,多思考一份就比别人多一份优势。将重复性的工作最大程度自动化,不要浪费自己宝贵的时间。

学习,需要先找到目标

学习需要具有目标性,要不然就是芝麻西瓜都在捡。当前很多公司都在强调全栈工程师,但是根据个人发现,真正的全栈一定是某个方面很牛,其它方面则比较平均。而很多公司要全栈的原因(特别是小公司),仅仅是为了要一个什么都能够做点的工程师,让你今天做做h5,明天搞搞小程序,后天再写个api。

上面的情况不会让你发展成为全栈,会让你发展成为三不像,没有自己的核心能力区。现在的技术不管是前端还是后端,都变得越来越细致,都需要投入大量的时间才可能成为专家。

你是想在某个领域成为专家,还是成为爱好者,会让结果千差万别。在开始前,先定位自己当前所处位置以及目标。找出二者之间的差距进行弥补。

我一边觉得庆幸自己在现在意识到了这一切,另一方面又对自己以前的种种无知表示后悔。知识应该由点极面的逐步展开。用php来讲,我肯定第一步是写好php代码,学好面向对象与设计模式,这一部分工作在业务阶段可以很好掌握,那么之后php相关的性能问题、扩展开发问题就需要逐步去深入了解,这就需要去学数据结构、算法、c语言等等知识。这是由php带来的深入方向,对于横向的,就需要去了解linux、mysql、nginx相关的知识点。这样一步步下来完成自己的深度与广度。

好的知识与技能都不可能短时间学成。让自己变得具有专业性、稀缺性很重要。