作为一名已经很老的程序员中的菜鸟,是的,过了这么多年还是菜鸟。比起大厂的程序员来说技术上毫无优势,甚至都没做过大并发量的项目,一直在各种技术要求不高的公司里面混,是不是很失败?
然而毕竟也做了这么些年了,经历过了许多公司,被面试和面试过了许多人,也接触了不同性格的各种程序员,可以说对这个行业有一定的了解。
程序员,作为一个入门容易,进步更容易,但是要学的东西特别多,天花板特别高的行业,可以说并不是一个适合大多数人的理想职业,并不是培训机构学了几个月就能精通,就能直接拿到高薪。
从入门开始作为初级程序员,公司要求做的肯定是各种功能点,就像业内的流行语 “增删改查”,做的就是最基础的体力劳动,在架构师写好的框架的技术上不同的添砖加瓦,程序员经常自嘲的“码农”就来自于此。但是如果仅仅只是满足于此,或者只是会这些肯定是不够的。即使能够保障自己写的程序代码不出错,但是跟其他功能点之间的交互就会有问题,甚至可能会影响整个模块的正常运行。本人就经常遇到一些初级程序员写代码的时候不问清楚过程,给任务就直接开始写,最后不停的被提BUG,修改BUG,改BUG的过程中还产生了更多的BUG,最后搞的自己也疲惫不堪又不知道问题出在哪里。
要到中级程序员的水平,技术上也许并不用提升太多,但是在写程序的时候必须能独立负责一个模块,清楚整个模块各个功能点之间的调用关系。自己的功能模块和别的功能模块的交互情况。充分理解需求的情况下要理解背后的逻辑关系,做到自己写的模块心中有数,必然清楚整个调用链。和初级程序员最大的区别就是着眼点不在只是关注自己的功能点,而是要看到线,能够用线把功能点串起来。
高级程序员的技术水平起码要能对系统的功能点,模块和整体架构都有一定的了解和把握,需要能够指点初级和中级程序员的技术,对于系统有一个比较全面的考虑。在接到项目需求的时候要明白哪些很快可以开发的,哪些是需要一定的工作量,对于需求中的难点有自己的考量。此外,对于系统的业务价值也要有一定的认知,在确定方案的时候不能只是实现需求,而是要考虑未来的业务实现可能性和扩展性。在面对客户和产品的时候针对需求还有自己的好几个解决方式。
总结:想要成为高级程序员甚至架构师,考虑的问题一定是全方面的。技术是一方面,对于业务的理解也是一方面。