Answers:
哇,当脱离理论世界而进入生产世界时,这是一个非常困难的问题。
理论上
简单。始终使用最好的工具完成工作,并了解您的需求。
在实践中
您不仅需要掌握流利程度,还需要回答许多其他业务问题:
在理论之外,对您的技术选择有严重的影响。
现在,我并不是说不要选择正确的工具-只是要确保正确的工具能够在成本方面实现收支平衡。
如果这是个人项目,请始终使用“正确”工具-因此,当您在业务环境中遇到此决定时,您可以进行更明智的致电。
我认为对熟悉度的评价不足。您的熟悉程度会很好地影响正确的工具。您必须使用该工具来完成您的项目。此外,毫无疑问,使用自己喜欢的东西可能会超出其适用性的任何缺点,因为您会为完成工作而更加兴奋,并且会获得更好的结果。
http://headrush.typepad.com/creating_passionate_users/2006/08/when_the_best_t.html
好问题!正如whatsisname在回答中所说的那样,“对熟悉度的重视程度不够。” 不同的工具,不同的架构,不同的语言可能是很多比你习惯用什么好,你还是有很多与它第一次就少生产,你学会了绳索。
我已经在数字代理商中担任ASP.NET开发人员多年,在那里我们混合了大型项目,小型项目,紧凑型项目,填充良好的项目等。我们尝试做些什么,以扩展我们的技能,我们正在寻找“软目标”,没有痛苦而又紧迫的最后期限的较小项目,并利用它们作为机会使用可能更好的新技术。.NET 2.0、3.5、4.0,ASP.NET MVC,Linq to SQL,实体框架-所有这些,我都是在这样的项目中第一次使用。
如果您可以把握这样的机会,那么希望您会准备好更多的选择,以选择正确的工具,而不会感到陌生。就像在Julio的示例中一样:他们找到了一个目标,可以在其中添加Ruby,现在,他们可以在Java和Ruby之间进行选择。
但是,如果最后期限短而扎实且项目很重要,我建议您坚持使用熟悉的工具。可能更适合一些不同的东西,但是在类似的项目中,一切都与风险有关。
这取决于几件事:
1.您在学习新语言或工具方面有多出色。
如果您是快速学习者,则学习新语言或工具的障碍会更低。这使您有机会向工具箱添加另一个工具。
2.如何使语言/工具独立于工作环境。
如果您的工作流程高度依赖于工具,那么学习不同语言的障碍就会更高。如果您迷上了特定的IDE,那么切换语言所涉及的不仅是学习语言,还因为编辑文本肯定会让您感到沮丧。
使用vim或emacs的人没有此问题。他们所要做的就是学习新语言。
3.商业现实
学习新工具/语言需要时间。那段时间是有代价的。但是,该成本有可能成为一项投资,其回报率要高于初始支出。而且,笨拙的解决方案通常需要更长的时间来实施,并且难以维护。如果它比一个小项目大,并且我现有工具箱中的工具似乎都不适合该问题,那么我将研究哪种工具适合该问题。我还投资了一个适合通才的环境,学习使用vim作为我选择的编辑器。
另一件事-两点之间的最短距离是多少?如果别人写的东西几乎可以完成我想做的事情,通常最快的方法就是根据我的需要进行修改。
我想说,对语言的熟悉也是“成为工作的正确工具”的一个方面。考虑到我完全不了解该语言,我无法想象Prolog将是适合我工作的工具。
我自己的版本是“使用适合我的正确工具”来完成工作。“可用”意味着我能够使用它,而不仅仅是我可以购买/获取编译器和/或运行时。
在几乎任何现实生活中,给定问题,您解决问题的时间都非常有限。我不相信你能在短时间内真正学习一种新语言。学习一种语言意味着实际阅读书籍,阅读别人的代码,了解它的工作方式以及其背后的哲学。可以只是在网上阅读一本教程(这是一个很好的起点),然后进行黑客攻击。但这将导致可怕的代码,您可能最好在短得多的时间内用您知道的语言编写更好的代码。
尽管有“正确的工作工具”的名言,但大多数流行的语言实际上都是通用的。他们可能在某些领域有优势,在其他领域不如其他领域,但是他们可以完成大部分工作。实际上不懂某种语言意味着您无法使用该工具。
我并不是说只学习一种(或什至两种或三种)语言并将其用于所有项目,而不学习其他任何东西。重要的是学习其他语言,以获取更多要添加到工具箱中的工具。但是面对一个问题,最好使用已知的工具,而不要使用不熟悉的技术来增加后顾之忧。但是请继续学习其他语言,以便下次选择更加容易。