大规模团队协作和编程语言还有关系吗? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
ayanamist
V2EX    问与答

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

  •  
  •   ayanamist 2011-07-06 20:46:55 +08:00 6662 次点击
    这是一个创建于 5214 天前的主题,其中的信息可能已经有所发展或是发生改变。
    今天和一个推友讨论,他说Python不适合大规模团队协作,Java适合。举出的例子是淘宝就是用Java做的,美团也从Python转到Java了。我就奇怪了,这个逻辑是什么情况?
    难道大规模团队协作性和语言还有一定的关联性吗?具体下来,Python就没有大规模团队协作性,Java就有了?
    有谁能和我解释一下吗?
    19 条回复    1970-01-01 08:00:00 +08:00
    Livid
        1
    Livid  
    MOD
    PRO
       2011-07-06 21:00:59 +08:00
    Python 里组织大型项目的方式有很多种,目前并没有哪一种特别主流。

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

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

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

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

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

    PHP,Python,Ruby等等都是比较优秀的语言,但他们都有个共同不足,缺乏最佳实践模式和指导,可能Ruby会好一点,在这些领域,缺乏真正能够指导团队协作的领导者和架构师,倒是能解决问题的人不少,这会导致一个很严重的问题,就是缺什么补什么,最后代码失控,这在大型团队协作中非常常见的,淘宝支付宝今天还有很多代码是5年前写的,核心代码非核心代码都有很多,但是在PHP,Python,这样的领域基本上见不到
    muxi
        10
    muxi  
       2011-07-07 00:05:14 +08:00
    我完全赞同@linnchord 所说的,这是个管理问题,不是技术问题,从语言和技术上来说,并不存在评判好坏的标准,没有语言可以通吃,每种语言都是针对特定的应用场景设计出来的,虽然在出来之后经过很多的改造以适应更多的领域和环境,但他们更适合在自己所擅长、表现得最优异的领域去工作,所以不存在技术上的评判好坏
    那么只能去从其他的纬度上去比较和评判,总的来说,适合的就是最好的,楼主说的是大型团队,当然这个理解因人而异,而我所理解的大型团队应该超过100个coder,这个时候比拼的不是语言、不是是否够性感,够酷,也不是比拼的够高效,而是效率,不是程序效率,而是团队协作效率,沟通成本,以及解决方案的完备程度和风险控制,无论你承认或者不承认,Java在这个领域拥有最多的规范和大团队管理实践,拥有最完备的解决方案,拥有最多的咨询人才,还有庞大的市场人才储备,这就是优势
    ayanamist
        11
    ayanamist  
    OP
       2011-07-07 00:31:21 +08:00
    @muxi @linnchord 谢谢两位的解答~
    avatasia
        12
    avatasia  
       2011-07-07 00:43:15 +08:00
    python还没做到从技术框架转到工厂框架
    prajnamas
        13
    prajnamas  
       2011-07-07 00:57:14 +08:00 via iPhone
    跟人有关,跟技术无关。
    reus
        14
    reus  
       2011-07-07 01:43:09 +08:00
    所以想真正享受技术的快感,就不要去做企业级开发。就像想在江湖快意恩仇的话,那就别去参军了,那是攻城略地加官进爵的路子,不同的
    dreampuf
        15
    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
        16
    muxi  
       2011-07-07 11:56:09 +08:00   1
    @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
        17
    muxi  
       2011-07-07 12:00:42 +08:00
    顺便说一下,我不是Java程序员,虽然我了解Java(精通不敢说),过去两年我主要的工作时间还是在写PHP,Python
    我之所以要说出来,是想说,我推荐Java并不是出自于自己从事这个的私心,尽可能以公正的眼光去评判
    saharabear
        18
    saharabear  
       2011-07-07 12:02:32 +08:00
    Java所谓的大规模上,的确是有优势的。
    kgen
        19
    kgen  
       2011-07-11 04:32:11 +08:00
    回答这个问题前,先想清楚为什么需要大规模团队协作?20个骨灰级开发者的产出>2000个平庸开发者的产出。
    如果你确定需要大量平庸开发者,那么选一个主流语言,招聘,项目管理,代码风格,测试等等都标准化得多,自然就适合大团队了。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1057 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 31ms UTC 18:32 PVG 02:32 LAX 11:32 JFK 14:32
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86