河狸家的架构师陈科是千万技术创业者中的一位,在此之前,他曾在浙江电信、阿里巴巴、华为、58同城任开发工程及架构师等职位,本文中,作者将会分享他在创业公司遇到的一些挑战以及解决方案,主要内容包括以下几个方面:
-
项目管理的问题
-
业务代码的问题
-
产品需求的问题
-
组织协调的问题
-
技术选型的问题
-
运维方面的问题
-
人的问题
突然想到一句话,人生若只如初见,找对象如此,在公司干活也是一样。
在你加盟一家初创公司的时候,总是豪情万丈,自信心满满,但是问题的出现总是那么的突然,没有一丝丝防备,创业公司甚至没有大公司的蜜月期,你就会面临很多问题。
首当其冲就是项目管理的问题。
创业团队为了追求小快灵的模式,很多时候牺牲了项目本身的科学管理部分,例如项目计划倒排,任意变更需求,随意封闭开发加班加点,甚至压缩测试工期等。
当然,我们并不是来抱怨问题的,而是想如何更好的解决它,我觉得作为一个技术人员合格素养的一条就是敢say no。很多问题都是因为畏惧权威,过度承诺导致的。
另外,也需要尊重科学,重视项目里程碑,杜绝人月神话这类事情的发生。
我觉得,不管加班也好,砍需求也好,一定要遵守一个原则,就是不能伤害客户的利益,很多时候我们一味追求糙快猛的工作方式,看起来做了很多事情,其实结果却是漏洞百出,应付不过来,最终伤害的还是客户,倒霉的还是你自己!
推
荐大家都好好读读Bob大叔的《程序员的职业修养》这本书,特别是前面几章。在这里介绍下Bob大叔。Robert C.
Martin,世界级软件开发大师,设计模式和敏捷开发先驱,敏捷联盟首任主席,C++ Report
前主编,被后辈程序员尊称为“Bob大叔”。20世纪70年代初成为职业程序员,后创办Object
Mentor公司并任总裁。Martin还是一名多产的作家,至今已发表数百篇文章、论文和博客,除本书外,还著有《代码整洁之道》、《敏捷软件开发:原
则、模式和实践》、《UML:Java程序员指南》等。他最近创办了cleancoders.com网站,专为软件开发人员提供教育视频。
《程序员的职业修养》是一本讲“方法论”的书,目标是让大家成为“专业人士”,在这里推荐一个写的不错的读后感(点击阅读原文获取),没时间的同学可以先浏览下这个读后感,再去决定是否看。
接下来就是深入业务代码的问题。
由于创业公司发展迅速,所以往往会忽略代码构建的科学性,甚至牺牲和忽略设计的过程,完全需求片段导向,系统可以说是功能点的不停叠加,到最后就算是经验丰富的超级救火队员都没法解救了。
这时候,很多人就会说,这还不简单吗?赶紧重构啊,拆分模块啊。说实话,画个几个框,搞几个箭头标注一下数据流向这谁都会,但是具体业务如何建模?
任何互联网的业务平台无非逃不过:会员,账户,订单,支付,营销,计费等几大模块。
但是重构不是说画几个框框搞定的,而是在不脱离你业务显示情况下的合理设计,例如做营销,你不能只是简单构建一个营销的规则引擎就完事了,也不是做一个抽奖或者优惠券的系统就是把营销的事情做完了,而是需要去分析:
-
从上帝视角(系统整体视角)你的营销系统摆在什么样的位置。
-
从整体上走通营销的规则和流程。
-
套用目前和未来一段时间内有可能会出现的需求,是否可以在这套模型下可以走通的。
-
设计营销系统本身,站在营销系统的视角进行建模。
-
在设计完营销系统核心部分后,安排开发工程师进入营销系统的细节功能点开发,以及周边系统的接入。
再例如会员系统,有些有主子账号的概念,这样又会影响订单系统是否需要体现主子账号的关系,甚至又得影响营销,我买一送一这样的活动如何搞,账单如何体现等等?
所以,建模和重构没那么简单,也不是画几个框框就能解决你的问题的,你得深入业务,围绕业务,并且建模绝对不是技术人员的职责,而是运营,产品,市场,技术等大家都需要达成一致甚至深入理解的。
推荐大家阅读下,Eric Evans写的《领域驱动设计:软件核心复杂性应对之道》一书。
接着是产品需求上遇到的问题。
你
会发现产品经理有时候也不能很好的从产品的整体角度去产品,仅仅只是把业务方的需求过滤和理解了一遍就交给了开发,这样,你就会遇到很多自相矛盾的业务逻
辑,甚至影响到用户体验。那么,这个时候你会怎么办呢?是选择做鸵鸟把头埋到沙子吗?还是选择帮助产品经理一起来分析呢?
很
多时候,产品经理会抱怨,自己只是个传声筒,老板找他,运营找他,市场找他,那么多事情,根本没法系统性的去梳理产品需求,结果导致需求总是零星的提给开
发,结果上线之后漏洞百出。最后背黑锅的不但是产品经理本人,还有开发和测试,客户会说,这是什么垃圾技术开发的。另外,老板不了解情况,也会说,花那么
多钱,养一个技术团队,结果开发出了什么鬼?
我想,在创业公司产品技术部工作,最难的就是产品经理和架构师,架构师需要从产品的角度去审视,去把住命脉,因为这已经是最后一道工序了,不系统性的梳理,那么进入开发就会导致前面的悲剧。
产品经理也得好好思考,虽然前期会很累,确实事情很多,但是累一次总比你无穷无尽受虐最后导致团队和老板还有客户信心丧尽的好。
另
外,难道产品设计真的很难吗?除了整个业务模式的玩法你跟别人不一样外,整个产品的形态,其实大多数同类的厂商设计的都是可以互相对标的,比如抽奖怎么
玩,你大可以对标一下京东,天猫等产品的玩法,然后结合你自己的特色进行改善。其实我的意思不是叫你去抄袭,而是你要去梳理思路,形成体系化的结构,当你
不知道自己怎么弄的时候,可以去借鉴别人,就像读书,读的多了自然就会明白些。我想,大多数重运营的APP,其实还都是相似的。