2018年,我接触PHP工作的第一年,也是我步入社会的第一年,收获良多。
从学校出来到今日已经工作半年,这半年来收获了很多东西,现在来好好总结这半年工作遇到的问题和收获,希望来年可以得到更好的成长。
一、语言基础的重要性
任何高楼大厦都不是平地而起,都需要先建好地基才能保证后续的施工。想要很好的使用PHP语言,掌握其语言基础是非常重要的。在工作之前我没有很好意识到这个问题,导致在工作的时候走了很多弯路。
语言基础薄弱会造成很多问题,这里先举例我遇到的问题。
1、频繁使用百度
这里不是说不能用百度,而是频繁地使用百度去搜索同一个问题。
PHP语言本身函数众多、命名比较杂乱,经常忘记某些函数的使用方法也是正常的。对于用的少函数可以偶尔查阅文档,但是对于经常使用的一些函数,字符串函数、数组函数、还是需要牢牢掌握。作为新手的我,开始很多函数忘记了经常百度,百度上会有各有各种的答案,虽然能解决问题,但最好还是下载一个当前使用版本的PHP手册,可以最直接了解函数的使用方式。
相信谁也不想工作个几年还是要过度依靠百度,身为PHPer应当有使用好PHP的觉悟。PHP在入门上确实比较简单,但是到了一定的程度学习难度也不低。所以百度过的知识要及时吸收成为自己的知识,不能今天查阅了,改天又去查阅,从始至终还是不会。
2、编程复杂化
实现某一种功能会有很多种方法,每个人实现的方法也尽不相同。语言基础薄弱,对PHP本身的特性不够了解,实现功能的时候可能会使用比较笨拙的方法或者走一些弯路。
本来有某种函数直接可以实现需要完成的功能,硬是通过好几个函数和一些复杂的逻辑来实现这个功能,无意中重新封装已存在的内置函数。
本来可以使用某个函数直接实现需要完成的功能,硬是写了好几个循环来到这个目的。
为了防止后续还有这种问题发生,应该多看看PHP手册看看不同函数的功能,不要求记住每个函数,但最少要知道有什么函数可以实现什么功能。在碰到棘手的问题时,说不定就可以利用上某个函数达到事半功倍的效果。
3、性能的忽略
起初工作之时,我没有关注性能的问题。所以很多代码都写得非常粗糙,只要能实现功能,无所不用。在项目还小时没有太大的影响,随着日后功能扩展,页面加载时间会的越来越长,这个时候再去优化性能就会非常困难。
一个后端人员无疑要在追求高性能的道路上越走越远,至少我是这么认为。
提高性能就需要了解哪些方便会影响性能,前端显示、后端请求、数据请求。
大部分性能都会在数据库上损失,所以好的数据库设计、数据库语句至关重要。
PHP方面,能放在前端处理的尽量让前端来处理。
当然提高PHP性能的方式有很多种方案,这里只说由于语言基础薄弱造成的性能问题。不要使用过多无谓的循环,尽量使用合理的逻辑。
二、代码规范的重要性
好的代码阅读起来会比较舒服,自然维护起来就会非常省力。糟糕的代码不仅阅读起来吃力,日后维护成本也是成倍增加。
在一个团队中合作,尽量大家都遵从相同的代码规范,例如现在PHP的PSR规范。代码不仅自己看,也要别人看的懂。倘若每个人的代码都很随意,相信配合起来会遭遇不少的阻力。
在团队中,最令程序员头疼的事情就是阅读别人的代码,但是因为工作需要无法避免。时间一长就连自己都不想去阅读自己写的糟糕代码。
遵从代码规范,至少个人要保持相同风格,不能一个页面各种风格。函数名、变量名、类名、类方法、类属性,都如何命名,要遵从代码规范时也要养成属于自己的风格,可以在一定程度上省去命名的犹豫、纠结的时间,维护起来也会相对容易。
要怎么养成好的代码风格呢,首先阅读PSR规范,然后在读读一些知名的库、框架源码,找到一份属于自己的代码风格一直沿用下去。
三、英语的重要性
书到用时方恨少,这句话果然没错。读书的时候没有好好学习英语,现在经常要给函数,变量命名的时候会感受到词穷,使用拼音会不够精准,也不够专业。
英语差更主要的后果会造成一些技术文档阅读起来会非常困难,一些内置函数不理解,强行记忆。
当然这里的英语指是更偏向我们的计算机专业英语,我们更多阅读的还是和计算机、编程相关的英语。应该多下功夫加强这方面英语的学习,才能在编程的道路越走越顺。否则和我一样走了很多弯路,看百度上人家介绍、说明的。不仅仅不够准确,主要是过时。每个语言都在不停的更新,修复BUG,完善中,PHP也不例外。很多问题网上之所以不能解决是因为版本已经变了,所以只有阅读最新的文档才能找到答案,如果英语不好,强行使用翻译软件有时会造成很大的误解。
四、团队合作的重要性
上面说的都是个人方面需要注意的地方,现在就要说到一个项目开发中最为重要的部分,团队合作。团队合作要注意以下问题。
1、及时沟通
刚开始工作的时候,我自以为是很多事情都按照自己的思路来进行工作,最后导致结果非常糟糕。因为我刚加入公司时对项目的结构不够了解,一些数据我费了半天力气才得到,后来才知道本来就有封装好的方法,费力费时。
及时沟通不仅有助于自己的工作展开,也有助于项目的推进。如果每个人都各自为营,效率会大打折扣。
2、合理分工
在团队合作中,合理分工是非常重要的。在我工作半年中,我深受这个环节的折磨。我加入的是小公司,资金有限,在人员配置上不那么专业,因此分工上也非常随意不够合理。项目初期并没有什么大碍,随着项目的深入暴露的问题越来越多。
我们当时是按照每个模块按人分配,这样分配的结果是什么。每个人都要掌握前端、后端、数据库知识,而且每个模块的联系会非常独立,很难建立联系更别说使用封装的方法。这样学习成本不但很高,而且每一块都会不够专业。
这种分工模式无疑是非常没有效率的。前端不能统一,后端也不是高度统一,数据库拿数据也各凭本事,看样子是团队合作,本质上无异于各自造不同的房子最后强行拼凑在一起。
没有专门的数据库管理员也是非常糟糕的事情,数据库没有经过好的设计,在项目后期暴露出非常大的问题,字段名混乱,类型随意设置,关联关系也混乱不堪。造成拿数据困难,数据不准,拿数据有时需要关联非常多的表,更不要说冗余、性能了。
3、和睦相处
工作中遇到问题难免会有争论,每个人都有不同的想法、思路。年轻气盛的我刚加入公司时,总是认为自己的观点是正确的,没有考虑别人,也没有考虑大局,与同事发生了一些不愉快的矛盾。
任何一种方法的实施,不仅在乎对错、性能,更多还要考虑对其他的人影响程度,不能因为自己一个改动,影响所有人都要改动,如果是必须要改动的地方就除外了。
一旦发生了争吵很可能会造成矛盾,对个人造成偏见,使工作陷入僵局,合作受阻。
凭着对事不对人的原则,很多情况下我们需要理性对待矛盾,不能因为发生矛盾就对别人产生厌恶,除非那人确实非常讨厌,人品有问题。
合理争吵,回归到生活还是要和大家和睦相处,不要过于小气。
生活归生活,工作归工作。
4、项目架构
说到这,我觉得项目架构可以是整个项目的灵魂,自然也需要有一定架构能力的人来搭建。项目架构不仅可以保证系统的稳定性,关联性,最主要的是开发的统一性,增强开发的便捷性、和日后的维护性。
一个项目并不是做完就结束了,做完之后维护会发生天翻地覆的变化。像我们现在各自为营的合作模式,一旦开发人员流失,会造成代码报废,难以维护。
没有好的项目架构,所有的东西都是散乱的,无法统一更改,更无法统一调度,项目开发完就如同一辆散架的马车经不住行驶就问题百出。
但是高度封装也会造成不够灵活,有些地方需要特殊处理,在封装和特殊处理之间权衡。
5、明确需求
在一个项目开发中,明确需求是非常重要的,需求不明确会造成开发周期无限延长。
明确需求不仅仅我们开发人员要明确,也是要客户明确。很多时候大家都是一种非常模糊的状态,客户提出一种比较模糊的需求,我们也一知半解的开始做,结果到最后根本不是人家想要的功能,只能推翻重做。
反复确认客户的需求是非常重要的,一来可以帮助他们理解自己想要的真正需求,二来也可以帮助我们更精准的开发功能,少做无用功。
明确需求,这也是对整个项目的考量,有些需求是所有模块都需要的,需要开发人员达成共识来封装成公共方法。
五、学习的重要性
在这个技术日益更新的时代,如果不时刻保持着学习的习惯,很容易落后于别人。今天掌握的技术,2年后说不定就会被新的技术所代替。
要有接受新事物、新技术的能力,不能一直停留在老的技术里。
学习的前提的是要有对新技术的热爱、兴趣,专注的投入进去,而不是敷衍了事。
学习要保持持续不断的学习,不能三分钟热度,浅尝辄止。以前我也是习惯探索各种不同的语言,但大都只是学习了一些基础,没有什么语言深入学习。
很多初学者包过我自己也是同样,刚开始学习一门语言的时候会陷入选择的困境,哪一门语言好学,哪一门语言有前途,哪一门语言赚钱多。
今天我觉得其实哪一门语言都是一样的,语言只是一种工具,用来解决问题。与其在各种各样的语言之间来回选择,不如选一门自己喜欢的,好入手的,可以做实际东西,让自己能获得成就感、获得工作的语言。不断深入学习这门语言,不断加强自己的编程思想,而不是仅仅局限在一些基础的用法上。
结语
工作半年不仅有技术的收获,更多的是心态有了很大的转变。以前总是自以为是,浮躁不已,工作之后才知道自己是井底之蛙,比我强的人比比皆是,自己的能力也没有想象中的那么强。工作之后也慢慢收敛起自己任性而为的个性,学会与团队中的人合作、沟通。
总的来说:
学习要专注、踏实,不能浮躁三心二意;
做人要大度,对事不对人;
做事要认真,不可敷衍了事;
未来的路还很长,新的一年还需努力!
路漫漫其修远兮,吾将上下而求索!