跳转到内容

了解行业

你是否有经历过:

  • 做课设的时候,任课老师没有将需求限定得比较死,甚至直接来个内容不限、自由发挥;或者自己在课下想额外练习一下编程的时候,总是想不到要做些什么功能、使用怎样的技术?
  • 框架 / 库这么多,不知道怎么选、从哪里开始学。
  • 不清楚自己是否只是在拙劣地重复:会不会正在做的东西其实老早就被前人做得更好了?
  • ……

是的,相信你也猜到了:只是完成课内的要求,是远远不够的。在平日,就需要不断地进行各种各样的积累。不熟悉计算机的同学(比如,因为出身边远地区,经济比较困难;或者因为中小学阶段的学业问题而被管得死死的,结果大学之前一直都很少接触计算机)更要对此引起高度重视。方法有很多,这里按照个人经验提出一些较为可行的:

  • 浏览本行业及其它相关行业的新闻媒体。这些网站随手就能搜到很多,选几个内容比较符合兴趣的就行。
  • 选择自己感兴趣的,或较大概率作为日后发展方向的细分行业:可以是 Web、音视频、服务端、操作系统、体系结构、嵌入式、云、数据库、无人驾驶、工业软件,等等,了解这些行业目前主要应用哪些技术(以及相应的软件)、取得了哪些主要的重大发展成果、日后的发展趋势,等等。例:
    • React、 Vue、Angular 等 Web 开发框架是前端开发的主流;Spring 全家桶在 Web 开发中的重要地位,等等;跨平台等需求正越发受到重视。
    • 在音视频开发中,C / C++ 一般都是首选的编程语言,常用的库有 FFmpeg 等。
    • 关系数据库已高度成熟,常见的关系数据库产品有 Oracle DB、MySQL / MariaDB、PostgreSQL、Microsoft SQL Server 等;非关系数据库有文档型数据库(如 MongoDB)、图数据库、时间序列数据库、空间(地理信息)数据库、键值数据库、面向对象数据库,等等;主流的数据库产品通常都支持多个模型,而不仅仅是关系模型,如:各大关系数据库也在陆续添加 JSON、XML 等非关系数据的支持。PostgreSQL 常常是需要使用关系数据库的场景中的一个局部最优解。
    • 常见的编程语言,如 C / C++、Java、Python、C#、Kotlin、JavaScript / TypeScript,等等,有什么主要特点,适合或不适合哪些领域;它们的较新版本具有何种改进,有利于解决哪些需求 / 痛点,等等。
    • 人工智能行业的发展成果,譬如:近年来的许多汽车都支持辅助驾驶;语音输入正在普及,准确率已达到较高水平,乃至识别方言的表现也不错;机器翻译结果正在变得越来越接近信、达、雅的标准;与此同时,人工智能还面临许多问题,譬如:神经网络实质上是一个黑箱,人们目前还不能通过成本可接受的手段得知神经网络能够产生特定输出的具体 / 本质的原因;目前人工智能成果的落地,暴力堆数据、堆算力仍然不可避免,导致更多成果的大规模投入应用受到瓶颈(再次强调:即便如此,这也与包括初级软件工程师在内的无数岗位正在被取代不矛盾!);作为风口行业,人工智能产业也没有逃脱不良现象:总有大量人员骗取投资,捞完就跑,大量相关企业其实并没有太多技术功底,等等。
    • ……

这些积累都有机会为自己的未来工作和发展提供独特的指导。

虽然 AI 给出的回答依然时常出错,但搜集整理总览(overview)性质的信息、引人入门是 AI 最擅长、准确率最高的任务之一。