如何设计与管理一个前端项目
更新日期:
如果说基础知识的掌握是起跑线,那么使大家之间拉开差距的更多是前端项目开发经验和技能。对于一个项目来说,从框架选型和搭建,到项目维护、工程化和自动化、多人协作等各个方面,都需要我们在参与项目中不断地思考和改进,积累经验。
本文将要介绍:
- 前端项目设计
- 前端项目管理
前端项目设计
除了具体的前端领域知识以外,当我们开始负责起整个前端项目的管理时,需要具备一些方案选型、架构设计、项目瓶颈识别并解决等能力。
前端项目搭建
很多时候,我们的项目在刚搭建的时候规模会比较小,因此在项目启动阶段需要做简化,来保证项目能快速地上线。但从长期来看,一个项目还需要考虑到拓展性。换句话说,当项目开始变得较难维护的时候,我们就要进行一些架构或者流程上的调整。
在项目开始之前,我们需要做一系列的规划,像项目的定位(to B/C)、大小,像框架和工具的选型、项目和团队规范等,包括:
- 前端框架选择:基于团队成员偏好和能力,选择适合的前端框架
- 工具库选择:基于项目规模,选择是否需要路由管理、状态管理等工具库
- 自动化工具:基于成员规模和项目状态(快速上线、稳定维护等),选择是否需要代码构建、自动化测试等自动化工具,以及搭建持续集成、持续部署等自动化流程
- 项目流程规范:使用一致的项目规范,包括项目代码结构、代码规范、开发流程规范、多人协作规范等内容
项目的维护永远是程序员的大头,多是“前人种树,后人乘凉”。但是很多时候,大家会为了一时的方便,对代码规范比较随意,就导致了我们经常看到有人讨论“继承来的代码”。
代码规范其实是团队合作中最重要的地方,使用一致的代码规范,会大大减少协作的时候被戳到的痛点。好的写码习惯很重要,包括友好的变量命名、适当的注释等,都会对代码的可读性有很大的提升。但是习惯是每个人都不一样,所以在此之上,我们需要有这样统一的代码规范。
一些工具可以很好地协助我们,像 Eslint 这样的工具,加上代码的打包工具、CI/CD 等流程的协助,可以把一些规范强行标准化,达到代码的统一性。还有像 prettier 这样的工具,可以自动在打包的时候帮我们进行代码规范的优化。
除了这些简单的命名规范、全等、单引双引等代码相关的规范,还有流程规范也一样重要。比如对代码进行 code review,尤其在改动公共库或是公共组件的时候。
最重要的还是多沟通。沟通是一个团队里必不可少、又很容易出问题的地方,我们要学会沟通和表达自己。
洞察项目瓶颈
我们常常会觉得自己做的项目没有什么意思,每天都是重复的工作、繁琐的业务逻辑、糟糕的历史遗留代码,反观其他人都在做有技术、有难度、有挑战性的工作,越会难以喜欢上自己负责的工作。
实际上,那些会让我们觉得枯燥、反复、杂乱的工作内容,更是可以去改善做好、并能从中获得成长的地方。涉及前端工作的业务,只有极少一部分的业务例如涉及多人协同的在线文档、或是用户量很大的业务如电商、直播、游戏等,这些业务重心可能会稍微倾向前端,更多时候前端真的会处于编写页面、最多就用 Node.js 写写接入层等状况。好的业务可遇不可求,我们在遇到这些业务之前,就什么都不做了吗?
大多数工作中,对开发的要求都不仅限于实现功能。如果只是编写代码,刚毕业的应届生花几周时间也一样能做到,那么我们的优势在哪里呢?洞察工作中的瓶颈,并有足够的能力去设计方案、排期开发、解决并复盘,这些技能更能突显我们在岗位上的价值和能力。对团队来说,更需要这样能主动发现并解决问题的成员,而不是安排什么就只做什么的螺丝钉。
一般来说,用户量较大的项目的瓶颈通常会在兼容性、性能优化这些方面;对于一次性的活动页面,挑战点存在于如何高效地完成一次活动页面的开发或者配置,通常会使用配置系统、结合拖拽以及所见即所得等方式来生成页面;对于经常开发各式各样的管理端系统,优化方向则在于怎么通过脚手架快速地生成需要的项目代码、如何快速地发布上线等。我们要做的,就是找到工作中让自己觉得烦躁和不爽的地方,然后去改进优化它们。
方案调研与选型对比
找到项目的痛点或是瓶颈后,就需要设计相应的方案去解决它们。而当我们需要投入人力和时间成本去做一件事,就需要面临一个问题:如何让团队认同这件事情、并愿意给到资源让我们去完成它?
可以通过前期的调研,找一些业界相对成熟的方案作为参考。如果有多套方案,则需要对这些方案进行分析比较。例如,小明最近需要针对项目进行自动化性能测试能力的支持,因为项目规模大、模块多、参与开发的成员也有几十人,经常因为一些不同模块的变更导致项目的性能下降却没法及时发现问题,往往是等到用户反馈或是某次开发、产品或者测试发现的时候才得知。
前端项目管理
不同于做工具和框架、参与开源协同,很多时候我们写的都是业务代码。我们总认为只有做工具才会比较有意思、也有技术挑战,但是业务代码就没有可以提升技术、挑战自己的地方了吗?其实并不是,很多时候我们先入为主、认为业务代码写得再好也没用、自己放弃了去做这样的事情。多多思考,你会发现每个项目都可以大有可为,你的未来也可以大不一样。
合理的分工排期
很多开发在进行编码实现功能的时候,都直接想到哪写到哪,也常常会出现代码写到一半发现写不下去,结果导致重新调整实现,最终项目从预期的一周变成了一个月、迟迟上线不了的问题。
当我们确认好技术方案之后,可以针对实现细节拆分具体的功能模块,分别进行工作量的预估和分工排期。这一步骤在多人协作的时候是必不可少的,否则可能面临分工不明确、接口未对齐就匆忙开工、最终因为各种问题而返工这些问题。而对单人项目来说,也可以通过拆解功能模块这个过程来思考具体的实现方式,也能提前发现一些可能存在的问题,并相应地进行规避。
提供完整的工作量评估和时间表,我们可以比较有计划地进行开发,同时团队的其他人也可以了解我们的工作情况,有时候大家能给到一些建议,也能避免对方不了解我们到底在做什么而导致的一些误会。而排期预估的另外一个重要作用,则是通过时间线去严格约束我们的工作效率、及时发现问题,以及项目结束后可针对时间维度进行项目复盘。
风险把控
前面有说到,我们需要在参与项目的过程中具备 Owner 意识,即使这个项目并不是我们主导。风险把控则是作为 Owner 必须掌握的一个能力,我们需要确保项目能按照预期进行,则需要主动发现其中可能存在的风险并提前解决。
除了因为方案设计考虑不周而导致的一些返工风险,我们在项目进行过程中常常也会遇到依赖资源无法及时给到、依赖方因为种种原因无法按时支援、团队协作出现矛盾等各种问题,任何一块出现问题都可能导致整体的工期出现延误,这是我们不想出现的结果。因此,我们需要主动把控各个环节的情况,及时推动和解决出现的一些多方协作的问题。
通过前期准备的这些方案和工具,提前控制好一些可预见的风险,开发过程会更加顺利。但是如果我们的效果只有这些的话,很多时候是无法证明自己做了这么多事情的价值。那么,我们可以尝试用数据说话。
及时反馈与复盘
很多开发习惯了当代码开发完成、发布上线之后就结束了这个项目,其实他们遗漏了一个很重要的环节:复盘。通过复盘这种方式,我们可以发现自身的一些问题并改进,还可以让团队其他人以及管理者知道我们做了些什么,这是很重要的。
复盘的总结内容,可以通过邮件的方式发送给团队以及合作方,同时还可以作为自身的经验沉淀,后续更多项目中可以进行参考。如果使用得当,我们还可以通过这种方式来影响我们的团队和管理者,也是向上管理的一种方法。
但其实不只是工作中,我们生活里也可以常常进行反思和总结,这样我们的步伐才可以越跑越快。成长的过程中总会遇到各式各样的问题,有些问题被我们忽视而过,有些问题我们选择了逃避,但其实我们还可以通过迎面应战、解决并反思的方式,在这样一次次战斗中快速地成长。
结束语
每一个程序员都希望自己成为一个优秀的开发,实际上每个人对优秀的定义都不大一样。作为前端开发,除了专业能力以外,工作中还需要良好的表达与沟通能力。
如果我们还想继续往上走,通用计算机能力、架构能力、项目管理等能力也都需要提升。
码生艰难,写文不易,给我家猪囤点猫粮了喵~
查看Github有更多内容噢:https://github.com/godbasin
更欢迎来被删的前端游乐场边撸猫边学前端噢
如果你想要关注日常生活中的我,欢迎关注“牧羊的猪”公众号噢