“合伙人”其实从古到今都有,指一帮人聚集在一起干一件大事情,这个事情必须要借助大家的力量一起完成。比如水浒里的一百单八将、西游记里的五人组合。技术创业者刚出来创业一般也都会找合伙人,毕竟一个人搞定不了太多的事情,除非自己做的东西一个人可以搞定,比如开个小店之内的。如何研发一个好的产品参考 技术人员如何创业《一》- 产品及想法 。是不是只要研发出软件产品就可以赚大钱了?那是不可能的,必须要有好的产品。个人觉得好的产品需要整个公司特别是管理人紧密配合才能创造出来的。怎么选择合伙人,我总结一下我的个人经验吧。

有了好的产品想法或者拉到了投资就要开始张罗组建团队了。这也是最开始的核心部门,而作为技术人员的我们怎么组建团队?看现在的创业公司一般有下面几种模式:
1、几个同学或者朋友凑在一起组建团队。类似于腾讯、新东方的创始人。
2、一个创始人找项目找人凑在一起做一项事业。类似马云、史玉柱这样的创业公司。
3、家族式,比如当当网、四川希望集团等。

其实还有很多模式,哪种模式好,只有适合自己的模式才是最好的。这几个模式是我身边出现最多的几种。

第一种模式个人觉得很好,不过也是很有争议的一种模式,因为一起创业的都是朋友但是创业的过程少不了斗嘴,不少很好的朋友同学最后反目。电影《中国合伙人》中因为成东青和孟晓峻的矛盾,王阳说了一句挺有意思的话:“千万别跟丈母娘打麻将,千万别跟想法比你多的女人上床,千万别跟好朋友合伙开公司” 。说是这样说,是因为中途出了矛盾,大家没有办法调和。王阳和孟晓骏离开了新梦想。不过当最后成东青理解孟晓骏当年在美国的遭遇,并且悄悄把之前孟晓骏待过的实验室以他的名字冠名,我当时就很羡慕这种共赴患难最后一起成功的兄弟是幸运和幸福的。说一下腾讯,他们几个合伙人从创办到2007年都是一直保持5个人的阵型,很难得。他们是怎么做到的呢?从最开始分配股份时,马化腾让其他的股份合起来比他多一点,这样大家在做决定时就不会因为他一个人一家独大。另外后来的利益分配也是按照贡献分配,几个合伙人在一起商量决定。这种模式最怕的就是大股东是个固执的人,不愿意投票决定,所以一开始就要确定要公司未来的制度和利益分配制度。以后大家不会为了这种事情扯皮,最后要离开也就像陈一丹他们是为了实现自己其他人生价值(听说做慈善)而退休的离开。

第二种模式需要领导有很强的人格魅力聚集一帮能人。马云就是典型这种模式,当时阿里巴巴十八罗汉被马云召集在他家创业,每个人每月500元工资,工作15个小时以上,吃住都在一起。这样的一个团队最后却大获成功,这中间和马云找到一些关键性人物和风投有很大关系。所以这个带头人需要很强的忽悠能力、管理能力、超前的商业敏锐度。你说马云他刚开始能保证就要做一个阿里巴巴吗?我想他也不清楚,路走一走就清晰了,就怕没有先前冲的勇气。这种模式怎么合伙呢?我觉得领导人需要找到合适的人做合适的事。因为毕竟大家不是朋友、同学,对彼此都不是很了解,怎么做到信任。创始人需要建立行之有效的管理制度,保证有能力的人得到利益,不行的人淘汰,建立自己的核心团队。建立核心团队后,这个团队就要保持信息透明,让大家觉得团队有归属感。就像以前毛爷爷带领共 产 党一样,其实前期创业是很苦的,但是大家还是愿意跟着他做,甚至付出自己的生命。这个很重要,很多领导人觉得公司还没赚钱谈这些都是空的,但是如果不谈谁来给你拼命。特别是技术性的创始人更加容易这么认为,需要把股份分红白纸黑纸写出来让核心人员静下心来努力干活。上次马云退出阿里时,看到十八罗汉重聚台上,还是蛮感动的,当时那一批没能力的草根搞出来现在日交易额几百亿的公司。

第三种模式家族企业,个人觉得处理好也是比较容易成功的。有个亲戚他们夫妻现在成都创办一个火锅品牌,开设的分店有30多家。想当时他们刚起家时,家里有好几个小孩还有双方老人需要赡养,没有存款只有欠债,在这种环境下还是创业成功了。总结了他们的经验,最开始男方在上海学习火锅厨师一套、女方做会计和大堂经理学习店面管理和财务。后来学习差不多了,他们回到三级城市,抓住了当时那里没有比较大点规模的火锅店这个机遇。借了一些钱和几个人合伙开了一个火锅店,加上外面学的一些营销知识,打锣敲鼓巡街宣传。这样慢慢就发展起来了,不过之前他们还开过好几个店都失败过。后来发现县城做这个的人慢慢跟风多了起来,竞争压力大,就开始向外部发展。到了成都刚开始也不知道怎么做,就加盟别人的店,后来知道加盟这种模式非常好,马上就准备筹备开公司做品牌,逐步发展到现在这个程度。其实男方比较有商业敏锐度,喜欢交友,不计较得失;女方懂得财务,管理。光是扩展肯定不行的,赚的钱守不住,这样一张一紧就把公司做起来了。

不管哪种模式搭建的合伙人团队都需要保持一个目标,朝着共同目标奋斗。看到这么多成功的模式,大家可能都想创业了。不过创业说容易也不容易,像我们公司现在创业四年也只能做到刚刚盈利一点。我们是技术型公司,老板最开始工作也是做技术的。我们这种技术型创业型公司怎么建立起来的?下篇继续聊聊个人经历。。

原创文章,转载请注明: 转载自LANCEYAN.COM

本文链接地址: 技术人员如何创业《二》- 合伙人的模式

不得不说这是个浮躁的社会,人人在这个社会都想暴富或者成名。在这些引诱的驱使下很多人都脱离了原来的稳定工作创业。前几天看了《中国合伙人》,故事讲到了几个大学生从校园到工作、再到创办了一个伟大的企业,这个故事更加激励了创业大军的壮大。大家都想创业,那我们技术人员怎么创业?也就个人的经验分享一下:

    1、好的想法、产品构思。
    2、好的合伙人。三板斧,管理、销售、技术。
    3、构建强大执行力的团队。

产品及想法:
什么是好的产品?一个朋友之前问到,这个问题要系统的回答还真有点不好说。看一下比较理论的解释,产品指一个能够满足用户的需求,我们能够使用可行的技术手段实现并且通过销售给用户给公司带来利润。好的产品指具有很好的用户体验,能够满足用户的刚性需求,受众用户市场空间很大,产品具有核心竞争力,具有不可复制性,有收益并且具备很好的产业链和利益平衡点。

我们技术人员设计产品会是什么样子?这点在创业中遇到了很多问题。有一些技术人员拿到一个产品就开始想象自己的产品未来如何的好,将来会赚多少钱,结果研发到最后往往不是这样的。为什么呢?因为技术人员平时自己总是在搞定一个又一个的问题,做完了一个别人提给自己的需求就觉得自己信心暴涨,认为这么简单的产品自己也可以很轻松就做出来了。看看自己搞的程序,这么复杂的工程,多有成就感。可是,自信心爆满的工程师如果不自我总结,研究用户需求、研究产品,只是自己一个人关门造车的话很难开发一个大众都喜欢的产品。

现在我们处于一个信息量大、优秀产品非常多的时代。要在这个时代获得成功必须得迎合用户的需求甚至超出期望才行。技术人员怎么操作呢?

1、做市场调研、多和客户沟通、认真做好需求分析。

这个看似简单,对于技术人员确实难度很大。因为毕竟大家习惯了面对电脑,喜欢了在电脑面前攻克难题,让我们去做这些事情总觉得时间花的不值得。有时候可能会想,我花这个时间去做个计划、去和客户沟通、写个需求文档还不如多学一点技术或者多写一些代码。技术相关的事情才是看得到摸得着的东西。这样就错了!大错特错!

很多创业公司开始没有产品经理,像facebook的ceo扎克伯格。或者只有技术一个人,这个时候公司的创始人就承担了产品经理的角色,如果创始人就把自己的点子抛出来给大家或者稍微分解一下就给到大家。然后大家分别去实现,自己也不管了,忙着开发自己的功能模块。以我们的经验,最后肯定是个四不像的产品。那意思就是不开发产品了吗?看看电影《社交网络》就知道,扎克伯克其实不仅仅是技术很牛,网站搞瘫了整个哈佛的网络,他的商业敏锐度和用户需求也拿捏得很好。在设计第一个长相匹配的网站时他知道整合爱德华的算法。在设计facebook时知道怎么利用其他学校都想和哈佛名牌学校的学生交友、如何通过熟人关系网络邮件营销、添加用户是否单身的标示(最后这个功能大获成功)。

看到这里其实大家会想到,其实facebook的成功并不是因为他本身产品的技术多么牛,而是他把握好了产品用户的心理、选择了合适的营销方式、整合自身独有的资源优势(哈佛)。其实他这个php网站我想现在很多学过web编程的都可以制造出来,有几个能做成facebook呢?

在《中国合伙人》中也有个场景,成东青因为在外面开小班被大学辞退了。最后一堂课时改变了原有的讲课风格,原来上课小心谨慎的照着课本讲,课上的同学都在睡觉(因为那个时候风气比较严谨),因为他在乎这份工作所以特别小心注意。最后一堂课给大家调侃自己的感情经历,已经释然反正都已经被学校辞退了,结果讲课的风格大受同学欢迎。这个就是市场,有时候自己觉得对的不一定是对的,而是要和用户交流,充分尊重用户。他最后把同学当成朋友,也为他后面赢得了新梦想。

这些在技术人员看起来的没有技术含量的脏活、累活反而是一个产品成功的关键。

2、适当的抛开技术,避免影响到产品设计和开发

技术人员设计产品时,总会把系统搞得特别是复杂。因为做技术框架时会想到重用、接口定义时要很灵活。一但这些技术方面的原因占据了产品的主导地位,那这个产品最终会超级复杂。不过有一点,除非你的客户是专有的或者是面向技术型客户。不过面向大部分社会上的产品一般都比较傻瓜化、尽量简化,不让用户思考,一看这个系统就知道怎么使用。

facebook曾经为了诸多技术原因选择了通用平台化的Html5作为技术实现。最终却因为用户的抱怨不得不重新使用ios、andriod开发原有应用。

很多技术在设计系统时,总想把很多新技术带入项目中来,让自己觉得特别牛X。殊不知这样的技术自己能否掌控,如果掌控不了到时候出了问题影响的就是产品的口碑。并且引入新技术,带来了学习成本,如果团队中还有其他成员,未来他们如何学习和开发。

技术人员还有个弊病。觉得自己的技术非常牛,人家不可能超越我的技术(也就是未来我的产品肯定是市场占有率最高的,通俗讲我的产品是最赚钱的)。研发几个月后发现竞争产品推出来了,会觉得他的技术多么弱,不削一顾。再过几个月,发现对方产品已经占据很多客户,并且推出了好几个新产品,还是觉得他的核心竞争力没有,技术能力弱,我的技术毫无压力的压倒他。再过几个月,tnnd,我这么好的产品怎么没有市场呢,赶紧换一个产品。。。。。结果可想而知。就算是自己最开始研发这种类型的产品,结果到后面反而没有赚到钱。这就是盲目的技术自信,而不是商业自信,开公司是要赚钱的,赚钱才能养活公司。

技术人员设计产品时,一定要有市场眼光、简单化功能、适当摈弃技术。刚开始要做到这些可能很难,需要大家强迫自己不往技术方面思考,不过我觉得只要多发现、总结自己的问题,并想到解决方案终会创造一款好的产品。如果大家尝试了无数次,还是技术影响整个产品的设计,推荐几个选择:
a、找到互补的合伙人,弥补你的短板。
b、开发技术类产品。
b、回到公司工作继续做技术。

现在大概总结了产品设计的一些经验,后面再总结下我们怎么把这个想法变成可运行的东西。

原创文章,转载请注明: 转载自LANCEYAN.COM

本文链接地址: 技术人员如何创业《一》—— 产品及想法

前面介绍了创业型软件公司的工作模式,这里详细介绍下如何实施,第一步是先要搭建环境,有了环境才能开展工作。

整个软件项目分为四个环境 开发本地环境、开发环境、测试环境、IDC环境。和传统C++开发不一样的模式是多了第一个开发本地环境。这是为什么呢,因为目前大部分开发人员还是比较熟悉windows下开发。对于mac和linux下直接使用软件并且开发的中国开发者还是少之又少,这套架构就这个现状做出来的。如下是环境搭建架构图:

agile_pic3

 

从环境来说:

一、开发本地环境、开发集成服务器搭建。 前端开发者、后台开发者。

前端开发用的最多的是photoshop和dreamweaver。在做psd之前大部分是不会协同开发的,只有整个文件传递过来过去。html切割的时候可能就会多个人协同开发了。这个时候需要一个集中ftp服务器、svn服务器。svn服务器用于保存版本代码库,用于保存历史修改的版本和开发人员协同。ftp服务器适用于及时修改时保存上传到预览服务器进行预览。看到这里有人也许会问,我直接合并svn和ftp不行吗?其实有这样的问题,如果直接提交svn,后台开发人员就会从svn看到。本来是前端的集成协同开发预览,结果影响到后台容易引起版本混乱。

后台开发怎么搭建环境?用eclipse在本地环境搭建开发环境,通过tomcat插件或者jetty启动调试class、jsp。之前看过很多公司都通过打成war包发布到集成环境再调试。集成环境大家都去集成容易引起版本混乱。即使不发布到集成环境,在本地就算修改个小的class文件也要重启war包有点浪费时间。最好就是利用tomcat的热部署,修改小功能直接生效。现在我们就是这样做的,用maven管理jar包依赖,ant本地打包、拷贝包,用eclipse的tomcat插件热部署快速开发。等到所有功能开发好了。把分支版本发布到开发环境进行集成测试。

开发环境涉及的软件有:nexus 、maven、tomcat服务器、mysql、ftp、jenkins、svn、jira、fisheye、eclipse、dreamweaver、photoshop、nginx。

软件的作用:
nexus作为集中仓库管理,因为每个工程如果都有一堆jar包,很难管理。加上svn上传、分支、合并耗费网络带宽、空间。如果有个地方把这些浪费空间的jar集中管理起来,所有工程合用岂不是很好。
maven是软件生命周期、依赖管理,有了集中管理jar包,就需要有个东西把jar包仓库和工程连接起来。
tomcat服务器是本地开发使用和集中测试服务器。
mysql就没必要每个开发机器都装一个了,放在一个开发环境就可以。
ftp作为前端开发上传文件使用。
jenkins是持续集成,开发和前端都把代码弄好,怎么融合集成在一起测试呢,总需要有个人来把所有的文件合并在一起吧?这个软件就起到这个角色,把所有文件集成、编译、打包、发布到tomcat服务器。如下图:

test

svn代码版本管理,大家都知道协同作用。
jira用于需求、bug等管理。
fisheye用于代码统计、审核等。
eclipse、dreamweaver、photoshop不用说啦。
nginx主要用于做虚拟主机和静态资源管理。因为我们可能同时开发多个网站,nginx可以根据不同的域名转发到不同的web服务器。

二、测试服务器。开发、测试。

开发集成测试环境通过后,这个就可以转测试了。通过持续集成,测试部署好环境就开始测试。测试环境同样依赖于集中仓库、maven、持续集成等软件。也就是集成测试环境、开发集成环境、开发本地环境都是用的一套jar包,是不是很cool。如果测试不通过,就要转回开发,开发好再转测试。怎么保证开发的质量和测试的质量,还有大家的协作性,这个过程涉及到软件工程和绩效考核,后面再说。测试通过一些测试,测试通过后就可以发布到外网了。这个时候需要提供发布列表、操作步骤、数据库操作脚本给到运维审核,审核通过后才能发布。

怎么发布到外网IDC呢?运维可以根据发布列表去操作,开发和前端一起等着熬夜啊熬夜。没有效率!这里提出了一个增量发布版本的方式,通过发布列表,我们的发布程序会自动检测到发布的文件和发布的机器,发布到对应的服务器。如果发布失败了还可以回滚文件,基本上是一键操作。未来还会把服务器重启、日志输出等集成起来。

三、IDC服务器。

外网的真实服务器,后台和前台。大家能够访问到的网站服务器。业务人员在版本发布后查看。整个流程就做好了。大家在每一次版本开发完了,可以很好的协同、开发、测试、发布。

扩展话题:
1、photoshop能否和html互转并且有版本管理功能,这个做好是个革命性的标志。
2、css、js等静态文件是否也能够纳入自动依赖管理里。这样不用我们发布一个页面文件时发现还有些依赖的js没有发布。

原创文章,转载请注明: 转载自LANCEYAN.COM

本文链接地址: JAVA敏捷开发环境搭建