很多人都在问,现在学计算机还来得及吗?网上全是裁员的消息,大厂缩招,感觉市场冷下来了。说实话,确实冷了。跟前几年那种是个人学点前端就能找到工作的“黄金时代”比,现在难多了。
但这不代表计算机专业就不行了。恰恰相反,这只是行业从狂热回归正常的表现。以前是互联网公司烧钱扩张,需要大量的人去堆功能,所以招聘门槛相对低。现在经济环境变了,公司开始关注利润,关注效率,自然就要裁掉冗余的岗位,招聘也更看重真本事。所以,不是行业不行了,而是对从业者的要求变高了。
这个专业的前景,长期看,依然是所有专业里最好的之一。为什么?因为整个社会都在数字化。银行要做手机App,汽车要有智能座舱和自动驾驶,连农业都要用无人机和传感器。这些背后全都需要软件,全都需要程序员。这个基本盘没有变,而且还在不断扩大。所以,需求是实实在在的,只是这些需求不再仅仅局限于几家头部互联网公司了。
那么,现在想入行或者正在这个专业的学生,到底该怎么办?
第一件事,把基础打牢。这一点怎么强调都不过分。我面试过很多人,简历上写着精通各种框架,结果问一个最基础的计算机网络问题,比如TCP三次握手,就说不清楚。或者让他手写一个简单的算法,比如二分查找,都写得磕磕绊绊。
框架(比如React, Vue, Spring)只是工具,每年都可能出新的。但是数据结构、算法、操作系统、计算机网络这些东西,是计算机科学的基石,几十年都不会有太大变化。把这些学透了,你才能真正理解软件是怎么运行的,才能在遇到复杂问题时有解决思路,而不是只会用现成的工具。而且,大公司的面试,尤其是校招,最看重的就是这些基础。因为他们相信,基础好的人,学什么新东西都快。
第二,别当万金油,要找一个方向深耕。现在已经不是那个什么都懂一点的“全栈工程师”最吃香的时代了,尤其对于新人来说。精力有限,你不可能什么都精通。你应该找一个自己感兴趣并且市场需求大的方向,钻进去。
比如你可以选:
* 前端开发:不只是写页面,现在的前端要考虑用户体验、性能优化、工程化,技术深度一点不比后端浅。
* 后端开发:这是最大头的需求。用Java、Go或者Python写业务逻辑、操作数据库、保证系统的高并发和高可用。这是很多公司的核心。
* 人工智能/机器学习:这个方向很热,薪资也高。但是门槛也最高,对数学和算法的要求非常高,很多好岗位甚至要求博士学历。如果数学基础好,可以考虑。
* 数据工程:这个方向可能没那么“性感”,但非常缺人。公司有大量的数据需要清洗、处理、存储,数据工程师就是做这个的。工作稳定,需求量大。
* 移动端开发:虽然现在很多应用都用小程序或者H5了,但是原生的iOS和Android开发在体验和性能上还是有优势的,尤其在游戏、音视频等领域,需求一直都在。
怎么选?先都去了解一下,看看它们分别做什么。然后选一个,开始做项目。不是做课程设计那种小打小闹的项目,而是做一个能解决实际问题的东西。哪怕这个“实际问题”只是你自己的一个痛点,比如做一个自动记账的工具,或者一个管理游戏装备的网站。
第三,动手能力比学历重要。当然,有好学校的背景是加分项。但对于程序员这个职业,你最终拿出来说话的,是你的代码和你的项目。你的GitHub主页,就是你的第二份简历。
所以,一定要有自己的作品。这个作品不需要多宏大,但一定要完整、能跑起来、代码写得干净。最好能给项目写一个清晰的 README 文件,告诉别人这个项目是做什么的,用了什么技术,怎么运行。这能体现你的工程素养和沟通能力。一个打理得井井有条的GitHub,比简历上十行“精通xxx”的描述,有说服力一百倍。
在做项目的过程中,你会踩很多坑,会查很多资料,这个过程本身就是最好的学习。而且,面试的时候,面试官有九成可能会问你的项目。你能把项目的技术选型、遇到的困难、怎么解决的一五一十说清楚,这本身就是你技术能力的最好证明。
第四,软技能越来越重要。以前大家开玩笑说程序员不需要跟人打交道。现在完全不是这样了。代码是团队写的,产品是大家一起做的。你的沟通能力、团队协作能力,直接决定了工作效率。
你能否清晰地给产品经理讲明白一个技术方案的利弊?你写的代码注释和文档,别人能不能看懂?别人给你提Code Review的时候,你是什么态度?这些都是公司在招聘时非常看重的点。一个技术很牛但不愿意合作的人,对团队来说可能是个灾难。
总的来说,计算机专业的就业市场正在经历一场“去泡沫化”的过程。对于浑水摸鱼的人来说,现在是寒冬。但对于那些基础扎实、有动手能力、愿意持续学习的人来说,机会依然遍地都是。这个行业的回报和天花板,仍然远高于大多数传统行业。
不要被网上的焦虑情绪影响。与其花时间担心,不如静下心来,把操作系统那本书再看一遍,或者去LeetCode上刷几道题,又或者,去GitHub上找个开源项目,给它贡献点代码。你付出的每一分努力,市场最终都会给你回报。