python - 一个PHP出身码农工作5年各种语言都学感觉不伦不类心慌怎么办?
我,大专非科班出身,自学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年代的人吗)
人生道路上,老天不会只给你一个选择,他会给你多种选择,至于你要选择哪一条,都是你自己的路。想好再出发,坚持到底!题主加油~
所谓技多不压身也是在精力范围内搞。楼主,我觉得你可以离职。
天道酬勤,厚积薄发
全而精,简而洁,加油!!!
谢谢各位大神指点,很多回复很有参考性的指点意义!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

Python和JavaScript在开发环境上的选择都很重要。1)Python的开发环境包括PyCharm、JupyterNotebook和Anaconda,适合数据科学和快速原型开发。2)JavaScript的开发环境包括Node.js、VSCode和Webpack,适用于前端和后端开发。根据项目需求选择合适的工具可以提高开发效率和项目成功率。

C 的未来将专注于并行计算、安全性、模块化和AI/机器学习领域:1)并行计算将通过协程等特性得到增强;2)安全性将通过更严格的类型检查和内存管理机制提升;3)模块化将简化代码组织和编译;4)AI和机器学习将促使C 适应新需求,如数值计算和GPU编程支持。

DMA在C 中是指DirectMemoryAccess,直接内存访问技术,允许硬件设备直接与内存进行数据传输,不需要CPU干预。1)DMA操作高度依赖于硬件设备和驱动程序,实现方式因系统而异。2)直接访问内存可能带来安全风险,需确保代码的正确性和安全性。3)DMA可提高性能,但使用不当可能导致系统性能下降。通过实践和学习,可以掌握DMA的使用技巧,在高速数据传输和实时信号处理等场景中发挥其最大效能。

多次调用session_start()会导致警告信息和可能的数据覆盖。1)PHP会发出警告,提示session已启动。2)可能导致session数据意外覆盖。3)使用session_status()检查session状态,避免重复调用。

AI可以帮助优化Composer的使用,具体方法包括:1.依赖管理优化:AI分析依赖关系,建议最佳版本组合,减少冲突。2.自动化代码生成:AI生成符合最佳实践的composer.json文件。3.代码质量提升:AI检测潜在问题,提供优化建议,提高代码质量。这些方法通过机器学习和自然语言处理技术实现,帮助开发者提高效率和代码质量。

静态分析在C 中的应用主要包括发现内存管理问题、检查代码逻辑错误和提高代码安全性。1)静态分析可以识别内存泄漏、双重释放和未初始化指针等问题。2)它能检测未使用变量、死代码和逻辑矛盾。3)静态分析工具如Coverity能发现缓冲区溢出、整数溢出和不安全API调用,提升代码安全性。

使用C 中的chrono库可以让你更加精确地控制时间和时间间隔,让我们来探讨一下这个库的魅力所在吧。C 的chrono库是标准库的一部分,它提供了一种现代化的方式来处理时间和时间间隔。对于那些曾经饱受time.h和ctime折磨的程序员来说,chrono无疑是一个福音。它不仅提高了代码的可读性和可维护性,还提供了更高的精度和灵活性。让我们从基础开始,chrono库主要包括以下几个关键组件:std::chrono::system_clock:表示系统时钟,用于获取当前时间。std::chron

Python和JavaScript的未来趋势包括:1.Python将巩固在科学计算和AI领域的地位,2.JavaScript将推动Web技术发展,3.跨平台开发将成为热门,4.性能优化将是重点。两者都将继续在各自领域扩展应用场景,并在性能上有更多突破。
