PHP程序员在应该怎么规划自己的职业生涯?
程序员文章站
2024-02-18 23:19:22
...
1、我今年23岁。
2、刚从事php,知道前辈们的工作经验可以让我少走很多弯路,诚恳求教。
技术的提升是需要一定理论的积累和实际项目经验的沉淀。
----------------------------------------------------------------------------
首先说一下废话,介绍一下背景,不喜直接拉右侧滚动条...
个人介入学习PHP的时间不算长,也不算短,应该是从学校的大二开始一直到现在,大概有四年左右了,但是不能算是真正意义上的四年PHP经验,因为在学校的学习毕竟是很有局限的,不管是学习的路线规划还是项目锻炼的机会。
题主23岁应该是大学刚毕业吧,不知道在学校里有没有接触过研发相关。
总结起来,个人的学习路线应该是从桌面应用程序开发C#、SQLSERVER开始,到后面学习HTML、CSS、JAVASCRIPT、PHP、MYSQL、Android等。
---------------------我是万恶的分割线-------------------------------
进入主题,如果题主有充裕的时间的话建议还是重点积累一下自己的基础知识能力,发现身边的很多人,尤其是学生或为了转型快速学习PHP,在学习的时候忽略的基础的知识,比如见过有个同学在学下到SESSION、COOKIE的时候感觉当时用不上就直接跳过了,或者仅仅了解了一下,到后面在项目中运用的时候基本都忘了,再回头学习或查资料解决比起初学时花些时间去沉淀一下这些知识其实是得不偿失的。
这里的基础技术能力指的是PHP语言本身的语法规则、各种特性,比如字符串、数组操作的各种函数、正则表达式、SESSCION、COOKIE、数据库、文件、网络、图像操作等等。
第一阶段:入门篇
鄙人在接触PHP的时候,看的是《精通PHP5应用开发》、《PHP与MySQL 5程序设计》
豆瓣评分分别为7.5和7.7,具体书评就不多说了,还算不错的两本书,适合入门,有其实《精通PHP5应用开发》涉及到的知识点比较全,也比较适合做后面的查漏补缺的字典使用。
附上链接:
精通PHP5应用开发 (豆瓣)
PHP与MySQL 5程序设计 (豆瓣)
数据库SQL相关的知识和前端在之前已经算刚刚入门,学了一周后开始上手小试牛刀,做了基本的个人主页,然后用socket做了网络聊天系统,再到后面就开始做实际的项目了,当时非常感谢学校的软件小组老师能给我们这么多接触项目的机会,事实证明真正的技术能力提升也是在项目中提炼的,在项目中会遇到各种问题,去解决的过程就是个人知识积累、能力提高的过程。
后面接着学习框架,首先是Smarty大师兄,建议如果时间允许最好还是学一下这个,了解一下什么是前后端分离,PHP模板的基本实现。虽然后面用的场景比较少,但还是一个不错的入门型开源小框架。PHP Template Engine
-
记得当时做过一个部队医院的官网和内部使用系统,还算是学到了不少东西,当时尝试着用Smarty框架+ACCESS数据库做。一说起这个很多人都很纳闷为什么是ACCESS,其实当时是想着这个项目需求涉及到的只是一些内容发布类型的功能,傻傻的觉得没必要用MySQL,也想着尝试一下用PHP配合ACCESS的开发过程,遇到了很多问题,比如
其实上面遇到的这几个问题都是开发之前一些环境的搭建和软件的不熟练,其实代码逻辑没有很复杂。当然,因为当时经验比较少,所以也遇到了很多开发中的问题。
另外,因为是部队医院中的项目,部署、调试起来比较麻烦。依稀记得是2012年大年二十八的时候还在医院里加班调试代码,当时还是蛮拼的……加上项目需求讨论、开发周期和维护期,总共用了将近两个月时间,其中有一个月还是在学校边上课的情况下用课余时间来做这些,最后还算不错的成功交付,第一个完整的项目还是比较有成就感。
接下来是学习 ThinkPHP框架 ,一直到今天,TP框架是个人使用比较顺手的框架之一,
//TODO:待序 (后面的这个故事有些虐心,下去吃个麻辣烫压压惊)
-------
9月4日更新
//好久没更新,也这段时间状态比较狰狞,趁着放假好好调整下
后面就没这么幸运了,为了迎合另外一个客户需求,用当时菜到没朋友的技术用了很长时间参与了一个电商型的网站,因为确实没有任何较成熟的项目经验,因此在架构设计、需求把控以及技术实现上经验比较少,项目的结果还是挂掉了,历时了一年半 也是最难忘的算是一段创业经历。
这期间遇到了当时觉得比较棘手的几个问题(只说技术层面):
1.项目涉及到切换城市,判断IP来源
2.大量的帖子发布信息,未采优化方案
3.详情页面URL中的自增id暴露库中帖子数量
4.页面浏览器兼容问题(当时需要兼容到IE6)
首先说城市和IP来源问题,当时是采用纯数据库读写解决方案,中间没有任何文件或内存缓存技术,表结构是:
| id | 省 | 市 | 区
大概有3k多条数据,后面才意识到还需要按照首字母来筛选城市,刚开始想到的解决方法是筛选出所有的市,然后将所有的市的名字使用代码进行首字母拼音分解……而且还真这样做了……
这种表结构而且是每次读库可想而知在城市切换页面会有多么可怕的事情发生,基本上是行不通的,后面又进行了改进,不过现在看来还是很sb的。
另外是根据IP来源进行自动切换/建议 所在城市,找了很多解决方法还是没能很精准的定位。
帖子发布信息,这个对于一些练手的小项目来说不用太理会的,一般发布周期不会很频繁,量小好控制,但是针对大量的帖子发布信息涉及到详情页面的展示基本不采取一些优化措施是行不通的,访问量一上来肯定挂掉,而且本身这种实现方案是比较病态的,不说加入Memcached和Reids,连个页面静态话都没有。
对于详情页面GET的id参数,当时初期方案中也没有考虑,因为id是自增的主键,暴露了库中的数据量,后来使用的帖子编号来标识。
关于浏览器兼容问题,这个确实在很大程度上提高了个人前端css水平,和相关的js操作dom方面知识,一直受益匪浅。
其实一直到现在我都觉得没必要在技术学习上给自己贴标签,你就是做后端php或前端js或python什么的,很多人都说你学那么多东西多而不精,对于一种东西精通是需要时间积累的,但是知识面太狭隘是致命的,很多大牛在学习一门语言的同时顺便都学习了其他的语言。虽然工作中可能比较局限你是做什么类型的开发,但是针对个人技术能力没必要太苛刻自己。也不能在很多方面眼高手低,至少学习编程语言是比较忌讳的。
我自认为比较幸运的事是有过产品经理的实习经验,对个人工作以及职业发展上有很大的帮助,体现在对很多事情上的价值观念的看法。
再后来,学习了Android,虽然没做过什么惊天动地的APP,用php和移动端结合起来也了解了移动端开发的相关知识,现在也有偶尔无聊的时候做个小东西。
然后是学习Python……现在基本处于忘完的阶段,学习python最初是为了做一个开源ERP的二次开发,后来毕业后也不了了之,不过现在也偶尔会用python作为工具性质语言跑一些小脚本之类。
慢慢的好像偏离主题了,再拉回来。还有很多个人相关经历不再叙述,这些是现在回忆起来的好像很遥远的一些经历。
希望以上经历会对题主有所帮助。关于PHP学习路线相信在网上也可以很容易找到。
新浪博客上有一篇比较老的文章来总结,引用一下:
另外,推荐基本比较好的书
《HTTP权威指南》([美]David Gourley,[美]Brian Totty,[美]Marjorie Sayer,[美]Sailu Reddy,[美]Anshu Aggarwal)【摘要 书评 试读】
《C和C++经典著作:C陷阱与缺陷》([美]Andrew Koenig)【摘要 书评 试读】
《PHP+MySQL专家编程》([美]库日瑟(Andren Curioso),等)【摘要 书评 试读】
《UNIX环境高级编程(第3版)》([美]W. Richard Stevens,[美]Stephen A. Rago)【摘要 书评 试读】
《LinuxShell脚本攻略 第2版》([印]Shantanu Tushar,[印]Sarath Lakshman)【摘要 书评 试读】
祝早日成为PHP高手。 泻药,我也23岁,然后这种事急不了,一步一脚印,慢慢积累就好了
我有个习惯,就是很喜欢写方便自己工作的一些工具,一点一点积累,很有意思 php不需要啥经验,多写代码,多做项目,独立做完整个项目。
想进大公司的话,就好好研究基础知识,学好数据结构跟算法(虽然很长时间然并卵)。
想进小公司当全能打杂就不太需要理太过基础的东西了,前端、后端、服务器管理、手机端。说起来好像很屌的样子,但是碰到个啥问题还是很多时候在网上爬资料。
以上。 无他,唯手熟尔。
我也开始学 从长远来看肯定是打好基础,走大公司发展之路更好,要精通就要多钻研;如果是多拿工资可以进小公司,不过就是需要各方面都会前端设计、后台开发、APP等等全方位的就没那么精通了。 第一次回答,好紧张,想快速提高就是多做项目,研究优秀的开原项目或者框架代码,看牛人博客
2、刚从事php,知道前辈们的工作经验可以让我少走很多弯路,诚恳求教。
回复内容:
不太同意楼上匿名回答。技术的提升是需要一定理论的积累和实际项目经验的沉淀。
----------------------------------------------------------------------------
首先说一下废话,介绍一下背景,不喜直接拉右侧滚动条...
个人介入学习PHP的时间不算长,也不算短,应该是从学校的大二开始一直到现在,大概有四年左右了,但是不能算是真正意义上的四年PHP经验,因为在学校的学习毕竟是很有局限的,不管是学习的路线规划还是项目锻炼的机会。
题主23岁应该是大学刚毕业吧,不知道在学校里有没有接触过研发相关。
总结起来,个人的学习路线应该是从桌面应用程序开发C#、SQLSERVER开始,到后面学习HTML、CSS、JAVASCRIPT、PHP、MYSQL、Android等。
---------------------我是万恶的分割线-------------------------------
进入主题,如果题主有充裕的时间的话建议还是重点积累一下自己的基础知识能力,发现身边的很多人,尤其是学生或为了转型快速学习PHP,在学习的时候忽略的基础的知识,比如见过有个同学在学下到SESSION、COOKIE的时候感觉当时用不上就直接跳过了,或者仅仅了解了一下,到后面在项目中运用的时候基本都忘了,再回头学习或查资料解决比起初学时花些时间去沉淀一下这些知识其实是得不偿失的。
这里的基础技术能力指的是PHP语言本身的语法规则、各种特性,比如字符串、数组操作的各种函数、正则表达式、SESSCION、COOKIE、数据库、文件、网络、图像操作等等。
第一阶段:入门篇
鄙人在接触PHP的时候,看的是《精通PHP5应用开发》、《PHP与MySQL 5程序设计》
豆瓣评分分别为7.5和7.7,具体书评就不多说了,还算不错的两本书,适合入门,有其实《精通PHP5应用开发》涉及到的知识点比较全,也比较适合做后面的查漏补缺的字典使用。
附上链接:
精通PHP5应用开发 (豆瓣)
PHP与MySQL 5程序设计 (豆瓣)
数据库SQL相关的知识和前端在之前已经算刚刚入门,学了一周后开始上手小试牛刀,做了基本的个人主页,然后用socket做了网络聊天系统,再到后面就开始做实际的项目了,当时非常感谢学校的软件小组老师能给我们这么多接触项目的机会,事实证明真正的技术能力提升也是在项目中提炼的,在项目中会遇到各种问题,去解决的过程就是个人知识积累、能力提高的过程。
后面接着学习框架,首先是Smarty大师兄,建议如果时间允许最好还是学一下这个,了解一下什么是前后端分离,PHP模板的基本实现。虽然后面用的场景比较少,但还是一个不错的入门型开源小框架。PHP Template Engine
-
记得当时做过一个部队医院的官网和内部使用系统,还算是学到了不少东西,当时尝试着用Smarty框架+ACCESS数据库做。一说起这个很多人都很纳闷为什么是ACCESS,其实当时是想着这个项目需求涉及到的只是一些内容发布类型的功能,傻傻的觉得没必要用MySQL,也想着尝试一下用PHP配合ACCESS的开发过程,遇到了很多问题,比如
- 刚开始都没用过ACCESS数据库开发,死活和PHP连接不通
- ACCESS中text型字段支持的最大内容长度是4096,需要在php.ini中去配置
- 想在Smarty的文件结构中不想把所有的逻辑文件都放在一个目录,去配置这个目录的路径废了很大功夫
- Access中有些SQL和MySQL不太一样,但是当时有不知道(囧...)
- 多人用svn合作总是发生冲突或合并后出问题
- ...
其实上面遇到的这几个问题都是开发之前一些环境的搭建和软件的不熟练,其实代码逻辑没有很复杂。当然,因为当时经验比较少,所以也遇到了很多开发中的问题。
另外,因为是部队医院中的项目,部署、调试起来比较麻烦。依稀记得是2012年大年二十八的时候还在医院里加班调试代码,当时还是蛮拼的……加上项目需求讨论、开发周期和维护期,总共用了将近两个月时间,其中有一个月还是在学校边上课的情况下用课余时间来做这些,最后还算不错的成功交付,第一个完整的项目还是比较有成就感。
接下来是学习 ThinkPHP框架 ,一直到今天,TP框架是个人使用比较顺手的框架之一,
//TODO:待序 (后面的这个故事有些虐心,下去吃个麻辣烫压压惊)
-------
9月4日更新
//好久没更新,也这段时间状态比较狰狞,趁着放假好好调整下
后面就没这么幸运了,为了迎合另外一个客户需求,用当时菜到没朋友的技术用了很长时间参与了一个电商型的网站,因为确实没有任何较成熟的项目经验,因此在架构设计、需求把控以及技术实现上经验比较少,项目的结果还是挂掉了,历时了一年半 也是最难忘的算是一段创业经历。
这期间遇到了当时觉得比较棘手的几个问题(只说技术层面):
1.项目涉及到切换城市,判断IP来源
2.大量的帖子发布信息,未采优化方案
3.详情页面URL中的自增id暴露库中帖子数量
4.页面浏览器兼容问题(当时需要兼容到IE6)
首先说城市和IP来源问题,当时是采用纯数据库读写解决方案,中间没有任何文件或内存缓存技术,表结构是:
| id | 省 | 市 | 区
大概有3k多条数据,后面才意识到还需要按照首字母来筛选城市,刚开始想到的解决方法是筛选出所有的市,然后将所有的市的名字使用代码进行首字母拼音分解……而且还真这样做了……
这种表结构而且是每次读库可想而知在城市切换页面会有多么可怕的事情发生,基本上是行不通的,后面又进行了改进,不过现在看来还是很sb的。
另外是根据IP来源进行自动切换/建议 所在城市,找了很多解决方法还是没能很精准的定位。
帖子发布信息,这个对于一些练手的小项目来说不用太理会的,一般发布周期不会很频繁,量小好控制,但是针对大量的帖子发布信息涉及到详情页面的展示基本不采取一些优化措施是行不通的,访问量一上来肯定挂掉,而且本身这种实现方案是比较病态的,不说加入Memcached和Reids,连个页面静态话都没有。
对于详情页面GET的id参数,当时初期方案中也没有考虑,因为id是自增的主键,暴露了库中的数据量,后来使用的帖子编号来标识。
关于浏览器兼容问题,这个确实在很大程度上提高了个人前端css水平,和相关的js操作dom方面知识,一直受益匪浅。
其实一直到现在我都觉得没必要在技术学习上给自己贴标签,你就是做后端php或前端js或python什么的,很多人都说你学那么多东西多而不精,对于一种东西精通是需要时间积累的,但是知识面太狭隘是致命的,很多大牛在学习一门语言的同时顺便都学习了其他的语言。虽然工作中可能比较局限你是做什么类型的开发,但是针对个人技术能力没必要太苛刻自己。也不能在很多方面眼高手低,至少学习编程语言是比较忌讳的。
我自认为比较幸运的事是有过产品经理的实习经验,对个人工作以及职业发展上有很大的帮助,体现在对很多事情上的价值观念的看法。
再后来,学习了Android,虽然没做过什么惊天动地的APP,用php和移动端结合起来也了解了移动端开发的相关知识,现在也有偶尔无聊的时候做个小东西。
然后是学习Python……现在基本处于忘完的阶段,学习python最初是为了做一个开源ERP的二次开发,后来毕业后也不了了之,不过现在也偶尔会用python作为工具性质语言跑一些小脚本之类。
慢慢的好像偏离主题了,再拉回来。还有很多个人相关经历不再叙述,这些是现在回忆起来的好像很遥远的一些经历。
希望以上经历会对题主有所帮助。关于PHP学习路线相信在网上也可以很容易找到。
新浪博客上有一篇比较老的文章来总结,引用一下:
1.基本语法 很无聊的东西2.PHP+MYSQL 初步做出自己的作品,很高兴了
3.面向对象 怎么这么难,不过当你会了之后你很乐意OOP
4.设计模式 这部分很多人都觉得很难
5.模板引擎 有名的有Smarty,可以看看官方网站的手册或者到一些论坛下载手册
6.二次开发 像大多数论坛,博客都是二次开发的。有discuz!,Wordpress,phpwind等
7.用框架开发 如:ZendFramework,YiiPHP,QeePHP……
7.研读别人的代码 你如果第5步用的是Smarty的模板引擎,那你现在可以读读Smarty的代码(前提,第3,4步做得比较好),之后是读第6步里面的
8.开发自己真正成熟的框架或PHP应用程序
9.你会发现有些东西是程序还不能解决的。
10研究更底层的技术,这时候就不是单纯的PHP程序员了。
当然想完成上面的这10个过程很难。但至少你要达到第五个步骤。
另外,推荐基本比较好的书
《HTTP权威指南》([美]David Gourley,[美]Brian Totty,[美]Marjorie Sayer,[美]Sailu Reddy,[美]Anshu Aggarwal)【摘要 书评 试读】
《C和C++经典著作:C陷阱与缺陷》([美]Andrew Koenig)【摘要 书评 试读】
《PHP+MySQL专家编程》([美]库日瑟(Andren Curioso),等)【摘要 书评 试读】
《UNIX环境高级编程(第3版)》([美]W. Richard Stevens,[美]Stephen A. Rago)【摘要 书评 试读】
《LinuxShell脚本攻略 第2版》([印]Shantanu Tushar,[印]Sarath Lakshman)【摘要 书评 试读】
祝早日成为PHP高手。 泻药,我也23岁,然后这种事急不了,一步一脚印,慢慢积累就好了
我有个习惯,就是很喜欢写方便自己工作的一些工具,一点一点积累,很有意思 php不需要啥经验,多写代码,多做项目,独立做完整个项目。
想进大公司的话,就好好研究基础知识,学好数据结构跟算法(虽然很长时间然并卵)。
想进小公司当全能打杂就不太需要理太过基础的东西了,前端、后端、服务器管理、手机端。说起来好像很屌的样子,但是碰到个啥问题还是很多时候在网上爬资料。
以上。 无他,唯手熟尔。
我也开始学 从长远来看肯定是打好基础,走大公司发展之路更好,要精通就要多钻研;如果是多拿工资可以进小公司,不过就是需要各方面都会前端设计、后台开发、APP等等全方位的就没那么精通了。 第一次回答,好紧张,想快速提高就是多做项目,研究优秀的开原项目或者框架代码,看牛人博客
推荐阅读