如果你想创业或者你已经在创业,这篇文章很适合你看看。
介绍一下柯好,程序员客栈的创始人,连续创业者。客栈一开始想做外包互联网分发,经历了很多坑之后对于如何模块化一个开发任务有了非常深刻的认识,这也是我们2.0远程协作的基础。
-----------------------------
作者:陈柯好
被朋友忽悠到了杭州梦想小镇,在孵化器里面打起了地铺,在这里昼夜兼程了一个多星期。孵化器小姐姐常来嘘寒问暖,关心猿哥哥怎么住到里面了呢,对于湾西有淋浴间提供表示大赞,太人性化了。不扯了,画面太美~
正题,程序员客栈2.0要上线了,以远程工作为切入点,做互联网企业的远程技术中心,当好程序员的经济人。上线前在梦想小镇园区拜访交流了上十家公司团队,收获颇多。看到一些靠谱的技术团队,也了解到了一些非常不专业的搞法,真想知道你们技术是怎么混进来的。今天想借此谈谈产品开发的流程问题,这也是个严肃的问题。解决流程问题,就知道技术团队需要什么人,产品开发就成功了一半。
一个项目的开发流程一般是『想法』『原型』『设计』『开发』『测试』。
一般刚开始创业的人,没有产品研发经验的公司负责人,他们提供的word、ppt都是属于『想法』,无论描述再详细再怎么高大上都属于想法。很多这样的创始人或者产品负责人,就这样拿着自己的『想法』满世界的去找人做开发,就差一个靠谱程序员了,一些程序员自诩技术能力好,乐呵呵的接了项目,然后~~~项目烂尾了。程序员客栈去年做外包分发也严重面临这个问题。之前一直搞不明白为什么会这样,现在才慢慢想清楚就是因为项目没有流程,介入的人越多结果越乱。项目一开始定位模糊,没有原型就找设计,没有静态设计和流程图就直接做开发,开发想赶进度就增加人手,开发完成不留文档摆出再也不想管了姿态。你们感受下,这些都是非常糟糕的做法,这样折腾产品质量能好才怪。做产品搞开发绝不是找包工头建房子的那种赶脚。
所以能做好产品一定需要对『想法』『原型』『设计』『开发』『测试』这个流程有深刻的认知和实践。即使不完全按这个来,也要有类似的自己有效的套路,保证产品模块化有流程可依。要知道现在的产品开发绝大多数不是一个人能做完的,所以团结协同这么多人做开发,需要流程和进度规划两手抓。这样才能保证项目质量,做出优秀的产品。下面就对以上我们理解的每个流程以及下一个流程的启动条件做一个简单说明,让大家有个整体的即视感。
『想法』
所谓想法就是一切的口头描述、会议沟通、word ppt excel文字描述。无论描述得多么详细,讲的多么让你懂,都只是属于想法。之前和一些非技术行业要跨界到互联网的老板沟通时,他们经常这样描述自己的产品:对,这里就是和微信一样。吧啦吧啦,你懂了没?没懂是吧,要不我再给你讲一遍。然后程序员居然就懵懵懂懂的懂了,接着就去悲剧的搞开发了。当我走访到小镇一个团队也正在这样操作时,瞬间整个人都不好了好吗。千万不要相信一个处于『想法』阶段的产品通过不断的多讲几遍能变成『原型』,即使你听懂了,那也不叫原型。那个程序员少年,等你长大后去找哭产品经理哭一会吧。
那又为什么,很多企业的官方网站交给猪八戒、地方建站团队、甚至老师学生团队也能做好呢?他们也没有什么流程。你一定要相信,猪八戒、地方一般的建站公司也只能做好企业展示网站了(或者修改代理软件)。因为这一块是比较标准化的东西,一个后台,成百上千种前端风格,足以满足你的各种需求。而你~需要改造世界的伟大创业者,就不要把自己的产品寄托在这样的公司平台了,还是自己搭团队做产品靠谱。互联网企业产品是核心,核心都外包了,你还做什么啊。重要的是外包基本都是烂尾的,这倒是很现实的有木有。
『原型』
原型是对『想法』的中流程、产品布局等的详细描述。一般的原型图可以用 Axure 、Sketch或者现在新出来的一些移动原型工具来画。画出来基本就能看到产品什么样子了。从『想法』到『原型』这是产品经理需要做的事情,他要理顺产品逻辑,找到重点,建立流程。所以不要逢人就说:我们没有产品经理,我自己就是产品经理,即使你一定要是产品经理相信也远远没有那样的专业内涵深沉。在这个大众创业万众创新的时代,一些很草莽原始的开发团队中,如果有一个非常能被折腾设计师,当然也是可以不需要原型的,直接把想法告诉给设计师好了,这样好炫酷有木有,然后做几个版本挑一个,巨大的沟通成本加上不断的修改,也是能做出来,起码产品外表好看了。
为了更好的理解『原型』是什么玩意,这里挑了程序员客栈的原型放出来给看看,V1.0是做程序员展示,V2.0做远程工作。还有一些团队的产品原型图,我们懒得打马赛克,就不放了。
『设计』
有了原型,后面才是『设计』。不要原型就能一气呵成设计好一款产品的设计师不一定是好设计师。当然你也可以认为,牛逼的设计师不需要原型,就像牛逼的程序员不需要设计一样:某个大学导师的学生可牛了,他一个人能把所有的做完,是牛飞起来的全栈工程师,吧啦吧啦,你就信吧。『设计』部分就是我们能看到的产品外观了。交付给程序员的『设计』不仅包含“视觉”,还有“源文件”、“标注”和“切图”。设计可以分得更细,就像有UI了,还可以有UE(用户体验)。好的设计师能在设计中能照顾到UE,看你产品设计需要深入的程度了。
『开发』
前面搞了这么久,终于轮到程序员上场了,这里的重点就是需要找到靠谱程序员,程序员水平不一样,开发出来的东西就是一个天上一个地下,靠谱程序员和不靠谱程序员气质水平差得不是一星半点。一定不要指望一个菜鸟程序员能完美的按照静态设计把产品完美的做出来,他会告诉你一些普通功能的各种不可能实现的原因。拿到静态设计图和原型,后端程序员就可以设计架构开发后端(这又是一个尤其重要并深入的方向,这里就不深入了),前端程序员(web、iOS、Android)再根据后端接口和静态设计快速开发出来产品。中间的具体疑惑随时找产品经理,进度问题项目经理负责。一般一些团队会有自己的进度先后原则。比如:原型先出来,再是做设计和后端,设计和后端领先前端开发一周左右。这样配合起来,一个好的产品模块化的一步步的完成,然后就走完了产品中最重要的开发环节。
『测试』
好啦!产品终于做完了,程序员commit了最后部分的代码,然后给你说:我们做好了。这个叫做内测版,所以是不能发布用的。产品只有经过严格的测试,单元测试,公测后才能上线。千万不要相信一个程序员说:“我做的开发不需要测试”,即使他再牛。当然我相信一些好的程序员在开发的过程中很少留坑,并且边开发边写测试,所以做出来产品质量很高,但是这样的产品也是需要测试的,因为bug无处不在。我们需要理解产品不正常是正常状态。所以才需要“运维工作师”嘛,这种职业的存在也让一些非互联网行业的人无法理解。我卖你一套软件和系统,还给你配个人维护,那就说明产品开发出来就是为出问题做好准备的了。
最后提醒下,以上过程中一定要知道程序员的水平高低以及他们的习惯都足以影响你的产品质量,甚至生死。这里给那些开发不做版本管理,代码就放程序员自己电脑上;接口文档word提供,没有版本控制;产品不按模块化开发;没有产品经理和设计,产品开发程序员就按创始人口述;没有任何服务器备份机制...写不下去了,你们感受下。这样的做法迟到要掉大坑里的,没有为什么!如果你们一定要抱着侥幸心理,不考虑各种意外来开发产品,那也是可以的,兵法有说“胜可知而不可为”。就是长期的胜利一定是建立在排除各种失败原因的基础上的,然后等待胜利的机会。
经过以上一步步的努力,然后你的产品就可以上线了,普大喜奔~~烧香求保佑无bug,然后小宇宙爆发~~一切都交给运营汪吧。