前段时间在团队内部做了一个个人成长方面的分享,算是我自己工作 8 年来的经验分享。主要关于前端工程师的一些方向介绍以及对现有前端技术的总结和预判。

这些经验也是我写后端服务一年多以来的想法,在这之前,总觉得技术成长逐渐停滞,没有什么方向,于是努力破局,横向扩展技术方向,最终还是有些许收货。

主要分为战略设计和战术执行两个方面来展开。

# 战略设计

# 指导思想

在整个工作的生命周期中,一定需要一个思想来指导工作。它关乎我们对个人未来的预判与执行。我的指导思想就是:抓住工作中的矛盾中心,分清主要矛盾和次要矛盾,allin 主要矛盾

  • 比如「需求交付质量」和「学习新的时髦技术」这两点,如果工作中的「需求交付质量」不尽如人意,那首要目标就是要拿下这个问题,其次再谈学习的事情。那围绕这个目标,工作中的任何事情都需要为之服务,如果做某一件事不能提高「需求交付质量」,那对现阶段的自己意义不大,可调低优先级,遇到不可抗力则灵活应对。
  • 当然这条指导思想不单单适用于工作中,生活也是如此,最终目的是达到一个工作和生活的平衡。

# 个人发展方向

  • 首先我们不能对自己设限。对自己的定义不局限于前端,而是开发者、工程师,任何技术,只要能解决问题的技术就是好的技术,这是我们应该学习的。
  • 夯实不变的内容(计算机基础、数据结构、算法、开发语言),会用变化的内容(各种框架、类库)。现在的前端社区特别卷,各种 UI 框架以及状态管理工具层出不穷,让人眼花缭乱。网上学累了的声音也络绎不绝,其实根本没必要出来一个看似受关注度很高的框架就去学,因为你永远不知道留下来的那个是谁。会用,必要的时候懂原理就行。没必要卷这些玩意儿,不值当。
  • 横向:跳脱出前端这个框框,横向发展
    • 服务端
      • nodejs/java/python,掌握多种语言,设计模式手到擒来
      • 熟悉软件开发整体流程,更好的把握系统架构,也能快速找到问题根源
      • 技术广阔,视野庞大,拥有持续学习动力
    • 鸿蒙/iOS/安卓
      • 端技术
    • 业务理解
      • 比如 AIGC,对这类新兴业务或技术深度理解
      • 做业务对接人,技术把控者
  • 纵向:找准某个方向深耕
    • 工程化
    • 3D 动效
    • webRTC/视频/音频:短视频/直播需求旺盛
    • WSAM:大型 web 软件高性能开发必备技能
    • 多端:Taro/Flutter/RN
  • 如果实在找不到方向,那做好当下的事情就是方向。

# 个人 IP

  • 影响力建设
    • blog/github/技术布道
    • 技术/业务终结者
    • 靠谱(在能力和态度上做到靠谱,至少做到一个)

# 向上管理

  • 要保持和领导必要的沟通,让领导知道你工作中遇到的问题和困难,以及对项目和团队的意见和建议。
  • 反馈:做到凡事有交代,件件有着落,事事有回音。
  • 画饼:适当给领导画饼,可以让领导对你更加有期待,建议 90% 目标 + 10% 挑战。

# 战术执行

# 深度理解业务

  • 3W1H:一件事情为什么(Why)要做?用户(Who)是谁?要做的是什么(What)?怎么做(How)?一件事情被想清楚了就完成了一半。
  • 保持对业务的前瞻性,在做开发设计时提前预留空间。
  • 与产品经理充分沟通,在开始开发前读懂业务背景/细节/产品方案/业务流程。
  • 与后端开发充分沟通,哪些事情给后端做,哪些前端做需要梳理清楚,原则是合理。

# 开发设计

  • 开发之前,想清楚(清晰的架构设计)再动手
    • 代码结构(常量、工具类、业务组件、页面组件、基础组件、状态管理、数据处理、类型文件等)
    • 组件设计,拆得越细越好,每个组件代码最好不超过 150 行
    • 状态管理:状态/数据/视图做好分离,组件代码太多一般是没有将这些工作抽离,导致💩山代码
    • 开发哲学:能一行代码实现的绝不两行,越简单越好(除了一些规定的代码风格
  • 画图/文档:尽量不放在大脑内存里,https://xmind.ai/
    • 对照业务逻辑文档/脑图进行开发,思路清晰且高效
    • 先写文档再开发,可以沉淀非常多的开发经验

# 开发效率

  • 搜索引擎,google/stackoverflow/chatGPT
  • 灵活使用快捷键,无鼠标开发
  • 开发工具

# 开发总结

  • code review,反复看复杂部分的代码,思考简化办法。
  • code snapshot,将自己经常用的代码/写的好的代码/很少用但每次用必查的代码,存起来。
  • 沉淀不熟悉的知识点。
  • 沉淀通用化的开发工具(框架/类库等)。