谈谈创业公司的技术选型--朴素的技术观

标签: 资料文档 startup | 发表时间:2012-12-04 09:07 | 作者:54chen
出处:http://www.54chen.com

以下内容由 [五四陈科学院]提供

创业公司技术选型

创业公司的定义
把服务器数量在千台以内(如果存在服务端),或者业务没有爆发过或者是长时间没有爆发过的公司,叫做创业公司。

朴素技术观的定义
有很多看上去很美好的技术,背后都有很多对应的很残酷的事实,在一个创业公司许多选择给你,你可以使用当前最炫的技术,也可以使用团队最擅长的技术。朴素世界观,是指所有选择使用团队最擅长技术的一种观念。

语言
语言之争是最没品了,这里不争哪种语言好哪种语言坏。
这里有一个办法来选择语言:所有团队成员的简历中,出现最多的一种语言为标准。
例外情况:团队成员中有一位大拿,是某门语言的泰斗,不说在国际上,在国内也要有领头羊的成绩。印象中在创业中大量使用GO语言的许式伟大侠是例外中最典型的一个,不过看看人家的成绩,已经把GO摸的一清二楚了。

反例:太多。

以下条件满足可开启反例模式:
1.至少一人完全理解整个语言的语法
2.至少一人完全理解语言精髓
3.至少一人完全掌握此语言常见debug工具
4.至少一人在一个规模较小应用成功使用

存储
这里主要讲服务器的存储。
如何选择:mysql+memcached至少在twitter、renren.com、taobao、qq、sina、baidu......等公司大量使用,如果你团队成员一个都不是来自这些公司,那大胆地用吧,用死也用不出什么毛病来。当然了,十分需要在业务爆发时找到一位可靠的mysql dba,这里要提一下人人网的创始员工DBA刘启荣大侠,引用一句前老板的话:×××无出启荣之右也。
反例:此处省去创业团队名字,有史可考。当年KV十分火爆,某兄弟对cassandra十分感冒,于是在整个系统初期设计时全部使用了这玩意。后来,开始市场宣传的时候,这玩意儿就是不行了,一行人接连多夜赶制回mysql。

以下条件满足可开启反例模式:
1.使用cassandra要理解全篇dynamo文档所写,完全掌握RWN,完全熟知虚拟分区作用,清晰知道cassandra在分区上偷工减料所带来的影响。
2.团队成员里有一个人完全理解了这个要使用的东西的源代码。这里要提一下张宴大侠,他长年研究tt代码,在使用上已经很有一手,所以有他在的地方,用tt完全没有问题。如果国内有一个人冒出来说自己对cassandra代码长年研究,我一定不相信,因为这些项目代码行数已经超过一个人快速理解的能力,当你看完的时候,新的版本又出来了。
3.很多单独的解决方案,因为代码量不大,完全可以从零开始花人力搞定它,像redis,在新浪被用得很多,到了你的创业公司,不一定可以搞定,因为什么呢,你需要一个完整的人先摸透它的习性。摸透了习性的小项目,完全可以先在小项目上使用。

框架与分工
框架的作用在于更加利于分工。
以服务端为例,java如果你选择了人人网切切王开源的rose框架的话,spring的好处一应俱全,而且因为其天生的restful的好处,最小粒度可以以api为分工。这样,在一个团队内部,任何人完全可以修改任何人的代码,因为是使用同一个框架,同一种思路,写出来的代码不会是完全两样的。php如果你选择的ZF之类的,以controller为单位的MVC模型一下子就定义了你的项目,同样也可以做到成员随意维护任意模块。

如何选择:框架的选择只看历史。如果历史上有框架可选,那一定是选择验证过的。如果没有,那尽可能地花时间提炼框架。
反例:框架似乎人类写代码的常规总结行为,即便再烂的项目,在局部去看也一定会有一些框架性的代码存在。反例要说说discuz1.0以前的代码,感觉完全是应届生所为,想到哪里写到哪里,和放牛一样,维护基本上不可能。

以下条件满足可开启反例模式:
1.android等客户端开发暂时还没有特别好的框架性的东西,不过android本身就是一个大框架,业务代码的框架需要自己提炼。
2.非常非常小的项目,瞬间写完要上线。
3.项目只用一次。
4.救火。

大项目与小项目
反例:从超级大公司出来的工程师,特别是企业开发的同学,特别喜欢一个超级大的项目,把所有的功能都包括在里面。所有人一起,天天折腾这个trunk,动不动的我踩着你的脚了,你压着我的手了。
正例:换到互联网模式,所有项目能拆则拆,越扁平越好,每个部分有一个指定的master,主要负责此项目的稳定。这实际在开源界早就这样干了。实际操作中,只要能够找到一个合适的master,就可以拆。

没有任何条件可以开启反例模式。

流程与管理
这个标题太大,分小来说。主要包括代码版本管理、依赖管理、代码制度、项目发布流程。这里没有反例,只讲经验。

版本管理:目前大多数人还在使用svn,但是git真的非常非常好用。pro git book只需要一个晚上的仔细阅读,就一定可以学会。实际学习成本很低了,一个创业团队,这点学习能力都没有的人,赶紧离开你的团队吧。
依赖管理:java大多已经使用maven,老早的ant带一堆jar包的形式已经落后了,赶紧换。php的依赖管理一直都很弱,不过有人参考ruby搞了一个composer,可以试试,也许可以帮助改进。
代码制度:什么样的代码才可以checkin/merge master?一般的标准为:跑过所有的unit test、master维护者或者团队成员review通过。
项目发布流程:项目立项到项目上线,划分N个小阶段,实施scrum或者变体的scrum,但是一个原则就是任何一个阶段的不确定,都会在后面的阶段里放大,小步快跑才是正确的节奏,有时候宁愿不要一些功能,也一定要先发出来。



想快点找到作者也可以到Twitter上留言: @54chen
或者你懒得带梯子上墙,请到新浪微博: @54chen

相关 [创业公司 技术 技术] 推荐:

2011年技术创业公司解剖分析(图表)

- PH囧ENIX - 36氪
肯定有许多的朋友都梦想着或者已经在创建自己的公司了,但是2011年的技术创业公司大概是个什么样的情况呢. 我们一起来看一个非常有趣的图表吧,以下是经过重新编辑的图表:. 不知道朋友们看完这个图表后对创业公司的认识有没有新看法呢.

创业公司如何确定技术路线

- - 《程序员》杂志官网
首先要说的是,我认为创业公司的技术路线选择并不是一个技术问题. 如果是一个纯粹的技术问题,那么很可能会一直争论不休,最后的结果就像某个笑话里面说的,某公司一直到倒闭技术路线还没统一. 因此,本文不会向你推荐任何一个具体的技术方案. 创业公司往往都面临着不同程度的资金和资源短缺,经不起反复修改技术路线带来的资源浪费,需要管理者或者技术带头人能够较早地确定一个适合的技术路线.

从零开始搭建创业公司后台技术栈

- - 胖胖的空间
说到后台技术栈,脑海中是不是浮现的是这样一幅图. 有点眼晕,以上只是我们会用到的一些语言的合集,而且只是语言层面的一部分,就整个后台技术栈来说,这只是一个开始,从语言开始,还有很多很多的内容. 今天要说的后台是大后台的概念,放在服务器上的东西都属于后台的东西,比如使用的框架,语言,数据库,服务,操作系统等等,整个后台技术栈我的理解包括4个层面的内容:.

谈谈创业公司的技术选型--朴素的技术观

- - 五四陈科学院-坚信科学,分享技术
以下内容由 [五四陈科学院]提供. 把服务器数量在千台以内(如果存在服务端),或者业务没有爆发过或者是长时间没有爆发过的公司,叫做创业公司. 有很多看上去很美好的技术,背后都有很多对应的很残酷的事实,在一个创业公司许多选择给你,你可以使用当前最炫的技术,也可以使用团队最擅长的技术. 朴素世界观,是指所有选择使用团队最擅长技术的一种观念.

如何在创业公司的技术面试中脱颖而出(第1部分)

- - 博客 - 伯乐在线
在过去5年中,我面试了数百名IT工程师,我认为很值得把我的面试IT工程师的经验同大家分享. ●帮助人们为他们的下一个面试准备. ●帮助IT工程师找到合适的工作. ●帮助IT工程师创造更好的环境. 我们通过两个方面面试IT工程师:. ●技术技能:包括理论和实践技能以及经验等. ●非技术技能:性格,沟通技巧,是否能够融入我们的文化环境.

前端技术

- - CSDN博客综合推荐文章
随着互联网产业的爆炸式增长,与之伴生的Web前端技术也在历经洗礼和蜕变. 尤其是近几年随着移动终端的发展,越来越多的人开始投身或转行至新领域,这更为当今的IT产业注入了新的活力. 尽管Web前端技术诞生至今时日并不长,但随着Web技术的逐渐深入,今后将会在以下几方面发力. JavaScript的兄弟们.

SSI技术

- - 开源软件 - ITeye博客
1.       SSI,通常称为“服务器端包含”技术. 使用了SSI技术的文件默认的后缀名为.shtml,SSI技术通过在html文件中加入SSI指令让web服务器在输出标准HTML代码之前先解释SSI指令,并把解释完后的输出结果和HTML代码一起返回给客户端. 2.       SSI技术的优点:SSI技术是通用技术,它不受限于运行环境,在java、dotnet、CGI、ASP、PHP下都可以使用SSI技术;解释SSI的效率比解释JSP的效率快很多,因为JSP规范提供了太多的功能,这些功能都需要servlet引擎一一进行解释,所以效率比较低.

技术选型

- - 企业架构 - ITeye博客
MVC Framwork: SpringMVC3.0 Restful的风格终于回归了MVC框架的简单本质,对比之下Struts2概念太复杂更新又太懒了. Template:JSP2.0且尽量使用JSP EL而不是taglib,万一要写taglib也用纯JSP来编写,一向是SpringSide的推荐,Freemarker们始终有点小众, 而Thymeleaf与美工配合度非常高,可惜也是太少用户了.

技术 in Netflix

- - 后端技术杂谈 | 飒然Hang
综合市面上的公开资料总结了Netflix在技术上面的一些实践和创新,从中能够得到不少启发和提示.

技术的异化:读《技术垄断》

- Dynamic - It Talks--上海魏武挥的博客
事实上,我认为国内对马克思或神圣化或妖魔化,都是要不得的. 我们应该还马克思一个伟大的社会学(当然还有哲学、经济学之类)学者的本来面目,而不是把他的话当成教义. 异化就是一个相当精到的学术词语,它所描述的是人们创造发明某物本来为了让人们自己更好地工作生活,结果该物却成了人的主宰. 在很多领域,都有异化的影子,比如宗教,比如官僚体系,当然,也包括技术.