一、前言

2022年即将结束,2023年即将到来。已经离职创业三年,未曾外出游玩,经常从梦境中醒来,醒来便开始工作。这段时间即使在网络上也未曾断了和其他人的联系,这里包括很多程序员、架构师、CTO。很多人说现在对职业生涯感觉到迷茫,我还是坚持认为行业并没有终结,还有很多机会正在酝酿中。所以写这篇文章来畅谈一下2023年的机遇与挑战。

二、现状

在当今的互联网行业,程序员面临着许多挑战。其中,最为突出的三个挑战分别是互联网裁员潮、低代码开发盛行以及程序员内卷。

1、互联网裁员潮

近年来,京东、阿里、百度、腾讯、小米等互联网大厂的股价均出现大幅度下跌,轮番上演裁员潮。这意味着,程序员在职场奋斗时需要面对更加激烈的竞争。
在经济不景气的情况下,一些企业会面临资金短缺的问题。在这种情况下,企业会考虑裁员来节省成本、因为调整战略而裁员。如果企业决定放弃某个业务领域,就会裁掉相关开发岗位的员工。随着人工智能的普及,一些开发工作会被模块化、流程化、自动化,导致程序员失业。此外,当出现公司合并或某家公司被收购时,为了节省成本,新公司会裁掉一些员工,这是一种产业结构优化的普遍方式。企业也会因为调整组织架构或流程而裁员。员工绩效不佳、公司扩张速度过快等也会导致裁员。

重工业的发展是互联网和软件产业的前车之鉴,对于中国来说,不缺少重工业,但是并不是每一个人都可以紧跟重工业产业的发展而前进。以金属加工、机械制造、电子工业、建材业、化工业等为代表的一类重工业,随着科技的发展,企业会引进新技术来提高生产效率,但这会导致一些工人的岗位变得多余。这就必将导致下岗潮的来临,但从整体而言,原先紧跟时代学习的工人成为了程控工程师后收入得到了明显提升,竞争压力也小了许多。

所以说如果被裁,大概率并不是程序员做的不够优秀,而是客观规律发展的必然。行业不会消失,岗位却是不断进化的,裁员也是年年都会有,只不过在当下,裁员会令程序员感到剧痛。

2、低代码开发盛行

随着若依框架、EasyCode等框架的出现,使得代码开发变得更加容易。这意味着,程序员需要在职场中更加突出自己的价值,以此来区分自己与其他程序员。
低代码开发通过使用预先定义的模板、组件和工具来减少编写代码的工作量。低代码开发主要面向的是那些没有太多编程经验的开发人员,或者是需要快速开发应用程序的团队。
低代码开发通常包含两部分:组件和平台。组件是用于构建应用程序的预先定义的代码片段,可以让开发人员轻松地拖拽和组合,而无需手写代码。平台则是用于编写、测试和部署应用程序的工具。
低代码开发因为以下四个特点很容易被青睐:
快速开发:通过使用预先定义的组件,开发人员可以轻松快速地构建应用程序。
更低的门槛:低代码开发对于编程经验不足的开发人员来说是一种很好的选择,因为它降低了学习曲线。
更高的生产力:低代码开发可以让开发人员更快速地完成工作,从而提高生产力。
更容易的维护和升级:由于低代码开发使用的是预先定义的组件,因此应用程序的维护和升级会更加容易。

但话说,打蛇打七寸,低代码开发也并非是万金油,低代码开发也有如下缺点:
难以处理复杂的逻辑:低代码开发的组件通常只能完成基本的功能,无法处理复杂的逻辑。
无法实现特定的功能:低代码开发的组件库无法提供所有的功能。
不能定制化开发:低代码开发的组件通常是模板化的,无法完全满足定制化开发的需求。
大数据能力低下:低代码开发的组件无法处理大规模的数据。

所以低代码开发只会影响到普通程序员,并不会影响到高级程序员甚至架构师的职业生涯。

3、程序员内卷

近年来,随着互联网的快速发展,软件开发成为了一个非常热门的行业。为了满足市场的需求,许多培训机构开始提供批量培训程序员的服务。
然而,随着批量培训出来的程序员数量的增加,一些问题也开始出现。首先,由于培训时间有限,新手程序员往往缺乏基础能力。其次,由于培训内容大多雷同,新手程序员之间出现了同质化现象。
同时,市场对于更优质软件开发成果的需求也越来越高。这意味着,新手程序员需要不断学习、提升自己的能力,以此来应对市场的挑战。只有通过不断的学习和实践,才能提高自己的技能水平,在竞争激烈的市场中立于不败之地。
也因此,如果程序员都普遍师出同门,则将大概率使用已有的技术互相进行血拼。同质化现象也是培训机构无法解决的顽疾之一,因为毕竟针对每一个学员的特点进行有针对化和差异化的培养所付出的成本是巨大的。所以这时候可以考虑使用CSDN的在线课程功能学习自己感兴趣的内容,至少学一些大多数人见所未见、闻所未闻的技术可以保证所学内容并不会与其他人出现大规模的同质化。

三、2023年我们可以做什么

1、构建知识图谱和任务清单:

大家应该都玩过一些即时策略类游戏,我们都知道游戏中会存在技能树或者科技树这样的设定。那么放在计算机编程领域,更是需要构建好知识图谱才能快速适应和参与到挑战中。知识图谱是一种用于组织、展示、管理知识的工具。它通常由一系列的节点(也称为实体)和边(也称为关系)组成,用于表示知识中不同实体之间的关系,如果你画过ER图,就能很清晰的知道知识图谱的构成。如果对于实体关系型的知识图谱不熟悉,也可以用脑图来整理你所了解各个编程领域的知识。

当你有了知识图谱之后,就可以开始构建任务清单了。这个任务清单用于确保你知识图谱中的每一个节点都有对应的技术实现Demo和参考文献(要是国内有人发起做这样的一个网站就更好了)。比如“文件读写”这一个命题,我们可以有“随机文件读写”、“整体字符读入”、“16进制文件读取”等不同实现,那么当你在知识图谱上有“日志审计”这个节点时,就可以关联“随机文件读写”,从而快速找到Demo实现功能。

一年365天,每天都做2-3个小Demo,几乎一年的时间就可以覆盖所有常见应用场景了。

2、积累和开发通用组件库和脚手架

比如你可以开发Vue、React、Android、Winform、Spring Boot等各版本脚手架,如果能快速从脚手架迅速开始开发工作,当项目数量足够多时,你一年至少能节省数周的时间。

对于常见的问题(比如集合、文件、网络通信等的操作)要有规范而简短的各个语言版本工具类,并且采用统一的命名,这样更容易进行技术栈切换。这就是为什么要构建知识图谱和任务清单的原因,因为当你真正进行编程的时候,这些工具都是不可或缺的。

对于常见的API调用(比如微信支付、支付宝),要有现成的源码储备,最好是模块级别,整合即可使用。

大部分的通用组件库和脚手架都可以使用开源产品,但要注意许可协议,如果你做商业项目,就要选择Apache、MIT等对商业友好的开源产品,如果你按上文所说做了自己的知识产权积累,最好是将自己个人开发的内容进行开源化处理,以规避任职公司对你的技术积累进行侵占,必要时可以申请软著。

3、熟悉和了解新老自动化手段

比如使用批处理、Bash脚本、Jekins、或者完整的DevOps套件,准备好各种测试环境。必要时可以用程序控制的方式组装已经拥有的模块,比如用FileUtils、Freemarker、Velocity或哪怕简单的模板字符串批量生成代码,再通过批处理或Jsch远程到测试环境服务器快速搭建。

熟练运用好各种自动化手段可以让你的开发过程事半功倍。

四、如何才能做到

1、基础能力的建设

包括数据结构、算法、设计模式、计算机网络等基础知识。
学习数据结构的方法有很多种,如看书、上课、做习题、看视频、参与讨论等。应该找到适合自己的学习方法,并坚持使用。数据结构是一门理论与实践相结合的课程,做习题是学习数据结构的重要方式。应该多做习题,不断练习自己的编程能力。多思考,理解数据结构的原理,并将其应用到实际问题中。学习数据结构要有持久的耐心和毅力。应该坚持学习,不断提升自己的能力,不要因为遇到困难就放弃。应该做到坚持不懈,直到学会数据结构为止。
算法的学习则可以主要攻克冒泡排序、选择排序、插入排序、快速排序、归并排序、堆排序等排序算法;顺序搜索、二分搜索、哈希搜索等搜索算法;最短路径算法、最小生成树算法、拓扑排序算法、关键路径算法等图论算法;了解DES、AES、RSA、MD5等加密算法原理;学习 LZW、Huffman编码、Arithmetic编码等压缩算法。
这些算法还可以组合运用,比如分治、动态规划等。
可以豪不夸张的说,这些基础能力是用来对抗AI代码生成器和低代码开发的唯一出路。

2、业务能力的建设

结合传统行业着眼于现实场景,比如商业领域进销存、企业管理加强、财务水平加强,以及农业、工业、城市管理等方面人工智能应用场景。需要熟悉业务。
互联网在工业领域的应用在工业领域,互联网的应用主要体现在智能制造、物联网、信息化管理三个方面。
智能制造是利用互联网技术实现工厂自动化生产的一种新型生产方式,主要包括自动化控制、物流管理、质量控制等。通过智能制造,可以提高生产效率、降低生产成本、提升产品质量。
物联网是指将物理世界和网络相连,通过网络进行数据传输和信息交互的技术。在工业领域,物联网可以用于实现设备自动化监控、远程控制、数据采集等。
信息化管理是指利用信息技术实现企业管理信息化的过程。在工业领域,信息化管理可以用于实现生产计划、库存管理、质量控制、设备维修等。
在农业领域,互联网的应用主要体现在农业信息化、农产品电子商务、农业智能机械化三个方面。
农业信息化是指利用信息技术支持农业生产经营活动的过程。农业信息化可以用于实现农田测绘、农田管理、农业信息发布等。
农产品电子商务是指在互联网平台上进行农产品交易的活动。农产品电子商务可以用于实现农产品销售、农产品进出口等。
农业智能机械化是指利用智能机械替代人力实现农业生产的过程。农业智能机械化可以用于实现农田耕作、农产品收获、农田灌溉等。
这些领域方面的业务如果能够快速掌握流程、需求,则职业生涯将会有极大的保障。

3、通用能力的建设

学习英语、阿拉伯语等语言,可以从互联网学到更多的技术和内容。
最重要的是,语言技能是完成海外软件外包的重要途径。海外软件外包是指将软件开发、维护等服务外包到海外的一种商业模式。在当前的软件开发市场中,海外软件外包在一定程度上成为了企业的一种选择。海外软件外包可以为雇主企业带来较低的成本,并且能为自己进行创收。由于国内少数地区及海外欠发达地区的劳动力成本相对较低,海外软件外包可以使企业在保证软件质量的同时,较低的价格完成软件开发。这对于资金有限的小型企业来说,是一个很大的优势,全世界的小型企业有多少,这里究竟有多大的市场就不言而喻了。当然做海外软件外包要面对更多的挑战,比如需要更专业的技术支持,而且在开发过程中遇到的技术问题和实施问题,需要更快速度的解决。

学习管理技能,通过换位思考、与他人协作来达成统一目标。
在软件开发项目中,团队成员之间通过交流、协作、分工合作的方式,共同完成项目,团队协作对软件开发项目的进展具有推动作用,因此对于团队的管理是重中之重。当团队成员之间能够进行有效的沟通和交流时,就有可能发现项目中存在的问题,从而及时解决。团队协作的过程中,团队成员之间可以相互提出建议、指出问题,从而有助于提升项目质量。除了工作上的沟通外,大量的时间还需要处理与他人协作,提升团队凝聚力。

学习法律,了解如何能通过合法途径更好的完成开发工作并赚到钱。
前进的道路上有很多的荆棘,如果不了解法律很容易就会导致前途受阻,近年来也时有发生“面向监狱编程”的事例。不仅仅是我们大家所熟知的“不能侵犯他人知识产权”、“不能轻易做棋牌类、上门服务类、拉人头类、第四方支付类、线上投资类的项目”,有时候技术上的常规操作使用不当也可能会触犯法律,比如修改数据库产生“财务造假”,代码上传到云盘导致“违反保密协议”,测试环境用生产付款接口导致“非法挪用资金”。
所以我们没有必要去把所有的坑都亲自走一遍然后掉进去,最佳的做法是我们先知道坑在哪里,然后去走那些没有坑的路。

4、了解宏观趋势

要了解包括国家十四五规划要达成的目标、未来愿景,了解海内外互联网和软件公司的动向。这一点非常重要。
随着宏观经济的发展,程序员的就业机会和收入水平都会受到影响。当宏观经济处于繁荣时,程序员的就业机会往往会更多,收入也会相对增加;而当宏观经济处于萧条时,程序员的就业机会往往会减少,收入也会相对下降。而这里的经济周期是不断演进和快速变化的,毕竟谁也不想在竞争压力巨大的时间点上进入了一个错误的公司。
其次,十四五规划对程序员也会产生重要的影响,十四五规划是一项重大战略规划,它对国家未来的发展方向和重点领域作出了明确的定位,程序员可以根据十四五规划的方向,把握自己的发展方向。例如,十四五规划中提出了加快发展新型基础设施、数字经济、信创等领域,程序员可以通过学习相关技术,为自己的发展做好准备。都说程序员难做、内卷,但试问一下,FPGA会么,可以烧一个芯片出来么、汇编会么,可以做个操作系统出来么、基础理论扎实么,可以做个国产数据库出来么?为什么这些领域它就不卷?还不是因为看到难度,打退堂鼓么。
此外,海内外互联网行业动向对程序员也会产生重要的影响。程序员可以通过了解海内外互联网行业的发展趋势,把握自己的职业发展方向。例如,当海内外互联网行业发生重大变化时,程序员可以根据自己的兴趣和能力,选择相应的发展方向。

5、改变收入构成

增加副业、学会分包、拓展海外业务都可能会对收入产生影响。
增加副业会大幅度增加收入。通过增加副业,可以获得额外的收入、结识更多的人脉,程序员可以通过做软件开发项目的兼职来增加收入。
做分包也会增加收入,并能通过分包给他人的方式,从中获取到差价,并且是一个有利的杠杆可以成倍的放大你的收益。分包是指将大型项目分解成若干个小型项目,分别由不同的团队或个人来完成。通过学会分包,程序员可以获得更多的项目,从而增加收入。而你赚的那一部分就是你统辖和管理分包人员的劳务报酬。比如2000元/人天的项目,其中500-800元/人天包给个人,额外拿出一倍的成本作为风险准备金,这样即使遇到了项目风险,只要风险在可控范围内,你也最少每人天能获得400元的收益。
拓展海外业务也会增加收入。海外市场的需求往往比国内市场更大,通过拓展海外业务,程序员可以获得更多的项目,从而增加收入,比如《原神》就是一个非常经典的海外业务拓展的案例。从个人角度来说,接一些海外的外包是不错的选择,这些项目大致体量都比较小,不会占用太多时间,把软件做出来卖给中东的土豪老板,岂不是美滋滋。
也要注意,增加副业、学会分包、拓展海外业务都有可能带来风险。增加副业可能会带来时间和精力的分散。程序员要同时处理多个项目,可能会使自己的时间和精力分散,对主业的发展造成影响。海外市场的环境和规则往往与国内不同,拓展海外业务需要程序员具备较强的适应能力。

6、差异化竞争

通过差异化避免内卷,除了增删改查外,还可以在解决具体问题的小工具、小算法上发力。没必要今年全都做跨境电商、明天全都做短视频、后年全都做社区团购。比如通过模板快速生成PowerPoint、Word、Excel文档或者做一款SVG制作工具帮助前端开发人员快速完成工作。比如今年金山软件三季度营收18.4亿,如果看他们的产品,可以说无论是AI提取图片文字、PDF编辑合成还是视频剪辑工具、录屏工具,都是助力营收的关键点。
当然当我们看到他们做的好的时候,就要明白一点:别人也能看到。通过复制产品模式的方式注定是走不通了,除非你能保证在整个互联网和软件行业占据垄断地位,否则你将迎来下一次“百团大战”、“百车大战”。所以当下能为自己选一个好赛道的最好方式就是闲下来、多看书,甚至拿出一本字典自己随机选几个字造词,看看能碰撞出来什么样的火花,结合业内的抱怨和业外的知识,做一些真正好用的东西出来。

五、总结

2023年注定是互联网和软件行业翻开新篇章的一年。存在众多机遇与挑战。如果遭遇了裁员、业务缩减等情形,也要知道塞翁失马焉知非福。毕竟能给自己出来创业的机会并不多。我本人也是于2020年辞职,开始专心做软件,即使是不做任何宣传,营收还算不错。所以说如果当你迷茫的时候,不如就动起手来,先赚它一波钱试试。无论是从哲学意义还是从主观能动性角度来说,实践才能出真知。