大规模团队协作和编程语言还有关系吗?

2011-07-06 20:46:55 +08:00
 ayanamist
今天和一个推友讨论,他说Python不适合大规模团队协作,Java适合。举出的例子是淘宝就是用Java做的,美团也从Python转到Java了。我就奇怪了,这个逻辑是什么情况?
难道大规模团队协作性和语言还有一定的关联性吗?具体下来,Python就没有大规模团队协作性,Java就有了?
有谁能和我解释一下吗?
6031 次点击
所在节点    问与答
19 条回复
Livid
2011-07-06 21:00:59 +08:00
Python 里组织大型项目的方式有很多种,目前并没有哪一种特别主流。

而 Java 的大型项目,长得都差不多,作为语言开发者的 Sun 也在不停地制造和推进各种规范。
chloerei
2011-07-06 21:33:18 +08:00
不知道

高效程序员永远不知道为什么平庸程序员喜欢绕远路,而且能找很多理由
pepsin
2011-07-06 21:35:43 +08:00
可能是java使用的人更多吧,比较好招人
blackbird
2011-07-06 21:45:11 +08:00
python没有静态检查 没有类型安全 只能用单元测试而且覆盖率要很高
虽然我讨厌java
bigbrother
2011-07-06 22:01:17 +08:00
用java代表平庸?ORZ
kongruxi
2011-07-06 22:06:01 +08:00
像Ruby那样,太magic,个人用就很爽,但因为每个人写出来的程序风格可以相差很大,相比较Java来说,真的没那么适合大规模团队协作
reus
2011-07-06 22:21:30 +08:00
军爷和侠客的区别
linnchord
2011-07-06 22:23:01 +08:00
这不是技术问题而是管理问题。

一种理念,认为人的本性是消极的懒惰的,总是会逃离工作,因此需要体制、流程上的层级划分,需要管理,需要严格的流程和约束来控制,因此象java这种严格的类型系统具备规范技术体系的平台是最好不过。

另一种理念,认可人的智力和创造力,认为人是具备自我调节和激励能力,认为人们会努力工作并且享受工作、享受团队、享受创造的过程,因此团队会致力于减少甚至消除层级的压制,致力于鼓舞团队伸张自我向团队目标迈进--当然这和采用什么技术没有必然联系,大家可以各展所长。

不过话说回来,这也并不是说由上层管理者决定的,而是团队的全体和团队的生存环境共同构建的。
muxi
2011-07-06 23:55:51 +08:00
从我的经验来看,如果是大规模协作,我更愿意选择Java,理由当然那有很多,最主要的理由是,Java有大规模协作的规范和基础,拥有最庞大的社区和最完备企业级设施,从IDE到管理的最佳实践都是非常完善

PHP,Python,Ruby等等都是比较优秀的语言,但他们都有个共同不足,缺乏最佳实践模式和指导,可能Ruby会好一点,在这些领域,缺乏真正能够指导团队协作的领导者和架构师,倒是能解决问题的人不少,这会导致一个很严重的问题,就是缺什么补什么,最后代码失控,这在大型团队协作中非常常见的,淘宝支付宝今天还有很多代码是5年前写的,核心代码非核心代码都有很多,但是在PHP,Python,这样的领域基本上见不到
muxi
2011-07-07 00:05:14 +08:00
我完全赞同@linnchord 所说的,这是个管理问题,不是技术问题,从语言和技术上来说,并不存在评判好坏的标准,没有语言可以通吃,每种语言都是针对特定的应用场景设计出来的,虽然在出来之后经过很多的改造以适应更多的领域和环境,但他们更适合在自己所擅长、表现得最优异的领域去工作,所以不存在技术上的评判好坏
那么只能去从其他的纬度上去比较和评判,总的来说,适合的就是最好的,楼主说的是大型团队,当然这个理解因人而异,而我所理解的大型团队应该超过100个coder,这个时候比拼的不是语言、不是是否够性感,够酷,也不是比拼的够高效,而是效率,不是程序效率,而是团队协作效率,沟通成本,以及解决方案的完备程度和风险控制,无论你承认或者不承认,Java在这个领域拥有最多的规范和大团队管理实践,拥有最完备的解决方案,拥有最多的咨询人才,还有庞大的市场人才储备,这就是优势
ayanamist
2011-07-07 00:31:21 +08:00
@muxi @linnchord 谢谢两位的解答~
avatasia
2011-07-07 00:43:15 +08:00
python还没做到从技术框架转到工厂框架
prajnamas
2011-07-07 00:57:14 +08:00
跟人有关,跟技术无关。
reus
2011-07-07 01:43:09 +08:00
所以想真正享受技术的快感,就不要去做企业级开发。就像想在江湖快意恩仇的话,那就别去参军了,那是攻城略地加官进爵的路子,不同的
dreampuf
2011-07-07 02:05:06 +08:00
无关.完全是团队管理问题.而且淘宝也不完全都用Java.PHP,Ruby都用着呢.

Java 在这个年代,丧失了JVM的话,根本一文不值.繁杂的语法以及模式,解不开的生产力.

@muxi 我不知道Facebook算不算最佳实践,PEP算不算最佳指导.为什么只看到淘宝,而看不到很多维持服务器上基本运行环境的Python.
我见过四年经验的Java程序员宁可写出23个省会判断的if...else...也不愿意使用table dirve的顽固.大多时候都是在不了解语言本身,框架本身,JVM本身,网络,操作系统下侃侃而谈的"架构","框架".
当然,这些许是极少数部分,但是无可否认,好的programer终究是少数的,而所谓"庞大的市场人才储备",我宁可当做笑话来听,这就和永远的敌人"邻居家小孩"一样,"成绩好,不谈玩,孝顺....".哪怕即便有如此多的人才,也要他待业或有意向,还要公司够水准,免得他们屈就,福利还要看着给.
而更多的是为了曾经的"高薪职业"而培养出来的功利Javaer.
muxi
2011-07-07 11:56:09 +08:00
@dreampuf 我认为你说的都是对的,每种选择后面都有背景的,我相信你是个人才,能控制好PHP,Ruby,Python 这样的大规模协作的团队效率。作为一个公司或者从老板的角度来说,这是一种冒险,如果你未能控制整个局面结果会非常难堪,当然做任何选择都会有风险,只不过是风险大小的问题,你所列举的例子都是凤毛麟角,忽略大部分都很悲惨的例子,Facebook现在还用着PHP并不是因为PHP本身支持这么庞大的项目,而Facebook也为此付出了巨大的代价,编译成HipHop是迫不得已,twitter也为此付出过代价,而Java这么多年,Java本身确实有很多诟病,哪种语言没有?PHP 做个GC都做不好,Python混乱了这么多年,Ruby那些Magic的东西真的讨人喜欢?Java是相对规范,相对发展比较完善,相对比较容易协作的一种模式,其实现在很多项目转向Java更多是因为Java的解决很成熟,不需要自己去造轮子,Java的管理人员更容易找,这个行业发展的更成熟,仅此而已,
我认为其他领域一直在发展,@dreampuf 这种人是使这些领域发展的动力,应该鼓励和支持,作为一个风险厌恶者,我更倾向Java

附上两个Facebook使用PHP的疑问:
http://www.quora.com/Why-hasn-t-Facebook-migrated-away-from-PHP
http://www.quora.com/Do-Facebook-engineers-enjoy-programming-in-PHP
muxi
2011-07-07 12:00:42 +08:00
顺便说一下,我不是Java程序员,虽然我了解Java(精通不敢说),过去两年我主要的工作时间还是在写PHP,Python
我之所以要说出来,是想说,我推荐Java并不是出自于自己从事这个的私心,尽可能以公正的眼光去评判
saharabear
2011-07-07 12:02:32 +08:00
Java所谓的大规模上,的确是有优势的。
kgen
2011-07-11 04:32:11 +08:00
回答这个问题前,先想清楚为什么需要大规模团队协作?20个骨灰级开发者的产出>2000个平庸开发者的产出。
如果你确定需要大量平庸开发者,那么选一个主流语言,招聘,项目管理,代码风格,测试等等都标准化得多,自然就适合大团队了。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/15411

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX