1. 前言
这是一篇迟来的总结。
但幸好还不太迟,赶在年三十晚上发出来。 可以说是刚刚好。
人生可能也是这样, 早一步到未必好, 晚一步也未必不好。 一切刚刚好才是最好。
2. 现状
对于前端开发而言,过去几年可谓是江河日下。伴随着经济大环境的持续下行,各公司缩减业务、压缩成本,裁员几乎成了每年的“保留节目”,而首当其冲的往往是前端岗位。 与此同时,大语言模型的快速崛起,AI编程逐渐进入大小企业老板们的视野,目的无非是“降本增效”。从Cursor等工具的崛起可以看出,生成前端代码似乎(并且确实)已经不再困难。
近来“超级AI个体”的概念甚嚣尘上,仿佛一个人就能完成产品设计、前端开发、后端开发以及部署等所有环节。在亲身体验了Cursor后,我不得不承认这种趋势的合理性。如今,越来越多的公司利用AI取代人工,并逐步缩小业务规模;而未来,或许只需要三五个人的小团队,借助AI的能力,就能开创一家小公司并完成一件大事。可以预见的是,各种小型企业未来可能会如雨后春笋般涌现,AI的发展将成为这一切的催化剂。
因此,对于前端开发者而言,现在可能正处于转折点:要么被AI取代,要么乘着AI的东风崛起,又或者回家继承本就不太富裕的家业。也许现在学习AI已经显得有些晚了,但对未来而言,当下依然是最好的起点。从2017年Transformer论文的发布,到2020年GPT-3初步具备智能意识,再到2022年GPT-3.5横空出世,AI才真正进入大众视野并引发研究热潮。由此看来,大家的起跑线其实并没有拉开太大差距。
对我个人而言,十年前或许就应该去学习AI,但那又是另一个故事。人生本就充满遗憾,多一个少一个,又有什么区别呢?
这篇年度总结,源于某种复杂的心境,抑或是对人生有了新的感悟,想找到一个可以分享的人。
闲话少叙,进入正题
3. 工作
3.1 前端
3.1.1 业务
在业务层面,今年没有什么特别值得提的亮点。整体波澜不惊,平平淡淡:要么维护老项目,要么开发一些新功能,但往往做到一半就“胎死腹中”。这种状态似乎也贴合当前的社会环境和经济下行的趋势。
3.1.2 设计稿转代码
今年做了一些通用工具的开发,其中比较有趣的是D2C工具——实现了对Sketch设计稿的解析与页面预览,并能智能生成前端React组件代码。
主要遇到的解析难点:
-
SVG图形的解析与布尔运算支持
由于sketch的绘制路径所保存的数据结构是json格式, 需要研究它的语义转化为对应的svg路径。 再叠加上各种布尔运算,使得解析逻辑尤其复杂。 更何况还可以对图形进行分组,再用分组去和其他图像做布尔运算,这部分着实花了不少精力。
-
自动布局逻辑的实现
sketch自动布局的逻辑有2种
- 智能布局: 每个元素有个resizingConstraint字段, 代表了当前元素在父级内的定位和宽高是固定的还是跟随父级进行伸缩。
- 流式布局: 决定了元素与同级其他元素的位置关系,比如一个元素伸缩,左右侧的元素位置会跟随这个元素进行调整, 上下的元素会跟随这个元素的伸缩进行变形。
-
Symbol类型
Sketch中Symbol类型类似于前端封装的组件,是由一些基础图形或者更小的symbol组合而成,支持属性传递和复用。对于Symbol的解析就需要处理诸如图形颜色、文本显示、子Symbol替换的透传逻辑,以及Symbol下的自动布局逻辑。
相较之下,基于结构化数据生成React组件代码就显得简单许多。我单独拆分了一个包,用于基于标准JSON结构生成代码,支持组件渲染、状态与store变量定义、组件导入等功能。
3.2 AI方向
3.2.1 技术调研与落地
年中开始,我开始负责公司AI方向的技术调研以及内部落地的可行性研究。可能有同学会好奇为什么这个事情会让一个前端来做。 我想说的是,每件事都会有人来做,那个人为什么不能是你呢?
后面我开始组织各方向的技术专家召开会议,分头推进,分别研究AI大模型层、应用层、前端视觉规范等内容,并定期分享进展。
个人产出:
-
架构研究
做了大模型应用整体架构的研究, 其实大模型应用涵盖的概念和知识点很多很密集, 大部分人可能会有些概念, 如提示词、RAG等等,但并不系统。我把整体的研发链路做了梳理,并形成了比较系统的方法论。
-
框架与项目调研
调研了诸多框架和项目, 如时下最火的综合框架langchain,lammaIndex, 专注于agent开发的crewAI, 低代码平台dify,开源项目RagFlow,QAnything。 使用了他们的功能,并研究了他们各模块的代码实现。
- 向量库选型
向量数据库作为RAG流程中必不可少的一环, 在市面上有很多个选择, 从简单的faiss,hnswlib这种封装了核心ANN算法的python包,到专业的具备专业数据库能力的Milvus,Weaviate,qdrant,再到传统的数据库es,redis,postgresql通过加装插件也可以支持向量检索。 我对于市面上这些向量库做了比较全面的调研, 做的技术选型得到了所有技术专家的认可和一致通过,未来会作为公司内的向量库标准进行落地。
- 知识库项目
对于知识库来说,核心就是利用RAG(检索增强生成)对知识库内的文档进行检索,查询到与问题最相关的内容,交与大模型进行问答。为了降低RAG在公司内落地的难度和封装RAG的最佳范式, 我也做了一个前后端分离的知识库项目,前端自然是用最熟悉的react加公司内组件库, 后端用python和性能很高的异步web框架fastapi。 实现了文档从上传,各种非结构化文档的解析和内容提取;到基于给定知识库做用户问答的整套流程。
- 组件库知识问答
对于公司内部的组件库,为了方便前端同学使用和查询。我也通过RAG的方式开发了组件库问答功能,并集成到VSCode插件中以便前端同学使用。
- 文档解析
对于知识库问答来说, 最核心的部分是如何检索到与用户问题最相关的内容。 这对于文档解析的质量就有很高的要求。我对非结构化文档解析(尤其是PDF文件)也进行了一些比较深入的研究:
- 基础方法:基于文档数据结构解析,结合OCR提取文字。
- 复杂场景:由于PDF的特殊性,表格、公式等复杂信息难以提取,因此尝试了基于版面分析模型的方式辅助提取。
- GPT方式:将PDF转为图片后,直接用大模型提取内容与信息。这通常在大部分场景下效果出色,但是成本会高一些,适合不差钱的团队和项目。
4 读书与学习
4.1 微信读书
今年在微信读书上的数据:
-
总计阅读72本书,读完14本,阅读314天。
对于阅读时间这块我感觉还是挺出乎意料的,没想到自己会这么“卷”,平时其实并没有特别的感觉。
-
阅读范围也比较广,从百看不厌的金庸古龙,到新近感兴趣的明朝的故事(显微镜下的大明,大明王朝等),最后到AI相关的充电书籍。 这里也列个书单给各位想入门AI的做个参考
AI书单
-
Python编程
- 《流畅的Python》
-
深度学习
- 《Python神经网络编程》
- 《Python深度学习》
- 《深度学习原理与PyTorch实战》
-
大模型
- 《BERT基础教程》
- 《Transformer自然语言处理实战》
-
机器学习
- 《机器学习》
- 《统计学习方法》
4.2 学习视频
推荐看台湾大学李宏毅教授讲的机器学习课程,尤其是对GPT、Transformer的讲解风趣幽默,没有数学基础一样能领悟到大模型的真谛。
4.3 读书感悟
“你瞧这些白云聚了又散,散了又聚,人生离合,亦复如斯。你又何必烦恼?” - 《神雕侠侣》
我们每个人注定要遇到一些人, 然后和他们有各种各样的交集和故事,最终再分道扬镳。人生之无常,可见一斑?
“他认为一个人的身世并不重要——人既不是狗,也不是马,难道一定要“名种”的才好? 一个人要成为怎么样的人,全都要看他自己”。-《多情剑客无情剑》
我们虽然日常以“牛马”自居,但内心深处何曾如此认为?
一个人不是牛也不是马。虽然不能选择出身,但以后成为什么样的人,主要还是看自己。
5 生活
今年的生活虽然不像这个社会的形势一样走明显的下坡路,但情绪难免受此影响。 悲观的情绪在不受控制的蔓延, 伙伴们的日常聊天也从以前的意气风发,逐渐变得意志消沉,各种负面消息袭面而来。 很想以两句诗激励自己和大家:
“雄关漫道真如铁,而今迈步从头越”
5.1 旅行
今年去的地方不多,但去了对的地方,一个就足够了;去错了,再多也是枉然。旅行的意义,或许在于当时的心境。
1月 包头与西安
年初,朋友在包头结婚,去的时候顺道从西安转机。在长安停留了两天,在大唐不夜城拍了古装照,不夜城的繁华给我留下了深刻印象。
4月 杭州
说不上第几次去杭州了, 这次去也是为了某些私人原因,没有特别的游玩,也没有特别的记忆。对杭州的印象也从小时候的“上有天堂,下有苏杭”到逐渐褪去了光环,现在对杭州的最直观的感受可能就是人多,交通拥堵。
8月 枸杞岛
穿越城市喧嚣,乘着夏风去了枸杞岛。看了日出,走过沙滩, 探秘了无人村, 风景谈不上多么美,但远离大陆可能也正符合我漂泊的心境。
10月 扬州
国庆开车回北方路过扬州,顺道玩了2天。
去的时候见了泉仔, 请我吃了扬州一绝的早茶, 意想不到的豪华,扬州人对于生活的精致追求可见于斯。 一顿早饭花了将近200大洋,着实让泉仔破费了。
瘦西湖自然也去了,没有特别的感觉,心情如公园里的湖面一样波澜不兴。
倒是京杭大运河博物馆有让人眼前一亮的感觉, 那里的展馆繁多, 各有不同的风景。 其中一座仿宋代风格的展馆尤为引人入胜,通过精心还原的街景和细节,让人仿佛穿越时空,置身于宋朝的繁华街市,真切感受到当时的人文风貌与市井气息。
人是否真能穿越时间,去改变过去的一些事情呢?
6 展望
对于2025来说,希望能利用AI成为超级个体,做一些有很多人用的应用。
已经有了很多想法,对于其中几个也做了POC验证。
期望自己能尽快财务自由吧。
7 后记
我常想, 时间的意义是什么?
是昼夜交替吗?但那是地球绕太阳转动所产生的自然现象。
是一种感觉吗?我们无时无刻不在感受着时间的流逝。
是物质运动的过程吗? 可能吧。
但无论时间的本质如何,我们生活在其中,都不得不直面它的流逝。
每个人活着, 都会有自己的使命和责任,有需要守护的人。但有时, 使命未竟,心却已到极限。
时间的意义,又是否能为这样的时刻找到答案?