在“正确的工作工具”和熟悉程度之间取得平衡


19

因此,在选择用于项目的语言时,在理想的世界中选择语言是因为它是完成工作的正确工具。但是,我通常更喜欢使用一种我会流利的语言,而不是我必须学习的一种语言或仅是一种对话性的语言。当然,语言流利性还要求您了解该语言中适用的库。仅仅因为我真的很喜欢像Java这样的通用语言并不意味着我应该一直使用它,但是同时这并不意味着我每次都要进行一些文本处理时都应该使用Perl之类的东西。如何在这里找到余额?

Answers:


12

哇,当脱离理论世界而进入生产世界时,这是一个非常困难的问题。

理论上

简单。始终使用最好的工具完成工作,并了解您的需求。

在实践中

您不仅需要掌握流利程度,还需要回答许多其他业务问题:

  • 购买“正确工具”的费用
  • 支持此操作的成本-人们需要接受培训
  • 学习成本曲线
  • 与其他产品的集成成本(现在和将来)
  • ...等等

在理论之外,对您的技术选择有严重的影响。

现在,我并不是说不要选择正确的工具-只是要确保正确的工具能够在成本方面实现收支平衡。

如果这是个人项目,请始终使用“正确”工具-因此,当您在业务环境中遇到此决定时,您可以进行更明智的致电。


2
从理论上讲这不是“简单的”。你到底是什么最好的真正的意思?有什么标准?
whatsisname 2011年

+1:综合所有因素后,正确的工具可能最终不会成为最佳工具-很少有人会得到这种工具,选择最佳工具并承受后果。
史蒂文·埃弗斯

1
@whatsisname最好是主观的,并取决于您的环境,预算,时间范围...-但是按照家庭项目的精神,应尝试设计旨在解决该问题的技术。例如,Erlang用于分布式,Perl用于文本操作-然后您可以做出自己的判断。
Stephen Bailey

我越来越确定的一件事是Java基本上不是适合该工作的工具。有很多更好的选择。不要误会我的意思。这是20年代的一门伟大的语言,许多人已经习惯了它,但对我来说,它不再是我工作的最佳工具(但在某些情况下,我仍然不是最好的工具)。不是为了修补,不是为了大数据,也不是为了网络。
dbow


3

除了作为业务问题之外,这实际上是无法解决的。但是,很多业务问题只是看短期数字而引起的,这是一个错误。

我的一般做法:

  1. 如果是小事或短期事情,请始终使用熟悉的工具编写。
  2. 如果这是一件长期的大事,那么请考虑学习新工具的成本-收益权衡。
  3. 如果不确定,请将其视为短期事件,直到有证据表明这是长期事件为止。然后,再次查看该决定。

当您考虑成本和收益时,要记住三件事:第一,匆忙的人们往往会改变未来。第二,维护成本是任何成功系统成本的绝大部分。第三,好的开发人员喜欢学习东西,让开发人员满意是一项长期的投资。


1

好问题!正如whatsisname在回答中所说的那样,“对熟悉度的重视程度不够。” 不同的工具,不同的架构,不同的语言可能是很多比你习惯用什么好,你还是有很多与它第一次就少生产,你学会了绳索。

我已经在数字代理商中担任ASP.NET开发人员多年,在那里我们混合了大型项目,小型项目,紧凑型项目,填充良好的项目等。我们尝试做些什么,以扩展我们的技能,我们正在寻找“软目标”,没有痛苦而又紧迫的最后期限的较小项目,并利用它们作为机会使用可能更好的新技术。.NET 2.0、3.5、4.0,ASP.NET MVC,Linq to SQL,实体框架-所有这些,我都是在这样的项目中第一次使用。

如果您可以把握这样的机会,那么希望您会准备好更多的选择,以选择正确的工具,而不会感到陌生。就像在Julio的示例中一样:他们找到了一个目标,可以在其中添加Ruby,现在,他们可以在Java和Ruby之间进行选择。

但是,如果最后期限短而扎实且项目很重要,我建议您坚持使用熟悉的工具。可能更适合一些不同的东西,但是在类似的项目中,一切都与风险有关。


1

这取决于几件事:

1.您在学习新语言或工具方面有多出色。

如果您是快速学习者,则学习新语言或工具的障碍会更低。这使您有机会向工具箱添加另一个工具。

2.如何使语言/工具独立于工作环境。

如果您的工作流程高度依赖于工具,那么学习不同语言的障碍就会更高。如果您迷上了特定的IDE,那么切换语言所涉及的不仅是学习语言,还因为编辑文本肯定会让您感到沮丧。

使用vim或emacs的人没有此问题。他们所要做的就是学习新语言。

3.商业现实

学习新工具/语言需要时间。那段时间是有代价的。但是,该成本有可能成为一项投资,其回报率要高于初始支出。而且,笨拙的解决方案通常需要更长的时间来实施,并且难以维护。如果它比一个小项目大,并且我现有工具箱中的工具似乎都不适合该问题,那么我将研究哪种工具适合该问题。我还投资了一个适合通才的环境,学习使用vim作为我选择的编辑器。

另一件事-两点之间的最短距离是多少?如果别人写的东西几乎可以完成我想做的事情,通常最快的方法就是根据我的需要进行修改。


0

如果您对一种新语言感到好奇,并且您(和企业)负担得起,为什么不给自己几个星期到一个月的时间来探索呢?

这就是我学习红宝石的方法。我的编码合作伙伴在Java方面有7年的经验。我有11年的Java经验。我们每个人都不了解红宝石,只是想尝试一下。

我说服他和公司的其他成员尝试红宝石一个月(这将是一个6-8个月的项目)。最坏的情况是,我们将从这段时间开始使用Java。

幸运的是,一周后我们被迷上了,结果还好。也许您可以尝试类似的方法?看看您是否可以使用其他语言从头开始构建某些东西,但向企业明确说明您这样做的原因,以及至少同样重要的是,万一实验失败,计划B是什么。


0

对于这个问题,显然没有一个单一答案可以适用于所有情况。但是,这是我还没有提到的一个方面。如果您是开发人员,则还应考虑自己的适销性。如果为您的项目选择了语言X,履历表将如何显示?选择一种您不熟悉的语言是一个好主意,这样您就有理由去学习,扩大自己的知识视野,并使自己的技能对未来的雇主更具吸引力。



0

我自己的版本是“使用适合我的正确工具”来完成工作。“可用”意味着我能够使用它,而不仅仅是我可以购买/获取编译器和/或运行时。

在几乎任何现实生活中,给定问题,您解决问题的时间都非常有限。我不相信你能在短时间内真正学习一种新语言。学习一种语言意味着实际阅读书籍,阅读别人的代码,了解它的工作方式以及其背后的哲学。可以只是在网上阅读一本教程(这是一个很好的起点),然后进行黑客攻击。但这将导致可怕的代码,您可能最好在短得多的时间内用您知道的语言编写更好的代码。

尽管有“正确的工作工具”的名言,但大多数流行的语言实际上都是通用的。他们可能在某些领域有优势,在其他领域不如其他领域,但是他们可以完成大部分工作。实际上不懂某种语言意味着您无法使用该工具。

我并不是说只学习一种(或什至两种或三种)语言并将其用于所有项目,而不学习其他任何东西。重要的是学习其他语言,以获取更多要添加到工具箱中的工具。但是面对一个问题,最好使用已知的工具,而不要使用不熟悉的技术来增加后顾之忧。但是请继续学习其他语言,以便下次选择更加容易。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.