我实在看不下去阳阳和柯基这两个菜鸡,代码写的一塌糊涂了,所以找了个时间,请他们吃了顿烧烤,给他们讲了讲数据结构的知识,讲的兴起就顺手就说了一下,一个程序员应该会哪些内容。
后来想了想,家里还有一堆菜鸡,干脆还是再整理出一张比较简陋的图好了。
前言:
我想了想,解释这些问题,其实比不上讲一下我朋友“暗灭大人”的成长经历,这样新人们就会对自己未来几年内的大致走向有了一个对比和期待,方向有了,路也明确了,就看你想在什么地方停下来了。
PS:本文依然是不对任何人负责,观点依然偏激而且绝不客观。
程序员的级别:
程序员只需要分成三个级别。
初级程序员:能够独立完成一个项目。
中级程序员:能够了解一些框架的原理,做出一些改进和优化。
高级程序员:能够写一些框架,或者是一个新的语言。
不管是算法搜索还是网络安全或者是某种新的语言原理,可以自由把框架两个字替换。
这里很多定义都不严谨,但是没关系了。比如说,项目的代码质量有好有坏,效率有高有低。
但是,大致这么分,是没错的。
所以,根据这三个级别,我画出来了以上的几个图,希望能够给新入门的小菜鸟们指一条路。最少也得知道自己究竟还有多菜。
不入流的程序员:
本来一点都不想把这个级别加上的,但是有太多转行过来的人,或者是正统院校的科班生会以为自己学了点多态多线程就已经是一个程序员了。。
其实数据结构,算法理论,数据库,计算机网络这几门课非常非常非常重要。重要到什么程度呢,这是程序员对于一个世界认知的开始,也是基础,底蕴积累的越好,以后的成就越高。
然后就是所谓的面向对象,或者是函数式编程的语法什么的。
这些东西真的不算啥,会点语法跟会写代码完全是两个概念。
初级程序员:
初级程序员的定义是可以独立完成项目。
这一个定义就秒杀了大概无数个工程师,很多人工作三年到五年也就是一个初级程序员而已。
能独立完成项目,就需要懂好多东西了。从业务的角度来说,要懂很多业务逻辑,能够理解并且抽象成模型转换成代码,要会测试,要会发布,要会改 Bug,要懂版本管理,要知道代码规范。
还需要懂一些框架和简单的基本原理。
以及团队规范和协作的内容。这些东西是很多培训机构教不了你的,七八流的公司不但教不了你反而会让你误入歧途的。
中级程序员:
中级程序员就是一个公司里的骨干了。小组 Leader 或者是架构师或者是老油条。眼里冒着精光头顶秃了一半的样子。
他们项目经验丰富,也需要带 Team,所以需要制订一些编码规范,开发流程。有时候嫌弃哪个框架不好用了,还需要自己改一些源码。
通过对这些框架的原理都要了解的比较深入,各种算法和原理了如指掌。不同的框架选型和应用场景应该是心知肚明。
当然有一些人并不是这样,喜欢总牛角尖,永远不知道什么时候该用什么事,往往是为了解决一个简单的问题引入了一堆复杂的技术最后反而成了专家。
设计模式和架构的东西是必须要懂的,很多时候都已经在考虑的是扩展性和兼容性。怎么样把程序和架构做好。
高级程序员:
这是比较稀少的物种。
世界顶级的程序员才称得上,众多开源框架的造物者才配得上高级程序员的名号。
他们对各种底层的协议和原理都比较了解,甚至本身就是某种协议的起草者或发起人。
我甚至都没见过这些人。
所以也不用关心这些人怎么样了,基本上都不会轮到你。
后记:
我没怎么分前端后端。想了想大部分都是相通的。
其实每一个职业需要掌握的技术,我都有整理过初级工程师的技能表。
不过还需要慢慢完善。
另外对于大部分转行的人来说,找机会把自己的基础知识补齐,边工作边补基础知识,真心很重要。
============Bye======
PS,本文由修真院学员整理。
对修真院有兴趣的,请点击这个链接去注册,首页 | IT 修真院 | 更快更高效的免费 Java,CSS,JS, 运维技术培训 必须用这个链接,拿我做推荐人可是有好处的 ~
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于