background image
5)学会如何保证工程质量; 
6)学会如何权衡利弊; 
7)学会如何在困难面前妥协。 
(4)抽象能力:初级开发者通常会等到逻辑重复时再抽象封装(甚至怕拖进度
或者懒惰而放弃)
,而高级开发者通常一开始写出的逻辑就为了以后的重用,并
且深知一开始多付出的思考设计时间最终都会因为复用得到回报。很多开发框架
就是一步步抽象——埋坑——优化而来的。 
(5)架构能力:一个业务系统如何划分模块,模块之间如何协作通信,每个模
块的技术选型如何做,系统细节如何规避问题等等。 
(6)优化能力:学会如何评估、分析、提升系统性能。优化途径很多,产品功
能优化、业务逻辑优化、基础技术优化、操作系统底层硬件的优化等等。 
(7)需求理解能力:程序员需要理解一个模块的需求,而不是单个的需求。在
性能需求指标中,稳定性、并访支撑能力以及安全性都很重要,作为程序员需要
评估该模块在系统运营中所处的环境,以及预测将要受到的负荷压力以及各种潜
在的危险和恶意攻击的可能性。 
 
2、从广度来看: 
php 开发基本上离不开操作系统、存储、缓存、网络、webserver 等等配套设施,
因此这也是高阶必备技能。一旦业务系统出问题了,必须要能快速定位解决(不
一定自己解决,但要知道找到哪个负责人来解决)
。 
比如存储 mysql,高级开发者会懂得利用索引、利用分表分库提高查询性能,懂
得负载均衡和灾备提高性能提高可靠性(虽然是 DBA 的工作,但了解了有助于出
问题时排查)
。 
比如缓存,高级开发者懂得如何有效且最大限度利用缓存系统提高应用性能。 
比如 http,初级开发者往往只懂得 http 网络请求就只一去一回两个包,高级开
发者会去深究网络七层模型、会深究 http 请求的各个环节(DNS、三次握手等等) 
比如 web 前端,学习如何依靠浏览器缓存、CDN 缓存、压缩代码、合并文件等等
提高前端性能,学习如何进行前端安全攻防。