引语:相信不少人都自认为本身是个全栈工程师,无论有没有验证过,我也不例外。心中总有一种傲气,事情都能作,只是作得好很差,时间够不够的问题!因此,对不少事情,我实际上是一点不怕的,随着时间的推移,人老是应该要进步的,去作一些没作过的事,才对得起成长二字!
恰好上上个月,公司有一个新的项目需求,须要作一个全新的系统,可是看起来也不难,因此任务就交给了我。我能够说我是这个项目负责人吗?应该是能够的!可是,最开始就已经存在了一些坑,等着我去跳,好比过需求的时候,我却不在场!整体算下来,流程是这样的:linux
1、过什么项目需求?
需求确定是要过的。
1. 要作什么?
2. 哪些能作,大概要多久能够作好?
3. 哪些不能作,为何不能作,替代方案是什么?
4. 功能的必要性,哪些功能是必须的,哪些是可选的,哪些是多余的,之后的方向是什么?
整理过需求后,大概就知道整个项目是什么样的了。redis
2、写什么计划文档?
因为是公司内部使用的平台项目,说什么不须要美观之类的,所有的基础就只有一些抽象的原型图,其余的所有工做就交给开发人员(最开始就只有我本人,后来加入了一位多年开发经验的大师兄),所以在我计划里写了,静态页面模板编写:3天。
由于只有我本人干,因此,在写项目计划文档的时候,我只管按照个人我的意愿,就把时间给评估上去了(这最后被证实是本身给本身挖了大坑),各类功能,我几乎都以1天2天或0.5天来算,功能点也是写得比较抽象。由于毕竟,计划这东西,就是一拍脑门想出来的事。
最后,把计划发给领导时,领导说,开发时间太长,能不能再短一点(我当时几乎是崩溃的,由于我已经尽可能把时间压缩了)。其实我也理解,领导的意思是尽快完成。
基本上全部的计划都会被必定程度上的延后,因此,领导让你早一点的意思,其实基本上也是让你按照这上面的时间来完成。
计划就是你作事的证据,不可大意了!数据库
3、划分什么模块?
这一块严格来讲,不少项目基本算不得是一个流程的,至少我这个项目算不得,由于,其实就几个字就描述清楚,扯那么多干吗呢,哈哈哈。。。bootstrap
4、设计什么数据库?
这个是很是重要的环节,若是把这一块作好了,会给之后的工做减轻很多压力,若是没作好,后面将致使各类问题,尤为在不是你一个在作事的时候,又会增长许多的沟通成本!
设计的基本原则就是,看须要些什么信息,有哪些信息是公用的,会在哪里产生其余效果,详细参照需求文档,适当考虑扩展性!
这个环节,必定要让领导过一下的,他知道的比我多,考虑的点和我也不同,关键是,最后出事了,也算是内心有个底,毕竟领导本身看过了!
然而,很奇葩的是,对于这个重要的环节,我几乎只花了不到一天的时间就完成了!windows
5、搭建什么框架?
因为公司不让使用外面的框架,并且其余项目的代码,目录结构混乱,因此决定使用内部框架,进行构建系统。可是,内部框架还明显不成熟,就连一个像样的帮助文档都没有,惟一的一个帮助文档是框架目录中的一个readme.md,使用了极为简单的文字描述了功能。
不过,最终,我仍是看懂了他的框架,并顺利使用到项目中,固然,继承框架的一些东西,改掉很差的以适应项目或者我的习惯,这是必需要作的工做。并将须要使用的插件,目录,扩展都给弄好!这样之后,只要往既定的目录下写本身的代码,修改便可,相对来讲,结构仍是很清晰的!
把前几天写好的静态页面嵌入代码中,这样,整个项目就算有了真正的样子了!
把最基本的验证一类的工做作在这里,能够不实现具体功能,可是位置必定要预留!
使用到的东西有:内部PHP框架、bootstrap、Jquery、Jquery.form.js、My97Date、validform、layer、cron、Redis、微信接口、内部通讯接口...服务器
6、写什么主要功能?
根据业务需求,首先把主要的功能给实现了,让页面动起来。其实,大部分的需求,都只须要经过增删改查,就能够完成效果,可是复杂的逻辑,仍是须要仔细屡屡的。
主要功能实现后,还须要其余各类基础数据辅助,把这些环节给作出来。
在这期间,遇到了一些有难度的问题,发现时间不够用,领导也发现了,偶尔会来催一下项目进度,最后,让那位大师兄加入其中,辅助完成任务。若是没有他的加入,我想,这个项目真的要延后不少了(尽管他加入后,也有必定程度的延后,因此,领导毕竟是领导,他才是掌舵人)。
前面写的计划,其实在这个时候是不太起做用的,由于以前不少功能点都没有评估到,在这时候加进来,只有本身默默加班遇上,说多了,就是无能!微信
7、作什么脚本辅助(消息处理)?
需求中,须要服务器中进行处理一些工做,完成后通知到数据库及相关人员,因此,须要写相应的脚本去作这些工做,主要为配全redis进行队列接收,另外一个定时脚本隔几分钟执行一次,按期处理消息队列的东西。这个工做在我本地来讲,相对是不容易操做的,由于须要模拟服务器处理的工做,完了以后再进行通知,再进行定时脚本执行,若是我是在linux环境下进行开发,那这也是ok的,然而我是在windows下开发...
把这一步作完之后,基本上大的东西就算作完了,这里要注意的就是并发和锁的问题,你能不能容许同时执行多个实例,得考虑清楚。并发
8、页面优化,项目部署
把主要功能实现之后,能够好好再去调一下页面了,固然,几乎全部的工做都是在以前作的,可是这个时候,最好仍是要有这么个过程,算是检查一下也是能够的!链接到测试服务器,进行本身测试的阶段,服务器也已经部署完成!框架
9、转接测试,迅速更改
项目进度没有及时到位,可是,我仍是将工做推动到下一步了,转接给测试人员。固然,有幸我遇到一个好测试,他绝对算得上半个开发了,没有他的监督,这个项目怎么敢上线,一方面,测试在测试功能,另外一方面,咱们加班加点,把问题解决,这个时候的工做推动仍是挺不错的,只是,本身的bug列表里面,添加了许多的记录,多得你都不敢想!
但无论过程如何,最后的荣耀始终是有的,在上线的那一刻,全部的bug都不是问题了,哈哈哈。。。测试
10、产品介入测试
测试经过以后,产品才算是正式介入到检验中来,虽然我的以为这怎么也有一种,事不关已高高挂起的感受,可是事情也就这样吧。再一次有人介入,项目又再一次进入快速更改状态,可是都已经不那么多事了,改起来也很是快。进度快速推动!
11、线上删档测试
删档测试,这TM谁想出来的,所谓的线上测试,不过是对本身产品的不信任,咱们再一次在线干起了测试的工做。可是,至少能够能够向上上面的领导交差了吧!
12、正式上线
终于,上面催得急了,赶忙上线,上线,上线。终于能够回家睡大觉了,那一晚,真的睡得很爽。。。
十3、补设计文档
忙着开发的事,一直没时间写文档,作完以后,把这东西补上,不然,新来的人怎么看??
十4、监控措施
没有监控措施的系统,是不信任的,出了问题你都不知道,这可不是一个有经验的人干的事,不过晚点补也是能够的,毕竟这东西也有一个完善的过程!
十5、后续功能
本觉得把东西作到这里,就算差很少了,可是,明显后续工做还有不少,好比功能增长(干),好比数据压力变大(分表分库集群),好比与其余系统的对接(接口),我拭目以待。。。
本项目其实算一个小项目,可是,从最开始的一无全部,到最后系统造成,几乎全部地方都介入,这个我不知道算不算全栈的表现,至少也算是以前没有的体验吧。之前都是跟着大牛们作事情或者拿现有的系统进行更改,不少基础的东西,都不用你来作,若是一直这样,我想,经历不能算是完整的!
随着时间的推移,故事还在继续,用时间经验填写的故事,才够真实,至少对于本身来讲,是这样的!