由于近二十年软件行业正处于快速上升期,因此很多各类专业的高校毕业生很多都转向了IT工作,拿到了在本专业不可能拿到的薪资待遇。同时,也有很多面向想转向软件方向人员的培训班也大行其道。

在这种情况下,很多人觉得软件行业是一个门槛很低,任何人都能做的行业。甚至很多初高中毕业的人也在各种机缘巧合之下踏入了这个行业。比如说当年肆虐网络的“熊猫烧香“病毒作者李俊就是一个技校毕业生。所以大批的年轻人争先恐后地踏入了这个行业。那么,事实真的是这样的吗?软件行业真的没有什么门槛吗?显然不会是这样的。下面我们就来看看软件从业人员的三重境界吧。

第一重:增删查改、业务逻辑

数据库的增删查改,对于业务逻辑的一些基本处理。这是大部分企业的基本需求,也是软件行业从业人员最多的一批。这类技术基本上没有什么门槛。具体表现可能是BS架构也可能是CS架构。具体要做的事情就是,从数据源里把数据查询出来,按照业务所需要的逻辑组成最终要显示的数据,然后展现出来。

只需要熟练掌握一两种基本的数据库,像MySql、Oracle、Postgres、SQLServer,也可能是MongoDB、Hive/Hbas、ES等等,或者是一些基本文件的读写,比如说XML、CSV、Excel或者某些特定的二进制文件之类的。然后把数据读出来,按照需要的业务逻辑进行各种组合,最终把结果展示给用户。典型的比如说人员管理系统、会员管理系统之类的。在此基础上,加上一些优化、缓存、消息队伍、多线程之类的技术点,基本上就能应付很大一部分工作了。

打开网易新闻 查看更多图片

这个境界,基本上就是所谓的“码农”了。在这个境界上,优秀一点的能够做一些性能优化和架构设计。做一些SQL优化、高并发设计之类的。但实际上,大部分处于这个境界的码农,可能连数据库的读写分离都没有做过。而且对于外人来讲,很难分辨出两个人的水平高低,毕竟用十行代码和一百行代码,最终出来的东西都是一样的。而现在服务器的性能也很好的掩饰了这个层次代码的优劣。

在这个境界上,熟练工与新人的差距,可能只需要两三个星期就能够抹平。最终在35岁提前“毕业”的,也大部分是这个境界的程序员。

这个境界的程序员,年薪顶点大约在30万到50万左右。

第二重:组合数学、架构优化

第二重境界的程序员,会熟练使用一些基本的数学算法解决实际应用中遇到的一些疑难问题,典型的一些算法比如贪心、迭代、分治、枚举、路径优化等。另外一些人,则对于各种安全加密方法信手拈来,比如说RSA、DES、MD5、ECC等。

这一种境界的程序员,已经跳出了某种技术框架的限制,无所谓采用某种编程语言,对于他们来讲,语言只是实现目标所用的工具,如果Python省事那就用Python,如果Java方便那就用Java。这些人关注的目标是解决问题的方式方法,而不是具体的实现路径。同样的这类程序员的简历上,也主要会体现解决过哪些问题,获得哪些成果。而不是单纯地罗列技术和项目。通常来讲,这类程序员会有一些发明专利,虽然可能是难以盈利那种专利。

第二重境界与第一重境界的主要区别可以这样认为,初高中时候,一些比较难的题,一重程序员做不出来,二重程序员能够做出来。而做出来之后,一重程序员会恍然大悟,呀,原来还可以这么做。但是下次让一重境界的程序员自己做,还是做不出来。

下面这个例子可以较好地解释出前两类程序员的差别。

一所大学的第一节离散数学课上,老师看了一下课堂上的同学,说,我只看一下,就能够背出在座的同学们哪个座位上的同学是戴眼镜的。同学们纷纷表示不信,说这好几十人老师你怎么记得下来。然后老师微微一笑,转过头去,在黑板上画了个表,依次写下哪个座位上的同学是戴眼镜的,丝毫不差。同学们都震惊了。说老师你的记忆力太好了。老师说其实很简单,我们教室的座位,每排八个座位,共八排。其实就是一个八个二进制数而已。我只需要把戴眼镜的同学设为1,其他没戴或空着的座位设为0,每排记一两个数,最多记16个二进制数对应的十六进制数就好了。

就像这样,如果戴眼镜的同学设为1:

所以这位老师要记的数其实就两行,20384d12, 60385f92。这样数据编码解码之后,具体哪个座位上的同学戴眼镜就很明显了。是不是一说就觉得很简单了呢?

对于第二重境界的程序员,他们会很熟练的解决普通程序员很难解决,或者解决方法很笨的问题。因此,这一类程序员的不可替代性也比第一类程序员高得多。事实上,对于大部分第一重境界的程序员,很多连基本的二进制数都不会换算。

这个境界的程序员,能够熟练的解决大数据、高并发、流处理等场景下的各种问题。年薪顶点大约在50到100万左右。

第三境界:高等数学,攻坚克难

如果说第一境界和第二境界是普通人能够理解的工作的话,第三境界的工作可能已经在普通人能够理解的东西之外了。这并不是说他们从事的工作是正常人无法涉及的,更主要的是,从科学角度来说,第三境界的程序员,他们的工作所涉及的科学问题和工程问题,是普通人一辈子也看不懂的东西了。这也是第三境界与第二境界的最主要差距。

他们的程序要处理的问题,描述起来,可能是酱婶儿的:

打开网易新闻 查看更多图片

对于第三境界的人来说,他们的主业已经不是程序,而是程序只是实现他们思路的一种方式方法,他们最主要的工作是在推导数学问题,在解决问题的基础上,写个程序验证一下。他们惯于把实际的问题抽象成数学问题,用各种让人看不懂的方程、公式来描述我们这个世界的运行基础,他们可能熟练掌握傅立叶变换或勒贝格积分,也可能深谙深度学习和人工智能,

对于他们,学习和掌握某一领域的前沿技术,并且应用到工程实践中来,是一种乐趣,也是一种自我价值的实现。

通常来讲,他们的程序,要么有着各种写在大学教科书上的理论支撑,要么支撑着自己的论文和理论。

对于这一境界的人来说,薪资待遇通常已经不是他们考虑的问题了。而是工作更是他们人生的一个乐趣。

那么,各位程序员朋友们?你们又在哪个境界呢?