我是如何开发一个项目的
这些年做了很多项目,我从一个菜鸟开发不断成长,自己积累了一些方法,今天我就来和大家分享下我的项目开发心得。
什么是一个好项目
我认为一个好项目,要做到如下几点:
- 要有好的传承性;
- 总体架构合理,分层清晰;
- 实现上能合理贯彻设计目标,选型恰当,代码清晰易懂;
- 部署合理,监控完备,数据统计恰当。
下面我就来逐一说明下:
好的传承性
我把这一条放在第一位,因为我认为项目的传承性做的好,比任何东西都更加重要。
因为一个项目,通常需要很多人来共同完成,而且随着时间推移,会有老同学离开项目,新同学加入项目,甚至项目负责人也会更替。
我们通常在接手一个项目时,很多时候都有重构一版的需求,为什么?我总结大致如下:
- 项目现状混乱,文档很少,不了解设计;
- 代码有坑,不敢轻易修改;
- 开发模式混乱,都找不到最新代码;
- 没人知道里面的功能还有多少在用。
这些问题十分常见,我接手过的项目,也有上面这种情况的。不知道大家遇到这种情况是什么感觉,是不是很难受?重构吧,都不知道都有哪些功能,风险十分的大;继续维护吧,觉得越做坑越多。
也就因为这样,很多项目最终被抛弃,以失败告终。所以项目能否被传承,好的文档十分的重要,虽然会花很多时间,但如果你想让你的项目活的长,这一点非常的重要!
至于如何做好文档,我们向开源项目学习即可。我甚至觉得就算代码写的不好,但是文档写的好些,让别人明白你到底在干啥,都十分不错。
其实说白了,做好这件事情,更多的是为了别人能更好的理解你的项目,对自己来说,也能培养个好的习惯。
好的设计
好的设计,就好比一份好的作战计划,如果这个没有做好,那在执行的时候就会十分的混乱,问题层出不穷。
要做到这一点十分的不易,通常在评价一个人的技术能力时,级别越高也越看中这一点。因为我的能力有限,在这里我说下自己的体会,还望大家指正:
- 要养成勤于思考的好习惯,平时多积累, 俗话说,好记性不如烂笔头,所以多记录总没有坏处。;
- 遇事多问为什么,且得出答案时,建议再对这个答案问为什么,寻找更深层次的原因,这样不停的折磨自己,直至满意;
- 能够虚心向别人请教,也不要轻视别人对你的提问,你自己没什么了不起的;
- 做事情要专注,现在那么多新东西,找准自己的方向,理解的越深,对自己做出好的设计抉择越有帮助;
- 不断反思,永远不要满足,看如何能做到更好。
做设计的时候,通常就是在做各种抉择。比如webserver使用Apache还是Nginx;数据库使用Mysql还是MongoDB等等,只有自己对知识的理解越深,实践越丰富,才能做的越好!
好的实现
这个步骤就好比在打仗时,你如何完美的执行作战计划,我觉得需要做好如下这些事:
- 分工明确,接口合理;
- 要有很强的执行力;
- 和项目内成员保持良好沟通,敏捷开发是个好的选择;
- 项目的成败,很多还要依赖外部的合作,所以不要怕麻烦,维护好的合作关系这一点至关重要;
- 代码清晰,避免过于复杂,如果你觉得这一块逻辑有点复杂,那你应该考虑分层简化;
- log要详细,出问题时能做到快速排查。
借小说《亮剑》中,一个原来的国民党作战厅高级将领的一句话:在解放战争期间,国军的战术,都是天才制定的,但确是由蠢才执行的。
所以,好的实现非常重要,这一点做不好,再好的设计也是白搭。
部署监控及统计
- 先说部署,要做好如下几件事:
- 机房选择合理;
- 部署方法简单易用;
- 线上控制简单易用;
- 代码更新上线简单易用;
- 灾备实施简单。
- 接下来是监控方面:
- 核心服务监控点考虑周全;
- 监控服务可靠;
- 易于配置升级。
- 最后说下统计:
产品的发展,离不开数据,通过数据分析来知道产品的发展,好过于拍脑袋做出的决定。
想要有个好的统计,至少也要有下面这些:
- 可靠的日志收集;
- 易于扩展的日志分析;
- 良好的界面展示。
结束语
上面这些,说实话,真是说起来容易做起来难啊!但也正因为这样,我们才需要不断努力,不停的锻炼提高自己。正所谓是活到老、学到老。
Fighting! Fighting! Fighting!