V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
ayanamist
V2EX  ›  问与答

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

  •  
  •   ayanamist · 2011-07-06 20:46:55 +08:00 · 6024 次点击
    这是一个创建于 4677 天前的主题,其中的信息可能已经有所发展或是发生改变。
    今天和一个推友讨论,他说Python不适合大规模团队协作,Java适合。举出的例子是淘宝就是用Java做的,美团也从Python转到Java了。我就奇怪了,这个逻辑是什么情况?
    难道大规模团队协作性和语言还有一定的关联性吗?具体下来,Python就没有大规模团队协作性,Java就有了?
    有谁能和我解释一下吗?
    19 条回复    1970-01-01 08:00:00 +08:00
    Livid
        1
    Livid  
    MOD
       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   ·   我们的愿景   ·   实用小工具   ·   5342 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 195ms · UTC 07:15 · PVG 15:15 · LAX 00:15 · JFK 03:15
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.