近期上线了一个新的项目,从前期的需求评审到项目整体设计,最后上线,历时了快一个月的时间。虽然是个小项目,但是由自己从头开始跟的项目。 这个项目让自己学到了很多,同时也发现了自己很多的不足,写篇文章总结下项目从的0到1的过程以及这段时间的一些感悟
技术选型
先说下项目的组成结构,web项目,由前端+后台+服务端组成,技术栈为:前端采用vue,后台使用react,服务端使用node,数据库使用mysql,缓存使用redis,这个技术栈整体看来,还是比较符合潮流的。
关于技术选型,若是小组没有技术栈的沉淀,都是新的起点,那么选型的时候就得考虑很多方面,如小组上手的速度、开发的成本、选型是否利于以后扩展、运维成本等
开发阶段
开发阶段细分为以下几个小阶段:业务逻辑梳理、模块设计、开发任务划分与分配
业务逻辑梳理
项目经过多轮的产品评审敲定后,就可以开始进入到设计阶段了,这里的设计不仅仅是简单的项目代码层面的设计,还包括用例图、时序图、表结构、与内部服务沟通配合等设计,这几部分的设计的好坏是决定了整个项目的业务合理性、可靠性、扩展性,这部分产出可以体现程序员是一个老司机,还是一个小白
数据库设计
数据库是系统的基石,数据库设计应建立在对业务的深度理解上,设计的时候对业务的理解不能仅限于产品或技术的思维,而是要两者兼备,这样设计的表结构才能更合理、更利于业务扩展
画图
用例图,顾名思义,体现系统功能的模型图,用例图是画图的第一步,只有知道系统需要实现哪些功能、系统的边界,才能往下进展;
时序图也叫泳道图,显示对象间的调用交互图,对象可以是模块、服务等,将各个模块的调用顺序和业务流转清晰的画出来,因为系统会随着业务的发展不断的迭代,若是没有个文档将业务流转给记录下来,对后续接手的开发,那就是个大坑,周而复始不断累积业务,这个项目离重构就不远了;
还有流程图等,就不一一说了
任务拆解
接下来到任务的拆解与分配,毕竟项目不一个人单打独斗就能完成的,得由团队的一起推动。这个项目前后端都是由前端小组来开发,js通吃前后端,所以任务的拆解按模块来拆解,比如登录模块,前端的交互和后端的服务均有一个人来负责,这样的分解,好处就是,免去了前后端联调的这一沟通流程,让大家的沟通成本大大降低,开发时效也提高了,但有个小前提,就是大家的编码水平都要能满足前后端的开发要求,毕竟大部分前端开发在服务端领域还是有所欠缺的。
制定好开发规范,优秀的项目,必然有一套完整成熟的规范,大部分公司内部都有自己的开发规范,同时借助主流的工具,可以为我们规范项目编码
还有就是代码review,我们使用git作为版本管理,团队的提交都会先经过review才能merge到主干,pull request(简称PR)是不必不可少的环节,因一些沟通理解、编码粗心等,导致提交的代码存在问题,所以在review的环节,就可以提交前发现,将其扼杀在摇篮中。
测试阶段
交叉测试
交叉测试,在正式提交测试前需要预留两天左右进行交叉测试,即A开发的功能,由B来测试,因为开发自测往往会陷入逻辑黑洞,考虑场景不全、异常处理不够等问,交叉测试,开发化身测试,提早将问题给发掘出来,同时也可以让大家对整个项目逻辑了解的更加清晰
测试组测试
测试阶段,因为采用的是瀑布流的开发方式,先开发,在计划期限完成后,在移交给测试,测试遇到的bug,反映了开发的水准,因为开发阶段有code review,所以测试的出来的项目质量,也体现了项目负责人的态度和水准。
项目往往会涉及到多个内部服务的调用,经常服务间出现些小问题,这次开发间就会拿出甩锅大法,互相推诿,都不愿意去找原因,若一直没人去跟进解决,轻会影响项目上线计划,严重会给生产留下隐患。这个问题,归结还是在与开发成员的工作态度,这个跟团队宣导和建设有关啦,就不展开了。若出现甩锅未能解决的问题,就需要项目负责人及时跟进处理。
上线前的准备
测试完成后,下一步就是按计划上线,此时,需要与运维小伙伴进行充分的沟通,申请线上资源、线上参数准备、性能监控、报警监控等
复盘
复盘的作用在于回归整个开发历程,遇到了哪些问题、如何解决、哪些未能解决等等看似零碎的部分,将这些部分汇总起来,汇总的过程看似对项目,但实际上是在对自己进行审视,哪些让自己成长了,哪些还有很大的不足、及自己没做好的原因等,开发路漫漫,抬头看看天才能知道自己的位置~
感悟
文章写得有点流水账了,在每个点上,自己懂得还很肤浅。 记录下自己最近的一些心得吧
-
市场上大部分的程序员职位都是开发工程师,开发工程师的定位应该是:以完成功能需求为主,基本上是围绕着产品经理提出的需求文档转,很多人就吐槽,一直在做功能,没有提升的空间,但我不这么认为,在我们不能改变自己开发工程师的职位时,要做的应当是少点抱怨,多自我挖掘,在完美实现功能的同时,深挖其中的技术点,况且能做到写出来的功能健壮,就足够考验人了,其理解能力、逻辑能力绝对不是一般的水准
-
切忌浮躁,敬畏技术,不要会用一个技术了,就认为自己能掌握了,多会几个技术点,便说自己遇到瓶颈了。沉淀下来,好好啃一啃,比跟风、自我焦虑强的多。知其然,而知其所以然
-
一家公司的开发任务,伴随着在职时间越长,便越会顺手,老油条和晋升达人也在悄悄的拉开差距,要及时走出自己的舒适区,多去承担难点,让自己在工作上
难过
,未来才能好过
-
那就先简单做
这句话在开发间经常听到,既然都确定去做了,那为什要简单做呢?;写业务时,遇到难点,哎,就就这么写吧,反正也没问题
;以上现象,说到底,一句话:懒于思考,安于现状。多思考,注重细节、端正态度,做一个不将就的coder -
持续学习,有句话说的好:淘汰你的不是你的同龄人,也不是这个社会,而是你自己在原地踏步。互联网的更新速度令人咂舌,令人焦虑啊,一群人整体喊着跟不上了啊,学不动了啊,可是马拉松是没有暂停的,咬紧牙,少去瞎比比,学习是枯燥的,但要知道它才是给你带来红利的基础,是你跑下去的资本