程序员|程序员的三重境界,看看你在哪一重

程序员|程序员的三重境界,看看你在哪一重

文章图片

程序员|程序员的三重境界,看看你在哪一重

由于近二十年软件行业正处于快速上升期 , 因此很多各类专业的高校毕业生很多都转向了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个二进制数对应的十六进制数就好了 。