快三年的 PHPer 的困惑。

2016-08-20 11:09:11 +08:00
 CuminLo

初中学历, 13 年参加 PHP 培训 5 个月, 14 年工作至今。 将近 3 年一直 PHP 后端开发,不属于大牛,应该中等的水平,能独立解决工作中的问题。

目前一是觉得自己的 PHP 提升太慢,二是感觉自己啥都不懂。 我其实对技术感兴趣,详细说一下自己的经历,各位 V2er 看看我到底是怎么了。

写着写着就发现其实我可能想更多了解底层的一些技术,想知道原理,所以我才重新学习 C ,学习 C 可以写 PHP 扩展,也行能提高我对 PHP 的理解。我不知道我表达清楚没有,请求 V2er 的建议。

8120 次点击
所在节点    程序员
52 条回复
csunny
2016-08-20 11:10:56 +08:00
看看函数式语言
lianghudou
2016-08-20 11:12:08 +08:00
C 语言是才是一切语言的根本
nikoukou
2016-08-20 11:19:33 +08:00
楼主读个成人自考然后去稍微 level 搞一些的公司啊,成长肯定很快。
CuminLo
2016-08-20 11:21:54 +08:00
@csunny 也是可以的

@lianghudou 那么现在开始学习 C 还是靠谱的了

@nikoukou 成人自考身边的人总说不靠谱,弄得自己也是顾虑较多,毕竟钱也不少。有什么可推荐的么?
Balthild
2016-08-20 11:27:12 +08:00
跑个题,如果只是想写 php 扩展,可以去看看 phalcon 的实现,用他们创造的一种类 php 语言(zephir),最终也是转换成 C 再编译成 PHP 扩展
nikoukou
2016-08-20 11:27:16 +08:00
@CuminLo 没有推荐,但是最起这东西入职的时候是认可的。我朋友有青鸟出来的,没上大学,后期为了跳槽正规考下来了一个本科,加上技术本身就很厉害,已经拿到 25k 一个月了。只要学信网能查出来,也是你自己考出来的,没有不靠谱一说。
babytomas
2016-08-20 11:28:47 +08:00
试试开发一个属于自己的框架,尝试各种不同的写法,基于自己的框架开发许多不一样的程序。

然后不断的重构重构再重构又重构,然后你会发现你已经是大神了。
CuminLo
2016-08-20 11:32:34 +08:00
@Balthild 可能不是我想要的。感谢。

@nikoukou 嗯,可以考虑。感谢。
nikoukou
2016-08-20 11:33:39 +08:00
@CuminLo 马云家就有不少学校的函授渠道,你可以去咨询下。
zhuangzhuang1988
2016-08-20 11:34:59 +08:00
查名校的大学课程,
看看正规军的打法。。
imyip
2016-08-20 11:47:27 +08:00
经历真有点相似
msg7086
2016-08-20 11:49:14 +08:00
数据结构,算法,设计模式,英语和日语。
随便找个入口跳进去填坑吧。
Spike
2016-08-20 12:37:54 +08:00
@msg7086 学日语接外包用吗
xbdsky
2016-08-20 12:49:52 +08:00
跟楼主一样,也是初中毕业, PHP 技术一直很一般,也很想学,一直没怎么坚持学下去,报了夜大,毕业了,多多少少有点帮助吧。坚持真的很重要。
jellybool
2016-08-20 12:55:55 +08:00
贴一小段你觉得你写的最优美的代码出来看看?
feiyuanqiu
2016-08-20 13:00:47 +08:00
楼主不妨把自己现在写的代码放出来看看...我见过不少两三年经验的同事(包括我)到了这个阶段就特别浮躁,觉得自己在业务代码上已经到瓶颈了,提升不了了,但看他写的代码却仅仅只是能实现需求,远远称不上好。一旦让其独立负责一个项目或者大的需求功能,需要自己设计程序架构的时候,弄出来的东西总是不尽如人意,拼拼凑凑地凑合着做完

底层的知识对实际编程能力的提升并不是立竿见影的,会写 c 扩展更多的用处是跟人吹比或者写在简历上。实际工作中需要用到 c 扩展的地方往往已经有别人的(被广泛使用的、经受了考验的)实现了。如果要为自己的业务写 c 扩展,首先很难得到同事领导的支持,因为增加了维护成本,一旦你离职之后就没人能维护了;其次如果你在 php 上的编程能力都不能做到在公司里的权威地位的话,会让人质疑你在更底层方面的能力


从我有限的经历来看,过去每次感觉自己到技术瓶颈的时候,都发现其实还有很多东西没掌握,比如
程序设计方面的知识
最简单的一个体现,团队 CodeReview 的时候能否发现对方代码中不好的地方(代码风格,命名,惯用模式,设计架构, etc...),能否有充足的理由说服对方认同你的观点
能否在需求建模设计会议上提出有价值可行性的设计方案,并说服同事
经过几个月迭代之后,维护的业务代码是否已经混乱成一坨翔了,如是,如何拨乱反正
能否抽象提炼出重复代码中的通用逻辑,并开发出 api 简洁清晰的库类
能否发现流行的框架、工具设计的优点;能否发现流行的框架、工具设计的缺点;能否将好的东西引入自己的开发中
IDE 是否能 resolve 正确所有变量的类型(...仅仅是我个人的喜好)

业务方面的掌握
能否从头到尾将系统里一个复杂功能(复杂,所以很可能是团队协作多人开发的)的来龙去脉讲清楚,为什么要有这个功能,开发它的目的是什么,是为了解决什么实际问题,如何实现的...从入口开始,把处理流程中所有涉及到的地方都拎出来讲一下,为什么这里要这么设计,为什么这里会对这种类型的业务对象做单独的处理,是否有更好的实现方式,为什么针对 A 类型的业务对象的功能会涉及到 B 类型的修改,如果调用了外部接口,外部接口干了些什么,它怎么通知回调,回调处理是怎样的...

数据库方面的知识
数据库基础知识(不同数据库引擎的优缺点、支持的数据类型、不同数据类型的长度,特点、常用语句的语法结构);数据库表的设计(根据不同的需求要求,采用一个胖数据表结构呢还是拆成几个小表, 搞清楚单表 select 和 join 的性能差异);索引(如何确定索引、如何构造能尽可能命中索引的查询);并发的处理(排它锁和共享锁的区别、什么情况需要加锁、什么情况会导致锁表); ORM 的使用(判断业务是否需要引入 ORM ,几种数据源架构的优缺点); php 里面数据库持久连接和短连接的差异;分析业务是否需要开启查询缓存...

排错修 bug 的能力
能通过有限的错误信息定位 bug ,能找到更多的上下文信息( nginx 的访问日志错误日志在哪里, php-fpm 的错误日志在哪里, php 错误日志在哪里, sql 错误日志、查询记录在哪里);知道不同的错误级别 php 的错误处理有什么不同;知道使用的库函数的坑(比如 bcmath 对大整数、浮点类型)

其他工具库的了解与使用
项目需要异步任务队列了,怎么搞
msg7086
2016-08-20 13:02:45 +08:00
@Spike 外包是一方面,日常也可以用啊。
比如移民日本,看片,看技术(日本那边开发技术也很好)。
Immortal
2016-08-20 14:04:32 +08:00
比较好奇 golang 程序如何改成 gui 这块不懂
nikoukou
2016-08-20 14:14:10 +08:00
@msg7086 然而日本技术工作签要 n2+理科本科+程序员证明,楼主目前是无法申请的。
chuxiwen
2016-08-20 15:30:55 +08:00
个人觉得区别好的工程师,和顶尖工程师主要几个方面
1 ,硬实力
首先算法能力(这里我很笼统的数据结构,各种理论知识,都放在这里) ,很多人说算法能力不是很重要,我自己之前也是这么认为。但是,事实上并不是这样。很多实际操作中的所遇到问题都可以回归到基础的算法问题。而且,算法能力强的人多半可以用更短的时间给出更高效的代码。但是很多算发能力强的人也会忽略我要说的下一点,架构能力。

架构能力,如何让代码有更高的可阅读性,可维护性?如何在做到 "Keep it simple, Stupid" 的同时最大程度上预期未来可能出现的更改?

其他的呢?
读复杂代码的能力?最佳实践? DevOps ? TDD ? Agile ?这些属于好的工程师就应该具备的能力。


2 ,软实力
团队精神,如何与团队一起进步提高,软件产片越来越大,几乎不可能一个人完成。
培养新人的能力,自己提高的时候要注意培养新人,原因很简单,只有当新人可以替代你的时候,你才有精力去做更重要的事情。
危机处理和纠纷处理的能力,这个可能有些跑题,但是随着职位的上升,这是不能缺乏的能力。好的工程师迟早都要管理人的。


主意到你的学历,想强调一点,数学和英文。有趣的计算机科学问题多半最后都是数学问题(出了计算机科学,什么问题不是数学问题呢?),看你 5 年, 10 年, 20 年的职场目标是什么,你可能希望自学下大学数学的内容。
英文,最近几年我国计算机科学的发展很快,但是和很多国家还是有差距的,最好的资料很多时候都是现有英文版的(中文翻译的质量有的时候也很难恭维啊)。英文还是很重要的媒介语言。


机会只会留给有准备的人。“有机会没准备” 和“有准备没机会” 哪个更让人遗憾呢?这是你需要问自己的问题。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/300591

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX