前记:
几乎每天,在项目中,我们都要不断的与队友沟通设计方法,编码方式,在论坛中,也经常会看到大家对于一个技术点的无休止的争论。
有人说,“真理越辩越明”,这句话,没错。但是,你自己要弄明白,你是为了弄清楚一个真理的合理性,还是为了作成功一款产品,带成功一个团队?
这是一篇有关“如何处理争论”的作团队作产品感悟,其核心思想是:我们一切争论的目的,其出发点,不能是仅仅为了证明观点或者技术的对与错,我们的目的,应该是如何作对项目更有利,这种“有利”表现在高效的出版本,稳定的运营,快速的修改和维护。观点或技术的对与错,在大多数情况下,其实,于产品,并没多大的实际好处,我们需要的,是团队成员在不断实践的过程中养成了一些好的思维习惯,好的编码习惯以及好的设计习惯,而这些习惯,更多情况下,需要依赖团队成员自己的自我学习和成长,并不是一两句争论可以解决的,我们应该更加务实一点,让团队成员在具体的实作中成长,而不要过多的指望靠争论来帮助他们成长。“停止争论,马上实作”,在实作中改进和提高,这是我们处理争论最务实的办法。
引入正题:
我们这些作技术的,有一个说好也好,说不好也很不好的习惯,那就是,大都喜欢在某个技术点的讨论中,非要一争高下不可。比如:常见的WIN平台和*NIX平台优劣的争论;C/C++与JAVA或DELPHI的争论;各种设计模式的争论;各种第三方库的争论,凡此种种,不一而足。人人都想通过争论证明,自己用的,就是好的,其他人用的,就是不好的。
呃,这样作,有意义吗?我们作技术的目的,是干什么?就是为了争个高低,炫耀一下吗?即使让你炫耀赢了,对你自己对他人,又有多大的好处呢?即使有好处,你也只不过是过了一下瘾而已,而坏处却是,让你变得更加不务实,更加忘记技术的目的了。
作为一个身在产品中的人,我们作技术,从始至终的目的,都只有一个,那就是:充分利用自己的技术和技能,为产品作贡献,要始终围绕着“又快又好出产品”这个唯一的目标进行。
你在外面跟人家争得春风得意,但在自己的项目中,由于使用了过于复杂的架构,让项目在维护和修改中付出了大量本不该花费的时间资源,即使你在争论中赢了,你在自己的项目中,也是一个彻底的输者。
而自己的项目和产品,往小的说,是你立足公司的根本,往大的说,也是你可以在行业立足的根本,万事,以业绩说话,不要以为你掌握了一些书本知识,一些软工理论,跟大家混了个脸熟,你就是业内资深人士,就会到处受人膜拜了,如果你的项目作得不行,你再怎么吹,这个泡沫也早晚会破掉。
所以,停止争论吧,马上,现在,开始务实的作好自己每天的工作,从每一小处的细节入手,把你的工作效率作得更高,工作质量作得更好,一切从项目和团队的实际出发来选择技术方案,不要人家说什么好你就一定要用人家说的方案,你便是你,你的项目便是你的项目,这就象谈恋爱,那些在旁边给你出谋划策的人,永远没有你更了解你自己的心上人和你自己的真实感觉,他们出的主意,也多半都是馊主意。
从这个角度说,国内技术社区的作用,在我看来,已经被相当扭曲了,讨论问题的,要么就是问题太小白了,只要一GOOGLE就可以出来,要么就是不断地在谈论“大道理”,每天,在坛子里吹得不亦乐乎,很多人可能并不知道,他自己可能都没有在自己的项目实践中用过他自己的那些理论。
我是一个彻彻底底的务实派,再牛的开发思想,再先进的开发理论,到了我这里,如果不符合团队和项目实际,发挥不出它应有的作用,我也会坚决CANCEL掉,因为,我认为,对于一个项目而言,我们最可宝贵,最无法挽回的损失,就是:时间。
一方面,我们希望我们的团队成员,每个人,下到C++底层的细节,上到设计模式,都能了若指掌;而另一方面,我们不得不面对的一个现实是,在绝大多数的团队里,能作到这个程度的人,始终都是一小部分,大多数的团队成员,都只是在某一块自己熟悉的开发领域里,是一个熟练的编码者而已。
所以,我们选择务实的作法,当对架构,模式甚至是代码细节出现争论时,不要过多的陷入进去,当你发现争论不可能有好的结果时,应该果断结束,把决定权交给真正要作这件事的人,让他们自己去选择,在无法确定哪个方案谁好谁差的情况下,我们的作法是,首先,你得让作这件事的人自己觉得爽才行,只有他自己觉得爽了,他才会更主动,也才会更多的在后面考虑改进。
我们作项目,分成三个阶段:
第一步,要尽可能快的出版本,出结果;
第二步,要保障快速高效的运营;
第三步,要尽可能快的维护,修改,发新版本。
“快”,决定了你在市场竞争中的优劣地位。只要你始终在想着“开发快,易运营”这两点,很多的事,该如何作,如何选择,你自然会有个结论。