<p>我认为我不能解决你的问题。你对工具、方法和流程的选择更受社会约束的影响,比如你的老板想要什么,你想要什么,然后是技术优势。这不一定是坏事。在</p>
<p>简单的回答是“使用最能让开发者满意的东西”。如果每个人都喜欢Python而不是Perl,不管出于什么原因,他们可能会用Python完成更多的工作。如果他们更喜欢Ruby而不是Python,那也是一样。在</p>
<p>作为您选择的一部分,您需要评估以下几点:</p>
<ul>
<li>开发人员已经知道了什么?在</li>
<li>他们最愿意学什么?在</li>
<li>你的团队每周能花多少时间学习新事物(例如午餐研讨会、正式课程等)?在</li>
<li>社区中大多数人使用什么来使用您需要支持的工具?例如,Fisheye有一个javaapi,以及一些Perl和Python的REST示例。如果你在写鱼眼扩展,Java似乎是其中的赢家。如果你只是在访问鱼眼数据,任何语言都可以使用其余的东西。在</li>
<li>你的代码库已经有多少了?你可以替换什么,你需要继续支持什么?我发现很多公司无法回答这个问题,因为每个开发人员似乎都添加了两种他们没有告诉任何人的新技术。:)</li>
<li>您需要支持哪些平台?有些语言有特定于平台的问题,我指的不仅仅是Windows和Unix。您是否有必须支持的旧硬件?你的工具能用吗?在</li>
<li>你能为公司的其他部分带来多少好处?其他团队在用什么?在</li>
<li>提倡一种工具的人是否对它了如指掌?我问<a href="https://stackoverflow.com/questions/282329/what-are-five-things-you-hate-about-your-favorite-language">What are five things he hate about your favorite language?</a>如果人们不能说出五个与他们的语言或工具错误的有效的东西,他们就没有足够的经验。在</li>
</ul>
<h2>更长的答案</h2>
<p>人们倾向于把这一点简化为一种技术性的争论,因为他们害怕承认自己的偏见,也不敢审视自己为什么会这样想。您的老板可能会喜欢bash和Perl,因为这是他开始工作时所做的大量工作。您可能喜欢Python,因为您对Python的工作方式有着个人的亲和力。我喜欢Perl,因为我喜欢它的灵活性和数据量。就像任何社会环境一样,不同的人会被不同事物的不同部分所吸引。仅仅因为你喜欢巧克力并不能让香草变邪恶。我可以给你很多很好的论据,为什么Perl是有用的,但这并不意味着其他东西不能给你同样的价值。在</p>
<h2>我们用脚本解决了什么问题?在</h2>
<p>你必须自己回答这个问题。:)</p>
<h2>我们是否会从我们团队的公共功能库中获益,或者我们的大多数项目更孤立?在</h2>
<p>这在Python、Perl、Ruby、Java以及几乎任何您可能选择的语言中都是一件好事。我认为你的这部分要求是语言不可知论的。不管你选择哪一个,你可能都想这么做。在</p>
<h2>期望我的同事学习什么是合理的?在</h2>
<p>一个好的开发人员应该能够使用几种不同的语言,至少达到学徒水平。这些语言应该包括那些对人们如何表达问题有着巨大不同假设的语言,例如set{smalltalkperlclispjava}。在</p>
<p>我雇佣和合作过的最好的开发人员总是希望为工作使用正确的工具,而不是让工作适合工具。他们可能有他们最喜欢的语言,但他们并不抱怨(太多)使用一种更有意义的工具。在</p>
<p>然而,许多“开发人员”似乎认为,他们得到报酬是为了玩他们最喜欢的工具。你需要把他们转变成那些认为自己有工具箱的人创造商业价值的问题。在</p>
<p>记住,你永远不会停止学习。作为一个开发者,你不必选择一种语言,然后用你的生命捍卫它,在疾病和健康等方面抛弃所有其他语言。优秀的开发人员将继续跟踪新技术并评估它们对任务的有用性。仅仅因为你选择了一种工具而不是另一种工具,并不意味着你会停止关注。在</p>
<p>不管你选择什么,总有人会抱怨的。不要寻找让每个人都快乐的解决方案。除了摆脱那些不高兴的开发人员外,没有一个是可以的。在</p>
<h2>什么语言最容易开发和修改?在</h2>
<p>一个精通任何语言的熟练实践者都会认为他所选择的语言是最容易开发、修改和维护的。不熟练的实践者往往把问题归咎于语言和工具。有些语言有更陡峭的学习曲线,有些语言有更大的收益。一个人对眼前的满足的容忍是一个重要因素。在</p>
<p>也就是说,不同的语言发展了不同的文化和不同的工具集。Perl的人喜欢vi或emacs,Ruby的人喜欢TextMate,Java的人喜欢Eclipse或IntelliJ。这并不总是正确的,但是围绕工具发展的文化通常比工具的技术细节更重要。如果您的开发人员喜欢某个特定的<em>类型的</em>工具,他们可能会喜欢这种语言,这种语言的文化是围绕这种工具构建的。在</p>
<p>有些过程和工具需要更多的时间来适应或需要更多的教育,但如果使用得当,它们会有更大的优势。其他工具可以让您更快地开始工作,但可能不会为您提供一条通向更大、更大目标的道路,例如跨团队开发。但是,诀窍是不要对工具进行编码,这样就不会陷入任何特定的工具集中。在</p>