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 协议》,转载必须注明作者和本文链接
迷茫但不退却
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 39

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

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

提升的话:

LNMP 方面:

  1. 对其各个部分的运行时与流程能够烂熟于胸,对一些问题能想深入些,摸棱两可的东西千万要想明白。
  2. MySQL,首先要熟悉其单机工作模式,理解索引原理,理解其查询流程,能够大致找到 SQL 的执行问题,做一些简单的诊断。
  3. NGINX 的话理解其稳定与高性能的原因,一些常用的配置

底层知识:

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

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

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

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

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

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

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

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

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

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

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

3年前 评论
回到原点 (楼主) 3年前

别问 问就是swoole

3年前 评论
回到原点 (楼主) 3年前
wenqingzzz 3年前
赌赌赌赌赌赌赌圣! 3年前
回到原点 (楼主) 3年前
php炎黄

linux内核原理,数据结构与算法,数据库底层,C语言程序设计。

3年前 评论

你都知道深度学习跟广度学习,而且列出来的知识点都很详细了,找个方向实践就是了,没什么好请教的了

3年前 评论
回到原点 (楼主) 3年前

往上找好点的工作比较难

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

3年前 评论
wenqingzzz

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

3年前 评论
回到原点 (楼主) 3年前
wenqingzzz (作者) 3年前
回到原点 (楼主) 3年前
wenqingzzz (作者) 3年前

发现做php的最容易迷茫 :sob:

3年前 评论
回到原点 (楼主) 3年前

程序员转行修电脑

3年前 评论
回到原点 (楼主) 3年前
刘天承

:joy:

3年前 评论

感同身受;

3年前 评论
回到原点 (楼主) 3年前

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

3年前 评论
回到原点 (楼主) 3年前

全干工程师、一问理论不会、只会干。

3年前 评论

为什么你们的名字后面会带一个绿色的 课程读者 标签啊?

3年前 评论
jfpl 3年前

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

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

提升的话:

LNMP 方面:

  1. 对其各个部分的运行时与流程能够烂熟于胸,对一些问题能想深入些,摸棱两可的东西千万要想明白。
  2. MySQL,首先要熟悉其单机工作模式,理解索引原理,理解其查询流程,能够大致找到 SQL 的执行问题,做一些简单的诊断。
  3. NGINX 的话理解其稳定与高性能的原因,一些常用的配置

底层知识:

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

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

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

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

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

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

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

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

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

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

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

3年前 评论
回到原点 (楼主) 3年前

我认为:程序员->小卖部老板 :see_no_evil:

3年前 评论
回到原点 (楼主) 3年前
UKNOW

PHP转C语言开发怎么样?

3年前 评论
回到原点 (楼主) 3年前
zmxyzmxy1234 3年前
iohex 2年前

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

3年前 评论
回到原点 (楼主) 3年前
JaguarJack

可以看看职业模型从新手到专家-德雷福斯模型的五个阶段应该会对你有所帮助

3年前 评论

技术可以满足工作需求之后我选择:

1、程序员->需求分析
2、程序员->产品经理
3、程序员->架构师

走走看看哪个好走再补充需要的技术,反正不做螺丝钉。

3年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!