以下仅我自己的经验之谈,过度自我,请见谅。
我就是他们说的那种“野生程序员”,干开发7年多了,我觉得有一定的经验讨论这个事。
我从初中就喜欢编程,但当时局限于做做html静态页面,还是用table。后来自学半年,基本语法懂了,但是不会框架,也不懂框架,也不懂市场上的程序是怎么开发出来的。后来在两家公司工作两年多,这期间成长很快,不紧是PHP,angularjs、全景、H5、小程序、workerman等也都是这段时间学会的。再后来有了自己的家庭,自己创业两年,现在跟人合伙。我们在三线城市,最近互联网大环境也不好,但我们过得挺行的。
我们现在做产品或外包,后端用PHP或JAVA,前端用layui或vue,其他还有小程序、uniapp等,也做物联网长连接。
我现在的水平,随便入门其他语言,无压力。
比如我前段时间用GO做了一个主机监控系统,网站用的我自己的后台做的,客户端监控是用GO写的, 客户端花了不到几个小时,就调库写出来了。作为产品还不是很完善,但是心里有底,可以慢慢改。
再比如Python,我也没有系统的学习过,但是最近把人工智能调库做http服务,也是没花几个小时就做出来了。
还用QT写过一个进程守护程序,后来发现是没啥意义和用处,也就当个demo就算了,当时也实现了登陆、进程守护、注册开机自动执行等。但是想着Win下没有像supervisor的工具,对于运行一些脚本不方便。现在发现,go做后台客户端挺香的。
当然,以上两个例子只是我自己搞着玩,我觉得对我来说很有用,所以就做了。我们公司主要还是用PHP或JAVA。JAVA也是经过简单地几个小时的培训,就开始上手写,用若依开发后台。
我认为做PHP开发有四个阶梯,每跨越一个阶梯都是很难的,无论是入门到精通。对于前一个阶梯的人来说,没开窍,就难得很,忽然有一天,开窍了,就跨越下一个阶梯了。这四个难点分别是:
- 对语法的理解
- 对程序的理解
- 对生态的理解
- 对产品的理解
对语法的理解
新手学习编程语言的时候,(不仅仅是PHP),都要接触很多旧的符号,新的概念。什么叫旧的符号,新的概念呢?比如:
$a = 1;
$b = 2;
$b = $b + $a;
我们管变量叫变量,管一叫一,管二叫二,管加叫加,管等于叫等于。这些东西跟中学学的二元一次方程好像都差不多。但是代表的意义是完全不一样的,就第三行,在数学上就不成立,除非$a = 0,你说对吧。
再比如对函数的理解,什么叫函数,sin?cosin?什么叫自定义函数?这些对于新手来说,可能很绕,因为这都是旧的符号,新的概念。这些叫法(符号)都是以前听说过的,但其实是完全新的概念,如果用旧的概念去理解,就会犯迷糊。这就是第一次开窍。开窍之后就都懂了,认识到这都是新的概念,不要用旧的理解,要重新学习,要完全接收和吸收。
这一块,我在培训时,其他人遇到过。我没遇到过,我培训两三年前就自学编程了,不仅是PHP,也学过JS的入门和C的入门,所以这一块很好接受和吸收。
对程序的理解
这是我自学没有跨越的东西,参加培训才大概懂了。(但培训也没教什么有用的东西,主要是感觉自己入行了)。
比如这几个变量,几个函数,几个对象,怎么就变成对人类有用的东西了。到底是怎么对人类有用了?不就是顶一个变量,封装一下过程,这对人类有什么用?真实的人类是如何利用这些个破玩意方便自己的?
说白了,不知道怎么写程序。
这个我是在实际开发两三个月后才开窍的,才理解的。
原来提交表单,然后把数据存起来,再把数据在相应的地方显示出来,就是程序,就是有用。
比如修改个人信息,把个人信息的几个字段用Post提交上来,然后存到数据库,当用户进入个人中心页面的时候,把这些数据显示出来,这就是程序。
别看这点东西很简单,当时有任何一个思路断了,这个功能都做不出来,不知道提交?不知道存储?不知道读取?不知道显示?别以为这个东西很简单。最近我在带一个实习生,做页面的增删改查,甚至都不需要增删改,只要进入页面把文章查出来就行。他都做不出来。他找我说,你看我参考另一个页面写的,连变量名我都都叫“item”了,字段跟数据库也一个一个对了,没有写错,怎么就不显示数据呢?我说你得先把数据查出来,赋给item,然后item就有数据了,就可以在对应的地方显示了。
这其实就是有没有开窍的问题,基本上大多数的程序,都是在干curd,无非是各种各样的C各种各样的U,各种各样的R,各种各样的D。去重的C,缓存的R,自动的D。等等等。
对生态的理解
这里的生态,我只得是狭隘的意义的“库”。你要接受库,要多用库。真的能让你如虎添翼。
从基本的CURL查询来讲,你自己封装真不如用guzzle。
从基本的图片出来讲,真的不如各类Image库。
从基本的文件操作来讲,flysystem是真的好用。
还有很多特性功能,都能让你很容易的写出健壮的代码,比如二维码生成、表格导出、执行外部命令、压缩包、xml处理、页面导出pdf、支付、登陆授权等等。
要多了解。
对产品的理解
这个阶段要求开发者,要理解用户。以前我做程序,都是把功能做出来就行了。
- 页面好不好看无所谓,但实际上很重要。
- 搜索好不好用无所谓,但实际上很重要。
- 有没有导出无所谓,但实际上很有用。
- 消息提醒无所谓,也没人看,但实际上很重要。
- 为什么要一点一点的改这点小功能呢?没意义啊,但实际上很有用。
这些实际上也需要把思维从一个开发者重新定位,到用户的角度,去想象,去体验,去使用,去操作。然后就能发现:
- 有时候下拉选择不如单选框舒服
- 点一下就完成要比点两下完成舒服
- 能实时收到通知真的会安心很多
结尾
当然,这只是讲一讲开发之路的大体的阶段,实际上每一点点的进步,都是大量的工作实践出来的。而且每个阶段还有不少的坑等着你。
在我看来,做开发是值得的。如果爱好这个行业,那更值得,因为这个爱好可以挣钱。我就很热爱编程,每当学到一个新技术,每当做完一个新项目,就兴奋不已。你知道我是怎么放松的吗,如果我工作压力有点大,生活的有点无趣,我就自己新做一个项目,让自己爽爽。
到现在,我已经自己做了很多个项目了,有开源的,有我打算自己运营的,建设水平都不完善,但是我自己开心,而且有底气慢慢完善起来,比如:
- ul-disk,打算做成分布式存储系统,对外部开放webdav接口
- 一个笔记系统,打算做成平台,作者有主页,代替自建博客
- startsns,一个社区系统
- ul-ip-door,一个端口转发系统
- cuda-composer,一个GPU性价比对比系统
- ul-file-share,一个在线文件分享系统,跟以前的foxsend似的
- 一个文档系统,支持markdown、代码、文件附件、流程图、脑图、html代码、iframe嵌入在一个页面上混编的系统
- ulthon_information,一个头条风格的博客系统,后台有文章导出功能,方便把文章发表到其他各个平台上,我这篇文章就是在这上面写的
- channel_hub,一个内网穿透项目
- 等等其他
一些没有名字的就是不开源的。大多都是兴起而作。你说他没用吧,我一直自己再用。你说他好用吧,也就是基本能用,很不完善。
我目前一直在做的一个开源项目是ulthon_admin,这个是我自己的后台项目,这个我可以很骄傲的说,值得使用。
总之
总的来说,讲了这么多,是希望你在入门的时候,就要认清楚,好多东西都是新的概念,要接受,要吸收。不要用旧的经验去理解。
如果要细说入门会遇到什么坑,那就多了,整理不出来。我认为最关键的难点还是思路。希望本文能帮到你。
原文标题:PHP开发入门有哪些难点?
原文地址:https://phpreturn.com/index/a639bc6dab2b86.html
原文平台:PHP武器库
版权声明:本文由phpreturn.com(PHP武器库官网)原创和首发,所有权利归phpreturn(PHP武器库)所有,本站允许任何形式的转载/引用文章,但必须同时注明出处。