如今工做几年的php开发者都会有这样的迷茫,php开发多了,无外乎“增删改查调接口”,感受天天的工做都是重复性的劳动,一点新意也没有,感受技术上没有多大的长进了。真的是这样吗?php
实际上开发者除了把本身当成php程序员,更应该关注php之外的东西,将本身定位于能熟练使用php搭建系统的工程师。我认为高级php工程师能够往几个方向去发展:前端
1.深度方向mysql
一个工程师要往高阶发展,必须同时强化几个技术能力:程序员
设计能力:懂得如何利用分层、面向对象、设计模式等设计组织代码。web
编码能力:熟悉php语法特性,知道怎么用一两行代码代替初级开发者十几上百行代码。sql
工程能力:学会如何快速构建工程,学会如何构建可读、可扩展性的工程,学会如何避免埋坑给后人,学会如何与人协做维护工程,学会如何保证工程质量,学会如何权衡利弊,学会如何在困难面前妥协。设计模式
抽象能力:初级开发者一般会等到逻辑重复时再抽象封装(甚至怕拖进度或者懒惰而放弃),而高级开发者一般一开始写出的逻辑就为了之后的重用,而且深知一开始多付出的思考设计时间最终都会由于复用获得回报。不少开发框架就是一步步抽象/埋坑/优化而来的。浏览器
架构能力:一个业务系统如何划分模块,模块之间如何协做通讯,每一个模块的技术选型如何作,系统细节如何规避问题等等。缓存
优化能力:学会如何评估、分析、提高系统性能。优化途径不少,产品功能优化、业务逻辑优化、基础技术优化、操做系统底层硬件的优化等等。安全
2.广度方向
php开发基本上离不开操做系统、存储、缓存、网络、webserver等等配套设施,所以这也是高阶必备技能。一旦业务系统出问题了,必需要能快速定位解决(不必定本身解决,但要知道找到哪一个负责人来解决)。
好比存储mysql,高级开发者会懂得利用索引、利用分表分库提升查询性能,懂得负载均衡和灾备提升性能提升可靠性(虽然是DBA的工做,但了解了有助于出问题时排查)。
好比缓存,高级开发者懂得如何有效且最大限度利用缓存系统提升应用性能。
好比http,初级开发者每每只懂得http网络请求就只一去一回两个包,高级开发者会去深究网络七层模型、会深究http请求的各个环节(DNS、三次握手等等)。
好比web前端,学习如何依靠浏览器缓存、CDN缓存、压缩代码、合并文件等等提升前端性能,学习如何进行前端安全攻防。
其实做为一个程序员,真正的价值在于他的机会,而不少机会必定会留给有实力的人,不要认为本身怀才不遇,不要怨天尤人!