2021 年了,想学后端, NodeJS 、 Python 和 Go 三选一。
深知这类问题过于月经,所以从自身需求来考虑比较好,希望大伙给给意见。
我是工作四年的前端,由于业务原因接触了不少后端的知识,基础的 NodeJS 和 Python 知识都了解过,觉得前后端很多逻辑是不分家的,那我为何不把后端也学了呢。因此计划 2021 年选一门后端语言去从零学起,一方面是提高技术。一方面是提升简历,还有一方面是有个人项目上的需求,想写后端支撑起自己的想法,估计也是写写 RESTful API 。
以上就是个人的情况,下面是跟搞技术的朋友聊这个话题时的一些碎碎念:
原本打算既然会一点 Python,那不如 Django 一把梭得了,但是有位四年 Python 经验的朋友劝住了我,说既然是从零开始学,为什么不学 Go 呢,云计算以后是大趋势,万一押中了 Go,简历上肯定比精通 Django 好看,何况现在前端懂个 CURD 也不吃香。他觉得 Python 版本经历过大升级,遗留了不少版本兼容的坑,跨平台还会遇到依赖系统的模块,而 Go 构建快,没有奇怪的编译错误和依赖,到哪都能跑,用过就知道。
后来找到写过 Go 的全栈大佬,他说云原生的 Go 确实香,处理协程信道的设计很好,问题是按我的需求,学后端语言大概率也是 CURD 用得多。而 Go 主要是用来做基础建设而不是写业务,至少他不会用 Go 来写业务,真要 CURD 撸得快还是 Python 和 PHP,而且我也不是要转云开发,前端就算懂了简历加分也不大,还不如学个出活快的。
也有朋友问我为什么不考虑 .Net 、PHP 和 Java 。这说起来也心酸,跟我同寝室的哥们当年就是专心 .Net 撸到底,结果这四年经历了公司两年不涨薪,跳槽薪资倒挂和公司倒闭等破事,现在已经转运维。他说一开始觉得是自己技术问题才倒几次霉,后来想想其实是 .Net 在国内确实不吃香,基本都是政府在用的多,利润不高,所以公司开的薪水也低,就业环境也更差,造成困局,劝我别学 .Net ,至少在国内用不上。
至于 PHP,我现在的公司前年就放消息出来 PHP 部门要解散,给 PHP 的员工一年的时间内部转岗或离职,原因是很少接到 PHP 新项目,利润也不高,而部门人数挺多的,所以要开源节流,留下几个会 PHP 的大佬兼任 PHP 老项目的维护就好了。然后我跟 PHP 部门的人挺熟的,听到 PHP 的就业环境也在缓缓变差,几个 PHP 后端老哥都转了岗或者离职。当时 PHP 的大佬押宝小程序,带领几个 phper 成立了小程序部门,后端继续用 PHP 撸,前端自己摸索,反倒成为了公司这两年来业务增长最猛的部门。这俩件事对我选语言的影响还挺大的,感觉选对赛道真的很重要。
这问题我也有跟部门的技术主管聊过,他说我是要转行,铁了心学后端,就别整那些虚的,直接学 Java 撸到大厂,但问题是我可能只是学来了解了解后端的知识,又或者只是提升一下简历,那确实没必要。毕竟赛道不同难度也就不一样了,Java 工程师多,相对地竞争激烈,问的问题也难,上来就问 JVM 调优。但是你如果说会其他别的后端语言,可能就问问你基本的应用和思路就好。所以如果你只是想了解后端的知识,建议学 Go,没有很复杂的黑魔法,很多标准库新手也能读懂,而且语言风格跟 Javascript 相差很多,语法很像 C,多了解一下静态强类型语言也颇有益处,以后想搞微服务啥的也容易上手。
最后是问到了在用 Nest 的前同事,他说前端学 NodeJS 挺快的,分分钟转后端不是问题,问题是大厂用得不多,真正能派上用场的机会不多,他公司开发团队才六人,所以招个前端进来带一带 NodeJS 就能全包 Web 栈。如果是认真学后端语言防身,还建议找大厂认可的后端语言比较好,比如 Java,因为觉得他现在在用的 Nest 全家桶,基本上就是 Java Spring 的丐版,既然把那么多 Spring 的规范都学了,那为啥不学 Java 直接撸 SpringBoot 呢。
废话有点多,所以到最后还是蛮纠结该学哪个的,有没有老铁点拨下?