我,大专非科班出身,自学PHP+js入行。今年第5个年头,在2家公司呆过,第一家呆了3年,现在这家已满2年。第一家公司学习沉淀了lnmp环境下WEB开发前后端的基本技能,学了python.和JAVA,JAVA只在一个项目中的部分任务中用过,如今只剩下模糊的记忆。
换了工作后最近2年,自己计划的学习路线一度被打断,一直被公司的业务牵着鼻子走,先后学习了lua,openresty.这些小脚本还好,要命的是最近半年接手公司的搜索服务,后端用C/C++维护ES索引。C/C++学了点皮毛,ES搜索引擎也学不好,工作都要焦头烂额了,一度想离职,只是考虑到随便离职会给自己带来糟糕的履历。
像我这样简直不伦不类了,样样会点没样精通(至少学来的仅仅用在堆业务逻辑上面)。或者说给自己定个大目标,后端全栈型程序员,这些都要学,只是目前还不够精通而已。。。
回复内容:
我,大专非科班出身,自学PHP+js入行。今年第5个年头,在2家公司呆过,第一家呆了3年,现在这家已满2年。第一家公司学习沉淀了lnmp环境下WEB开发前后端的基本技能,学了python.和JAVA,JAVA只在一个项目中的部分任务中用过,如今只剩下模糊的记忆。
换了工作后最近2年,自己计划的学习路线一度被打断,一直被公司的业务牵着鼻子走,先后学习了lua,openresty.这些小脚本还好,要命的是最近半年接手公司的搜索服务,后端用C/C++维护ES索引。C/C++学了点皮毛,ES搜索引擎也学不好,工作都要焦头烂额了,一度想离职,只是考虑到随便离职会给自己带来糟糕的履历。
像我这样简直不伦不类了,样样会点没样精通(至少学来的仅仅用在堆业务逻辑上面)。或者说给自己定个大目标,后端全栈型程序员,这些都要学,只是目前还不够精通而已。。。
我也是野路子出身, 技能加点也是跟着公司业务走哪打哪, 游走于各种框架之间, 疲于奔命苦不堪言. 偶在知乎看到萧井陌的这篇专栏文章, 深感自己基础不厚, 现在在Coursera上跟一些名校的基础课, 已经搞定所有Python课程, 正在恶补编译原理, 算法等基础知识, 明显的进步是现在也可以自己造点轮子了, 虽然还很拙劣.
题主能意识到自己的问题已经比很多浑浑噩噩混日子的码农强了不少, 我觉得不管科班非科班程序员以下几点非常重要:
英语(必须的)
基础(各种框架轮子满天飞, 其实万变不离其宗)
面向Google / StackOverflow编程(就是有轮子先用轮子交活, 腾出时间恶补技能点)
Stay hungry, Stay foolish.
保重身体
以上, 共勉~
个人感觉未免题主有点太浮躁了,而且走入了一个很大的误区,感觉学好一门语言或学精一门才是一个程序员的必经之路?
个人建议千万别去这么想问题,否则你可能一辈子都是一个程序员
万事看本质,程序员的价值在哪里?
就是解决问题的能力,所以语言、架构等等只是解决问题的辅助工具,还要从更广更全面的去考虑问题,这样你的思路才能拓宽。
举例:不要为了公司说要做搜索就去做搜索,先考虑为什么要做搜索,公司现状、人员配备、后续维护等等,然后在考虑技术方案,比如除了ES还有没有其他方案?或者是不是高大上的方案介入太早还要带来巨大的工作量?是否可以现有技术栈内的解决方案比如看上去有点Low的xunsearch,然后碰到了性能瓶颈的时候再去调研新的东西,因为已经在生产了,或许有足够的时间去研究ES,同时踩过搜索的坑,发现去研究去选型的时候更有专注点了
另外个人认为程序员的发展路线应该是先广再深。只有系统需要深入的时候你才会深,这个要看你公司的发展以及定位。
但是绝大部分都是“广”这一步就够了,因为现状决定没有那么多的公司那么多的系统需要非常深入的去研究语言本身,更多时候解决系统问题或者技术问题,更多的时候瓶颈在于思路而不是语言。
由于每个人对广和深理解都有差别,所以以上都是个人建议,仅供参考。
或许你应该补补科班。
比如:
http://study.163.com/curricul...
不用太深入,可以选择系统的了解一下。
然后根据你的选择再确定方向。
能理解你的心情,目标肯定是要的,不然这种下去只会增广视野缺没有深度的积累.
给出一些个人建议
1.深入某种语言学习,从语言层面到框架,从写业务到编写基础框架.
2.了解各种环境,比如PHP的nginx,appache,你至少要熟练
3.熟悉语言相关技术,比如redis,并发,优化等
其实总结就一句话,人的时间和精力是有限的,能做好一件事情,学精一门语言就足够了.
科不科班没关系,工作的东西学校根本教不了。
技术这东西永远学不完,现在工作引导学习的很多,这也正常。如果什么工作可以按照自己的学习计划下去,那根本不可能。而且技术更新换代很快,没准你学完就不流行了。
编程的本质是为了更好的为人们去服务,如果单纯的考虑自己学会了什么,能牢固掌握什么,工资可以达到什么程度来衡量自己的话,那根本不准确。一般来说,前期无所谓吧,换一份工作换一种语言或者技术,多学点是没错啦。不过必须深入去理解这项工作的本质,积累经验,学以致用。如果换了多份工作,感觉每次都要重新学起,而且基本都是皮毛的入门,这只能说学的不深了,需要好好总结一下了。
我的想法是,找一种自己感兴趣的来学,专门学精。皮毛学会了,就学优化,学软件开发的流程,学团队管理,深入到软件开发的所有环节。
真的,你已经到了需要系统知识(科班知识)的时候了。
系统知识对你解决没有具体细节问题可以作用并不是太明显,但是对于管理项目,管理自己的知识体系,宏观的看问题很有帮助。
另外,全栈什么的就先听听吧,每一个真正全栈都有至少一个特别精的专业方面,因为语言的相同所以对相关业务稍作研究也会有不错的成绩;而所有方面都只会一点皮毛的那不算全栈,说好听的叫工程师助理,难听的其实就是打杂的。
建议如果立志做一个全栈,先是确定一个专的点,先做专后做广。一口吃不成个胖子。
还有,不要被公司的业务所牵制,公司不需要对你的未来负责。你自己需要钻研什么和公司给你的任务是什么并不是必然相关,充分利用好你的业余时间。等你某项专精后,你才有权利选择更适合你能力的任务。
作为刚入行的新人我也帮不到了题主你什么,给你加个油~
所谓技多不压身,总会有一天你会觉得前面学的“皮毛”并不没有白学。
程序员要有广度更要有深度,建议你找到自己的兴趣所在深入研究,共勉。
首先题主你要有目标,就像楼上说的全才还是专才?你要考虑清楚。
谁说辞职就会有糟糕的履历的?如果你觉得自己想要做专才,在一门技术上钻研到底,把一门语言弄精弄通,那么公司的发展前景和你的人生规划产生矛盾,你辞职离开也是带着浩然正气的。反之,如果你选择全才,想创业,那么你的工作经历恰好和你的目标相同,也不会有什么怨言了。(说一点题外话,我认识一个5年的PHP大牛,在5年的瓶颈期,一直“居无定所”,基本三个月一跳槽,还是有用人单位会用,他说,公司不合适就走,都这个年代了,还憋屈自己在一个和自己人生价值观、世界观不同的公司里,我们还是60、70年代的人吗)
人生道路上,老天不会只给你一个选择,他会给你多种选择,至于你要选择哪一条,都是你自己的路。想好再出发,坚持到底!题主加油~
所谓技多不压身也是在精力范围内搞。楼主,我觉得你可以离职。
天道酬勤,厚积薄发
全而精,简而洁,加油!!!
谢谢各位大神指点,很多回复很有参考性的指点意义!