最近刚刚结束了一份兼职开发工作,历时两个多月,其中艰辛程度远超预期,虽然曲折反复,但秉承着有始有终的原则,仍然咬牙干完了。修养了几天之后,终于有时间来记录一下这个过程了。
源起
一切的起源皆因贫穷,年龄在追三,家庭的开销像洪水猛兽般冲刷着我的肉体和灵魂,从没有像现在这样渴望挣钱过。这时候一个契机来了,我之前公司的同事联系到我了,说要做一个 Magento 商城,问我有没有时间来开发。
Magento 是一个 PHP 搭建的开源商城框架,在国外极其流行,但是因为开发难度高,这套框架的本土化做的又不好,导致国内除了少部分跨境电商公司会用到,其他人基本没有人听说过。我刚入行时做的就是这个,但是时隔两年没有再做过了,已经不熟悉了,而且我加班情况很重本不该再接私活了,可挣钱的念头让头脑升温太多了,莽撞的答应了下来。那个时候也已经想好了,项目外包出去给另外一个做后端的同事,再在网上找个兼职前端来配合,自己只需要对接需求、把握进度就可以了,一个月完成交付,美梦做完噩梦就来了。
项目洽谈
项目开始前,和需求方对接了需求后,给了他们报价、工期、需要准备的服务器以及其它生产资料,这里就出现了第一个致命的失误,我因为不清楚 Magento 开发的市场价格,报了一个极低的白菜价,再一个是严重低估了 Magento 的开发难度,工期只按1个月的时间进行计算,这也为后期项目完全失控埋下了隐患。
找合作的人
在承诺需求方前,自己找了一个前同事来答应做 Magento 开发,虽然我知道他水平有限,但是考虑到他做过 Magento 两年多的开发,再怎么着做个简单的开发还是没问题的吧,而且他和我一个城市,见面方便,进度上应该好把握。如果说项目洽谈是给自己刨了坑,这个哥们就是带着铁锹入伍,准备埋了我。另外一个前端是在程序员客栈上找的,中规中矩没什么可说的。
项目开始
经历了一周的时间准备,需求方服务器买好了,UI 原型图也出好了,就等我这边开工了,说实话这是我第一次接一个完整的项目私活,还是很有干劲的,我为了不折腾,专门找了一个同事来付费搭建服务器环境,因为我怕那后端哥们搞不定净耽误时间了。我自己也专门搭建了一个 git 仓库、项目进度管理工具,一切都准备好了,就剩写代码的人下场干活了,后端那哥们还说整的那么专业,我心想是啊,我做东西一直不希望是做个垃圾出来,那样简直是在给自己抹黑。
无休止的噩梦
在项目开始的一周里,因为需要等下前端先出模板,我对后端的要求是先把框架部署上去,开发环境配置好,把开发计划在项目管理里录入一下。因为我知道 Magento 的部署也是很麻烦的,开发也有难度,所以我对这个后端哥们时间上也是很宽容的,直到一周后我发现这个项目管理进度一条记录也没有,框架部署的也有问题,当我问起来时,这个哥们说是最近工作太忙,在我催促之下,过两天终于把框架先搭起来了,但是进度依然不更新,并且也没有使用我搭建的 git 仓库,悠然的用着 FTP 更新项目。
期间项目开发崩溃调不好时,他就整个项目删掉,再次部署,git 版本控制,就是为了出问题可排查,可回滚,这年头了还有人不会用 git 吗?他有次给我说 500 查不到原因,日志都不会看吗?mysql 出问题了啊,上服务器一看,mysql 服务都没起来,问了才知道,他用 reboot 了,也不会起环境,真是神经病啊,当时我就想骂街了。其实这个时候我有点不想用他了,我觉得工期上有点紧张了,这个时候项目洽谈的隐患就出来了,因为前期报价太低,导致这个时候想换一个专业开发 Magento 的人经费不够,整理了下心情,约这个哥们出来吃饭,还是耐心的沟通了项目,不得不说这个哥们心态是真的好,还在拍着胸脯说没问题,我也就是信了这鬼话了,没办法项目继续推进吧。
在项目中期,我因为家庭实务要忙碌,没有每天盯着项目,只是口头询问了一下,这个哥们仍在给我打包票,直到前端告状来了。说这个哥们配合起来很困难,进度太慢了,我不由得心头一紧,立马打开了电脑查看项目,直接震惊,WTF 这么长时间就搞了一个半成品的首页出来!临近交付还有一周,这配个加强连也搞不完了,立马电话询问,这个哥们还觉得前端告状很不服气,我就问到底什么情况了,代码究竟写了多少,他遮遮掩掩不肯说,我已经明白了,这货就写了个首页,一个月的时间,我找个实习生边学边写都比这强,他说自己只会开发模块,不会整体的架构,说白了就是没有0到1的经历,只会当小螺丝,需要有人提前给他架构好才能开发,合着拿我这项目练手来了。事已至此,我明白项目算是黄了,绝望了,不是说钱挣不到了,而是自己的脸面,真的太丢人了。我劝退了这个哥们,他倒是从始至终都没提过钱的事,之前我给他付定金也不要,也许他早就想好了跑路甩锅的事了,从项目开始,所有的事情都在迁就他,前端怎么配合,服务器维护也是我来的,结果就搞的一地鸡毛,我觉得有时候水平高低是一方面,有没有认真做事情的态度又是一个方面,他算是彻底上了我的黑名单了,永不解封。
结束?还早
项目做到了这个份上,我已经没有心力继续了,已经做好给需求方退钱的准备了,就在当天晚上我猛然间想到了一个人,也许他可以帮我。我拨通了电话,跟他说明了情况,我说这是个救火项目,还有一周的时间,如果能做就接,不能做就不接,他选择接下来了,我高兴的快飞起来了,结果事实证明,我高兴得太早了。
临近交付只有一周的时间了,这个时间我知道很难做出了,但是我已经做好了拖延下需求方时间的准备了,毕竟我知道他们还是急着用的,这个时候撂挑子更不负责了,晚出来几天总比什么都没有要强,钱我少收点都没问题。在我重新燃起斗志后,这个新的朋友却开启了佛系开发模式,虽然技术实力我是认可的,但就是每天开发时间极为不固定,过了一周又一周,已延迟交付了2周多,需求方终于等不及了,他们告诉我,现在这个系统对于他们很重要,需要尽快上线。我看着这个做了一半的项目,还有被新朋友砍掉的多处核心功能,苦笑了一下,结束吧,自己的钱挣不到也不好,面子丢了也罢,不能耽误别人的事情,这样的项目拖下去毫无意义,交付也是用不了的。
转机
在跟后端朋友说了停止项目后,我也跟需求方说了实情,当然期间很多曲折的故事就没有告诉他们了,说出来心里反而轻松点了,但是换需求方的心理开始紧张了起来。问我有什么解决方案,我告诉他们,Magento 极为小众,这个框架即使顺利交付了,后期维护也是困难重重,如果还想继续做,我可以介绍两家当地还不错的外包公司接手来做 Magento,但是费用是很高的,超出我当初的报价数倍,另一种是换个框架来做,我因为原先自己0到1做过一个商城框架,让需求方看了我原先的项目,他们选择了用我的这套框架来进行整改。就这样,我开始了亲自下场写代码,从包工头变成了搬砖工,并且找了一个自己信的过的前端来帮我一块做,干了一周交付,又过了一周多需求方所有疑难都已处理,我终于结束了两个多月的苦难兼职,虽然过程是曲折的,但结局我已经很满意了,从原来的需要赔钱变成了盈利状态,但这次的兼职反映出的种种问题,很值得总结反思。
反思
这次的项目经历让我对工作又有了新的认知,不要低估了任何工作的难度,尊重任何一个行业和职业,行内普遍对外包有看法,但换成是你自己能做好吗?以下是我总结出来的一些这次项目中的问题:
1、私活需要合理安排时间,如果自己没有充足的精力,不要接,记住全职的那份工作才是你的立身之处
2、项目报价前充分了解市场行情,并且要拿到客户准备的需求,认真评估并给出安全的工期,延期交付是最大忌讳
3、如果要找合作伙伴,一定要找水平强的,不要觉得项目简单就找菜鸟应付,菜鸟的奇葩操作你捉摸不透的
4、0到1项目经验是很重要的,只会当螺丝的人在接私活的领域基本没戏
5、及时止损,这话虽然我以前对自己说过,但这次因为觉得面子下不来硬是撑了这么久,其实在项目中期发现进度失控时就应该尽早跟需求方沟通的,提前结束注定失败的项目也是止损方式,对双方都好
6、能静下心分析需求方的需求,给出最优的解决方案,就像这次,Magento 并不是必须框架,只是先入为主被对发带偏了,觉得对方非 Magento 不可,其实最开始把 Magento 的弊端说清楚,以及让他们看下自己的框架也不会带来开发上这么大的难题了