编程语言
首页 > 编程语言> > 工作4年的程序员渴望进阶高级渴望进大厂,非常迷茫求指点

工作4年的程序员渴望进阶高级渴望进大厂,非常迷茫求指点

作者:互联网

  这篇文章对php程序员太典型了,我就不在头部分享浅析了,因为很多大神纷纷在底部评论发言,建议想法都很有意义,想了解的朋友希望你看完正文,不妨在看完评论,话不多说直接分享。

  正文

  作为一个将近4年的php开发者,个人觉得工作3-5年后就会进入一个相对迷茫的状态,当然情况因人而异,以我个人的心路历程为契机,跟大家讨论并学习下应当如何进阶。

  1.php是属于相对简单的开发语言,入门上手很快,1-2年基本就能掌握上手,独立完成很多基本功能的开发,而且大部分时候是框架一套用,百度一搜索,代码一粘贴复制,上线能使用基本就算完事。稍微好一点的情况就是能自己封装一些常用功能,多使用一些扩展库,基于很多中小型公司的现状,也不会有一整套复杂的开发流程,什么需求评审,原型设计,定稿开发等等,往往都是需求一出来先整个功能上线后再慢慢优化调整,而且很多时候用php来开发,用户基数以及性能要求也不会有太大要求(以上都是对中小型公司的情况进行分析,希望有大厂的phper讲述下大厂的开发流程)。其次很多phper同时还兼任着服务器的环境配置及维护,更有甚者连前端界面都是自己来,一人任多职。

  2.成为初级开发后,2-4年处于一个进阶的阶段,这个时候对底层知识的需求就大大提升,不再拘泥于简单的复制粘贴、增删改查这些东西了。这个时候其实也就是相对迷茫的时候了,大多数人会选择以下的方向去进一步发展。(1)深度学习,去了解php开发的一些底层原理,框架的底层架构知识,设计模式,网络原理等,再到一些数据结构与算法的深入了解。这里可以展开讨论下,这些东西大部分看起来都很晦涩难懂,不像学习语法以及框架文档一样,开箱即用,能获得现有的成就感,相反这些知识更多的是加深你对编程的理解,即主要是为什么去用这个方法或者说这些封装好的类的作用是啥,着重于思考。(就我个人而言,很多简单的理论看了能用,但能不能融会并应用到实际中来,是一个未知数,这里也希望大神指点一二)(2)广度学习,即从php扩展到其他语言,比如当下较为火热的golang、python等,对更多的语言有了解以及能掌握使用,更像是一块砖,哪里需要哪里搬,更甚于直接转型成为其他语言的开发者。同样这种选择其实也值得商榷,很多时候是觉得这门语言达到了一个瓶颈期,其他语言可以进行一个替代。

  3.最为重要的一点就是发展,大家面临的都是职业发展路径规划的问题了,3-5年最为尴尬,高不成低不就。大厂对技能方面要求颇高,很多还需要相应的项目经历,而这些创业型公司怎么可能会有相应的用户以及流量的实践项目呢,很多就只能从理论上去探讨,缺乏实际应用,感觉这就是一个矛盾点,不知在小公司跳大公司的各路大神如何破解这一点?而退而求其次选择一些中型公司的话怎样的选择又是比较好的呢?

  4.求各路大神进行指教,同时如果有好的进阶书籍或者规划文档等可以推荐下,共同探讨,共同进步!

  底部评论,很有建议意义

  高度认可度评论

  以下是我自己的理解,多半不对,只是说出来交流探讨

  PHP 一般有两年就能干活就能应对 95% 以上的工作了,剩下不能应对的基本也属于是强行使用 PHP 来解决不适合它解决的问题(这是由 PHP 的运行时,zend engine 提供的能力决定)。PHP 在语言层面基本没多少学习深入空间。

  提升的话:

  LNMP 方面:对其各个部分的运行时与流程能够烂熟于胸,对一些问题能想深入些,模棱两可的东西千万要想明白。

  MySQL,首先要熟悉其单机工作模式,理解索引原理,理解其查询流程,能够大致找到 SQL 的执行问题,做一些简单的诊断。

  NGINX 的话理解其稳定与高性能的原因,一些常用的配置

  底层知识:

  操作系统方面 LINUX 的进程 / 线程模型,以及协程。对其运行模型能够理解。

  1. 进程是如何运行的,进程有什么作用,进程的内存结构,子进程,进程组,frok

  2. 线程是什么,如何运行的,调度的

  3. 协程是什么,解决了什么问题

  算法,我没时间看,没啥建议

  要深入的话,这些都是蛮力,没的捷径(有一条,遇到不懂的问题,不要百度搜索,多去经典的书里找找,多去自己想,想错了也不要紧,学习就是不断加深自己和纠正自己以往的认知)。

  而且理解的标准也很简单,就是对该事物能简单的描述。比如我理解的协程是什么,简单的说就是:用户态的线程,即不需要陷入内核就可以进行切换,只需要在当前线程上保存正在运行的过程的寄存器、程序计数器(如果系统提供了一条指令就可以完成的话,性能比线程调度高一个数量级别),解决了操作系统调度线程开销大,线程阻塞后需要陷入内核进行调度等问题,实现是采用类似系统进程表的形式,记录当前协程正在运行过程的程序计数器、寄存器,需要切换协程时,将当前线程的计数器和寄存器进行保存和替换,一旦替换完成,协程就会执行),当然这些是我的理解,不一定对。

  另外语言,建议学 Java,另外 Java 学起来进展很慢,不会给你像学 Go 那样的快的成就感。

  另外只推荐大部头书,一遍不懂就多遍(深入理解操作系统、UNIX 三部曲等),最好不要陷入像什么专栏这种读了之后看似懂了的虚假收获里

  最最重要的是,你要有运气,这些都了解了之后能找到一个好工作,能学以致用。

  以上都是自己理解,不一定对,甚至都是错的,只是提出一种自己的观点,每个人的路都是自己走出来的,亦步亦趋是不行的。欢迎一起交流与学习

  评论者1

  别问 问就是 swoole

  评论者2

  多问问自己,难在哪里?看看招聘要求,面试得到的反馈等等,各方面都可以找到自己的不足然后针对性提升。

  评论者3

  先广后深。 swoole、es、mq、docker、redis 都要会用,然后再学习一门语言 java 或者 golang。螺旋式上升

  评论者4

  确实该迷茫,成为大牛是不可能了,就是比初级高,比高级低,但不是中级

  评论者5

  从培训班出来,在外包干了大半年,也很迷茫,日常就是 CURD,觉得很多东西都还得学,但是没有方向

标签:语言,协程,渴望,程序员,理解,线程,评论者,php,进阶
来源: https://www.cnblogs.com/linjingyg/p/15802601.html