phper 的进阶思考——请教篇
作为一个将近4年的php开发者,个人觉得工作3-5年后就会进入一个相对迷茫的状态,当然情况因人而异,以我个人的心路历程为契机,跟大家讨论并学习下应当如何进阶。
1.php是属于相对简单的开发语言,入门上手很快,1-2年基本就能掌握上手,独立完成很多基本功能的开发,而且大部分时候是框架一套用,百度一搜索,代码一粘贴复制,上线能使用基本就算完事。稍微好一点的情况就是能自己封装一些常用功能,多使用一些扩展库,基于很多中小型公司的现状,也不会有一整套复杂的开发流程,什么需求评审,原型设计,定稿开发等等,往往都是需求一出来先整个功能上线后再慢慢优化调整,而且很多时候用php来开发,用户基数以及性能要求也不会有太大要求(以上都是对中小型公司的情况进行分析,希望有大厂的phper讲述下大厂的开发流程)。其次很多phper同时还兼任着服务器的环境配置及维护,更有甚者连前端界面都是自己来,一人任多职。
2.成为初级开发后,2-4年处于一个进阶的阶段,这个时候对底层知识的需求就大大提升,不再拘泥于简单的复制粘贴、增删改查这些东西了。这个时候其实也就是相对迷茫的时候了,大多数人会选择以下的方向去进一步发展。(1)深度学习,去了解php开发的一些底层原理,框架的底层架构知识,设计模式,网络原理等,再到一些数据结构与算法的深入了解。这里可以展开讨论下,这些东西大部分看起来都很晦涩难懂,不像学习语法以及框架文档一样,开箱即用,能获得现有的成就感,相反这些知识更多的是加深你对编程的理解,即主要是为什么去用这个方法或者说这些封装好的类的作用是啥,着重于思考。(就我个人而言,很多简单的理论看了能用,但能不能融会并应用到实际中来,是一个未知数,这里也希望大神指点一二)(2)广度学习,即从php扩展到其他语言,比如当下较为火热的golang、python等,对更多的语言有了解以及能掌握使用,更像是一块砖,哪里需要哪里搬,更甚于直接转型成为其他语言的开发者。同样这种选择其实也值得商榷,很多时候是觉得这门语言达到了一个瓶颈期,其他语言可以进行一个替代。
3.最为重要的一点就是发展,大家面临的都是职业发展路径规划的问题了,3-5年最为尴尬,高不成低不就。大厂对技能方面要求颇高,很多还需要相应的项目经历,而这些创业型公司怎么可能会有相应的用户以及流量的实践项目呢,很多就只能从理论上去探讨,缺乏实际应用,感觉这就是一个矛盾点,不知在小公司跳大公司的各路大神如何破解这一点?而退而求其次选择一些中型公司的话怎样的选择又是比较好的呢?
4.求各路大神进行指教,同时如果有好的进阶书籍或者规划文档等可以推荐下,共同探讨,共同进步!
本作品采用《CC 协议》,转载必须注明作者和本文链接
高认可度评论:
以下是我自己的理解,多半不对,只是说出来交流探讨
PHP 一般有两年就能干活就能应对95%以上的工作了,剩下不能应对的基本也属于是强行使用 PHP 来解决不适合它解决的问题(这是由 PHP 的运行时,zend engine 提供的能力决定)。PHP 在语言层面基本没多少学习深入空间。
提升的话:
LNMP 方面:
底层知识:
操作系统方面 LINUX 的进程/线程模型,以及协程。对其运行模型能够理解。
1.进程是如何运行的,进程有什么作用,进程的内存结构,子进程,进程组,frok
2.线程是什么,如何运行的,调度的
3.协程是什么,解决了什么问题
算法,我没时间看,没啥建议
要深入的话,这些都是蛮力,没的捷径(有一条,遇到不懂的问题,不要百度搜索,多去经典的书里找找,多去自己想,想错了也不要紧,学习就是不断加深自己和纠正自己以往的认知)。
而且理解的标准也很简单,就是对该事物能简单的描述。比如我理解的协程是什么,简单的说就是:用户态的线程,即不需要陷入内核就可以进行切换,只需要在当前线程上保存正在运行的过程的寄存器、程序计数器(如果系统提供了一条指令就可以完成的话,性能比线程调度高一个数量级别),解决了操作系统调度线程开销大,线程阻塞后需要陷入内核进行调度等问题,实现是采用类似系统进程表的形式,记录当前协程正在运行过程的程序计数器、寄存器,需要切换协程时,将当前线程的计数器和寄存器进行保存和替换,一旦替换完成,协程就会执行),当然这些是我的理解,不一定对。
另外语言的话,建议学 Java,另外 Java 学起来进展很慢,不会给你像学 Go 那样的快的成就感。
另外只推荐大部头书,一遍不懂就多遍(深入理解操作系统、UNIX 三部曲等),最好不要陷入像什么专栏这种读了之后看似懂了的虚假收获里
最最重要的时,你要有运气,这些都了解了之后能找到一个好工作,能学以致用。
以上都是自己理解,不一定对,甚至都是错的,只是提出一种自己的观点,每个人的路都是自己走出来的,亦步亦趋是不行的。欢迎一起交流与学习
别问 问就是swoole
linux内核原理,数据结构与算法,数据库底层,C语言程序设计。
你都知道深度学习跟广度学习,而且列出来的知识点都很详细了,找个方向实践就是了,没什么好请教的了
多问问自己,难在哪里?看看招聘要求,面试得到的反馈等等,各方面都可以找到自己的不足然后针对性提升。
先广后深。 swoole、es、mq、docker、redis 都要会用,然后再学习一们语言java或者golang。螺旋式上升
发现做php的最容易迷茫 :sob:
程序员转行修电脑
:joy:
感同身受;
确实该迷茫,成为大牛是不可能了,就是比初级高,比高级低,但不是中级 :joy: :joy: :joy: :joy:
全干工程师、一问理论不会、只会干。
为什么你们的名字后面会带一个绿色的 课程读者 标签啊?
程序员的定位:『应用型工程师』或『科研型工程师』
以下是我自己的理解,多半不对,只是说出来交流探讨
PHP 一般有两年就能干活就能应对95%以上的工作了,剩下不能应对的基本也属于是强行使用 PHP 来解决不适合它解决的问题(这是由 PHP 的运行时,zend engine 提供的能力决定)。PHP 在语言层面基本没多少学习深入空间。
提升的话:
LNMP 方面:
底层知识:
操作系统方面 LINUX 的进程/线程模型,以及协程。对其运行模型能够理解。
1.进程是如何运行的,进程有什么作用,进程的内存结构,子进程,进程组,frok
2.线程是什么,如何运行的,调度的
3.协程是什么,解决了什么问题
算法,我没时间看,没啥建议
要深入的话,这些都是蛮力,没的捷径(有一条,遇到不懂的问题,不要百度搜索,多去经典的书里找找,多去自己想,想错了也不要紧,学习就是不断加深自己和纠正自己以往的认知)。
而且理解的标准也很简单,就是对该事物能简单的描述。比如我理解的协程是什么,简单的说就是:用户态的线程,即不需要陷入内核就可以进行切换,只需要在当前线程上保存正在运行的过程的寄存器、程序计数器(如果系统提供了一条指令就可以完成的话,性能比线程调度高一个数量级别),解决了操作系统调度线程开销大,线程阻塞后需要陷入内核进行调度等问题,实现是采用类似系统进程表的形式,记录当前协程正在运行过程的程序计数器、寄存器,需要切换协程时,将当前线程的计数器和寄存器进行保存和替换,一旦替换完成,协程就会执行),当然这些是我的理解,不一定对。
另外语言的话,建议学 Java,另外 Java 学起来进展很慢,不会给你像学 Go 那样的快的成就感。
另外只推荐大部头书,一遍不懂就多遍(深入理解操作系统、UNIX 三部曲等),最好不要陷入像什么专栏这种读了之后看似懂了的虚假收获里
最最重要的时,你要有运气,这些都了解了之后能找到一个好工作,能学以致用。
以上都是自己理解,不一定对,甚至都是错的,只是提出一种自己的观点,每个人的路都是自己走出来的,亦步亦趋是不行的。欢迎一起交流与学习
我认为:程序员->小卖部老板 :see_no_evil:
PHP转C语言开发怎么样?
从培训班出来,在外包干了大半年,也很迷茫,日常就是CURD,觉得很多东西都还得学,但是没有方向
可以看看职业模型从新手到专家-德雷福斯模型的五个阶段应该会对你有所帮助
技术可以满足工作需求之后我选择:
1、程序员->需求分析
2、程序员->产品经理
3、程序员->架构师
走走看看哪个好走再补充需要的技术,反正不做螺丝钉。