经验分享-20天轻松搞定一个6000的小项目

979 阅读11分钟

经过20天的沟通与开发,在云沃客上接的第一个项目终于成功交付了。目前产品运行良好,与客户的远程合作还算顺利,进度把握的也很好,算是比较成功的一次接包经历。现在给大家把从平台接包、开发、沟通、测试部署到最终的项目交付过程分享出来,供大家参考,如有需要改进的地方,也欢迎大家指正。

接包

以前做的项目都是通过熟人介绍或者自己跑的,偶尔在线接一些小的项目,但是没怎么用过类似这种自由开发平台或者众包平台,有次在网上找项目的过程中,偶然间发现了云沃客,上边项目不少,观察了几天发现项目更新的也挺快,当即决定在上面试一试。翻了一会终于找到一个适合自己的了,是实现一个小游戏的后台管理系统,其中附带了一个功能模块描述文档,看过之后感觉工作量适中,前台页面,后台服务以及数据库的设计一个人就能搞定,难度不大,6000元20天感觉还行,果断就投标了。

投标的时候要根据自己的心理价以及发包方的预算定一个项目报价,不恶意压价也不天马行空,再选择一个合适的工期,然后在留言中写了一些自己的相关技能,以及提供一些我之前参与过的与标的类似的项目案例,网址或者下载链接,供客户参考从而提高自己的中标率。

投完后就可以静待对方的回复了,建议安装官方的云沃客APP,如果客户打算和你进一步详谈,通过APP能及时收到消息。这时的沟通主要是一个相互了解和熟悉的过程,为以后的合作打好基础,要让客户放心把项目交给你,估计是人品爆发,谈了一会客户就决定让我做了。接下来就是针对当前的需求进行一下简单的梳理,做到心中有数,如果有比较大的坑或者一些明显的问题及时提出来,以免做的过程中又扯皮。最后就是对项目价格和工期进行再次确认,一次确定好或者根据最后的项目交付情况灵活处理,具体情况具体分析。待这些准备工作做好后就可以开工了。

技术

我接的这个项目因为是一个后台管理系统,因此客户对于UI设计没有严格规定,只要不难看满足功能要求就行,这个省了不少事,本人自认为开发还行,设计完全是个二把刀,不过审美能力和需求把握能力还行,知道客户想要个什么样子的系统。因为工期短,要快速出东西,同时客户对于技术这块也没有要求,经过短暂的思考后就确定好了技术方案。

  • 前端:Vue+ElementUI
  • 后端:nodejs+thinkjs
  • 数据库:mysql

这样搭配有个好处就是前后端开发效率都很高,并且能同时进行,打包部署也很方便。前端的ElementUI就是为后台管理而生,丰富的界面组件和优雅的主题几乎能满足所有需要,同时有强大的社区支持,这样妈妈再也不用担心我掉进坑里而不能自拔了。此项神器再配以天生高效并且功能强大的Vue,简直了都。因为项目本身并不大,因此后端选用轻量级的node服务就够用了,再搭配thinkjs这种经过业界考验的MVC框架写起API来简直是得心应手。没用express或者koa这种轻量级框架完全出于个人喜好,就是懒得找插件。

话说开源社区真的是一个好东西,虽然以上这些框架都有脚手架支持,能快速搭建项目,但是你能在开源社区里找到更棒的,并且更省时省力的干货,不管是GitHub还是OSChina都能发掘些能拿来直接用的代码或者源码,很是方便,这次就帮我不少忙。

项目管理

之前做项目时用的比较多的项目管理工具是teambition,很好用,不管是人员管理还是任务分配都很便捷,但是自从部分功能收费后就不怎么用了。现在几乎所有项目都用tower来进行管理和跟踪,小巧而灵活,因此这个项目我也选择了tower,不过听说云沃客也在开发自己的项目管理工具,而且马上就要上线了,到时可以尝试一下。在tower上建好项目后把客户也加进来,让客户可以在以后的开发过程中能清楚当前的项目进度以及遗留的问题。明确哪些是待处理的功能,哪些是进行中的功能以及哪些是已完成的功能,这样持续性的分阶段测试和交付更能保证项目进度和质量。

首先在tower上创建好项目后,根据项目的功能需求分阶段创建任务,每个阶段的任务应该有优先级之分,最关键的永远在最前面。一开始的时候,任务粒度可以稍微大一些,在后续的沟通和开发过程中可以慢慢调整和细化,任务处理和更新要及时,做到每日一更,遇到问题做好备注和记录,方便稍后处理,这样在体现自己工作量的同时也能让客户心理有底。同时在tower上,可以让客户在系统的测试过程中提交bug,早发现早处理,尽量做到,一次过去,寸草不生。

时间管理

我不是完全的自由开发者,还有自己的工作,因此如何平衡本职工作和这个兼职工作的时间也是比较关键的,如果处理不好,就很容易翻车,两头不讨好。还好,在这之前,公司的一个项目成功上线,现在只是进行bug修复和功能上的维护,处于一个平稳期,因此每天可以保证一定时间的开发工作。

每天一到公司,先把本职工作中的紧急事情处理完,这样白天就不会有人打扰了,剩下的时间就可以完全投入外包项目的开发,那段时间,白天上班期间可以投入3个小时,晚上回去根据情况再做2个小时,如果白天时间被挤压的不够,那就相应的延长晚上的工作时间,尽量做到互不干扰。总而言之,每天时间就那么多,所以提高工作效率才是王道。

沟通

由于是远程开发,因此少不了频繁的线上沟通,有效且及时的沟通是项目成功的第一步。白天在公司接电话和语音都不方便,因此主要通过微信来进行交流讨论,虽然配有tower神器,毕竟不是很及时,因此很多时候就让客户直接在微信里贴图,我也能及时分析和回复。白天通过文字沟通毕竟不方便,有些问题描述不清楚,因此每天晚上就和客户约好时间通过语音沟通,总结项目问题,讨论项目进度。

沟通的时间成本是很高的,尤其在需求讨论阶段,但是这个阶段也是很关键的,如果理解不到位,就很容易在后期的开发过程中跑偏。这个项目客户只提供了一个excel表格,将各个功能需求大致描述了一下,没有设计图也没有流程图,因为要做WBS,一开始我跟客户通过微信逐个功能的讨论细化,发现不但效率低而且很容易造成理解上的不一致。后来,就用了另一个神器—百度脑图,将我细化的功能点画了一个思维导图,然后教客户怎么用,让他根据他想要的在上边改,这样反复几次需求立马成型了,然后在根据这个图把任务加到tower上,大大缓解了远程沟通的不便以及提高了沟通效率。以后如果有问题可以先迭代思维导图,然后更新任务,做到需求上全面跟踪,这样对自己是一个保障,也能很好的婉拒客户要求的改改改。

开发

前期工作准备充足后就可以安安稳稳写代码了,还是这个最在行。由于项目不是很大,因此我就把前后端放到一个工程下,这样开发起来很便捷,不用切来切去。虽然是一个人全权处理,代码规范也要做好,以免自己给自己挖坑。一个人也要把代码的版本控制工具用上,做好代码跟踪,我比较青睐git,不仅开发时方便,而且部署也方便。

代码做好把控后,对于开发周期也要做好规划,不能从第一天一直埋着头做到最后一天,然后给客户说好了,做完了。这样不但客户会炸,自己也很可能白忙一场。我这个项目就分了三个阶段,刚好一周一个阶段,第一阶段主要是基础架构搭建和前端静态页面展示,完了能让客户看看大致效果,有问题及时更正,第二阶段主要是API的开发和主要功能的集成,第三阶段就是剩余服务的集成,测试和问题处理,给每个阶段尽可能的留出一些时间处理客户发现的bug以及做一些小的改进,尽量做到不紧不慢,收放自如。如果在中间某个阶段客户突然脑门一热要求大改,那就要仔细评估风险了,和他聊聊人生,谈谈美好的事物,如果还是无法让他满足,那就要么加钱要么加时间再加钱,就这么简单。

部署与测试

就像之前提到的,要分阶段开发,因此完成一个阶段的任务就应该让客户能看到东西,并进行相关的测试。这样也不用把前边的问题压到后边,给自己制造混乱。客户的服务器是阿里云的linux服务器,已经用惯了,所以很顺手,两三下把环境搭建好,手动使用git远程拉代码和打包,还没尝试过自动部署,始终觉得自己亲力亲为才让人放心,以后可以试试。不过尽量不要本地SSH上传,因为很容易出现人为错误,再处理这个问题就有些得不偿失了。服务器环境处理好后,再配置反向代理,然后启动服务,客户就能随时随地进行项目测试了,发现问题及时通过微信反馈给我或者放到tower上,待我后续处理,井然有序。

交付

待所有功能开发完成,并且测试无误后,就可以结项交付了。如果需要质保的话这个一开始要谈清楚,包括时间和价格,要是有改动的话,那就是另外一码事了。待客户确认好后就可以提交最终的里程碑文件,然后结账付款,让客户在云沃客上给个评价,结束合同,至此,一个项目的周期正式结束了。

总结

一个人接包和开发有时是很孤独的,所有问题得自己全部扛着,所以前期工作要做充分,能干就干,干不了及时提出来,大家时间都很宝贵。对于有本职工作在身的开发者而言,项目管理和时间管理要做好规划,处理不好不但会影响本职工作还可能还会影响自己的生活,一定要谨慎。这种毕竟是远程开发,很难和客户面对面交流,所以在沟通上要认真和高效,说问题不扯淡,要做到相互信任。这些都是我的真实体会,有感而发,希望帮助到大家。第一次在云沃客上接的项目还算顺利,下次继续。