首先要说的是,我认为创业公司的技术路线选择并不是一个技术问题。如果是一个纯粹的技术问题,那么很可能会一直争论不休,最后的结果就像某个笑话里面说的,某公司一直到倒闭技术路线还没统一。因此,本文不会向你推荐任何一个具体的技术方案。
创业公司往往都面临着不同程度的资金和资源短缺,经不起反复修改技术路线带来的资源浪费,需要管理者或者技术带头人能够较早地确定一个适合的技术路线。因为技术路线决定了岗位如何设置、人员如何招聘、开发周期、开发模式等。而更多时候,人员招聘可能是最核心的问题。
那么创业公司该如何选择技术路线呢?我有如下一些看法。
给非技术出身创业者的建议
以前做技术咨询时,我们经常会遇到一些非技术出身的创业者,他们往往对好的技术人员非常渴求。但对如何找到好的技术人员,如何吸引技术人员加入,他们却束手无策。在我创业的这两年,这点得到了充分的印证,我可以轻松地劝喜欢的技术人员加入,但要找到好的设计师并说服他们加盟太难。各种人才都有自己的圈子、文化和行为方式,他人很难融入。
对于非技术出身的创业者,我的建议是,尽量使用开源系统、现成的解决方案。虽然技术人员往往对Discuz!、UcHome甚至WordPress等现成的系统颇有微词,但对于没有技术背景的创业者,这些系统是最好的切入点。
我见过一些非常成功的团队,创始人完全不懂技术,但对产品、运营、营销非常在行,他们的网站全部采用开源系统,没有任何的改动,只是找了设计师对样式做了修改。网站的流量、用户满意度都非常不错。因为没有任何先行的开发,所以网站可以很快正式上线,而且大多数程序的开源系统,也都有较强的自定义能力,仔细琢磨下就可以玩出很多花样。
这样的团队往往没有技术人员,或者只有一两个很初级的技术人员,因此,在网站成功发展后,往往会遇到一些技术瓶颈:例如在流量猛增后,技术人员不知道如何化解;产品发展了,开源软件的基础扩展能力不能满足需求以后,需要二次开发或者需要重新开发时,现有技术人员的能力无法跟上。
这时就需要考虑引入一个好的技术带头人,建立自己的技术路线。通常也会有一番波折,但这也是种甜蜜的烦恼,因为不发展到一定程度,根本不需要考虑。发展到这样的程度,公司的现金储备和知名度都有了很大的提升,招人也就会容易一些。
给技术出身的创业者的建议
首先,我认为一切企业管理的出发点和归宿都是“人”。什么样的公司吸引什么样的人才,所找的人才又会影响公司企业文化的形成。技术路线的选择,一定要结合获取人才的难易和开发模式的组织情况来思考。
激进的技术路线
很多人喜欢激进的技术路线,比如用Erlang、Go等语言做项目,而公司全部员工几乎都是初学者。又或者有人在iOS第一代SDK出现时就投身App Store。
有时,有些功能或产品只有激进的技术路线才能解决,较早使用先进技术可以获得技术优势和壁垒,在一般网站都使用SQL Like语句做全文搜索时,如果你率先使用Lucene/Sphinx等开源搜索引擎,那么就会在性能和效果上有非常明显的优势。技术发展非常快,但普及非常慢。在2001年开发出Lucene第一个版本后不久,国内的技术人员就开始写文章和学习笔记介绍它,但到了2008年,国内很多中型网站的全文搜索仍在使用SQL Like语句,很多技术人员明知这样耗费服务器资源很严重,甚至会拖垮服务器,但也不会改用Lucene。
有时,激进的技术路线可以帮助你在新兴市场占领先机。前两年苹果App Store刚刚出现,软件比较缺乏,所以只要产品质量尚可就可以获得很多用户,从而获得不菲的收入。现在开发者想做出被市场认可的产品非常难,而那些进入早的产品则可以靠早期积累下的用户稳定可靠地发展。
激进的技术路线的另一个好处是,可以作为人才过滤器。如果公司使用的技术刚出现或者刚开始流行,那么愿意尝试甚至可以用好这种技术的人,往往是善于学习、不怕麻烦的。这是技术团队里面最喜欢的一种人。
但激进的技术路线不是谁都可以玩得转的。如果想采用激进的技术路线,往往需要技术带头人是所选技术的专家,可以在技术方面辅导团队成员。同时不能让先进技术成为技术带头人的独门绝技,这样的团队是不健康的。
沉稳的技术路线
对大多数公司来说,真正的竞争优势是产品和服务,而不是采用了什么样的先进技术平台。在这样的公司里面,技术团队的任务不是提供核心竞争力,而是给公司的业务部门提供坚实可靠的技术基础,那些不能带来产品和服务体验升级的技术亮点并不重要。
对这样的团队来说,我建议采用沉稳的技术路线。简单地说,就是采用技术带头人或者团队成员都熟悉的技术,一切从实用出发。
首先,招人变得相对容易。到目前为止iOS程序员的价格仍旧是居高不下,且非常难以招到高质量的。与之相对,C#程序员、PHP程序员、Java程序员就相对便宜和好招多了。同时,可以选择的现成技术解决方案也多了,就PHP、.NET、Java等语言来说,开源的论坛、CMS系统都非常多。
对语言和平台来说,技术越来越不重要,更重要的是社区和支持。技术人员应该改变思路,不管什么语言和平台,在合适的人手里面都可以释放出巨大的力量。
以Java为例,之前是一门新兴语言,存在的最大问题是各种第三方库的匮乏。但这些年发展下来,以Apache基金会、IBM等为代表的机构,积累了大量的开源库,如Lucene家族等。
再以PHP为例,PHP早期就是以快速开发、简单易用而闻名的,在大规模计算和性能上并不占有优势,特别是脚本的运行方式带来了一些对象生命周期以及性能的问题。但作为PHP用户社区的成员,LiveJournal创造了Memcache解决了缓存生命周期,Facebook创建了HipHop for PHP大大提高了性能。
所以我们不仅可以在理论上说,没有坏的平台,只有坏的架构师,也可以从实践上说,现在几乎每个主流开发平台,都有一些世界级的优秀网站背书。而且在互联网时代,其他公司的经验很容易借鉴。
因此,采用技术带头人或者团队成员都熟悉的技术路线,积极了解社区动态,大多数公司就可以应对技术上面遇到的问题。对于乐于学习的团队而言,现在是最好的时代。