对于询问必须使用两种等效技术中的哪一种的客户,该如何回答?


14

作为一名自由职业者,我的客户经常问我,他们必须在相似的元素之间进行选择,而这两个元素都不比另一个要好。例子:

“我需要电子商务网站使用PHP还是ASP.NET?”

“我需要在Cloud中托管此普通Web服务还是使用普通托管服务?”

“哪个对我的新网站更好:MySQL或Oracle?”

等等

根据精确的指标和研究,最多可能有1%的情况与选择相关,并且确实有客观的理由选择一种选择。在其他所有情况下,都没有关系。这完全是完全不相关的,或者是因为没有任何影响¹,或者是因为这些影响太小而无法考虑²,或者最终是因为无法预测这些影响³。

如果您知道一件事而不是另一件事,那么对这些问题的答案很简单:

“您可以使用C#或Java编写应用程序,这两种情况在您的情况下可能是等效的。请注意,我是C#开发人员,因此,如果您选择Java,我将无法处理您的项目,因此您需要寻找另一个自由职业者。”

当您同时了解这两种技术时,您将无法回答。

在这种情况下,如何向客户说明他所提出的问题受到激烈的争论,并且对他的项目没有实际影响?

换句话说,如何解释您出于与人力资源相关的原因而选择使用一种技术而不是等效的技术,而不会给人以专业或不在乎项目的印象?


¹举例:从性能角度看,MySQL比Oracle更好(更差吗?),因为个人网站每天访问两个人,哦,让我们乐观一点?

²示例:对于一个给定的项目,我被问到Windows Azure托管是否比在著名的ASP.NET托管提供商上托管同一应用程序便宜。费用显示完全相同。

³示例:您的客户对将来的应用程序有一个想法(这个想法本身非常含糊)。没有商业计划,没有要求,什么都没有。只是一个主意。系统会询问您Java是否比该应用程序的C#更好。你怎么回答

Answers:


36

如何解释您出于与人力资源相关的原因而选择使用一种技术而不是一种等效技术,而又不会给人以专业或不在乎项目的印象?

好。您只是这样说:

根据该项目的要求,技术X和技术Y同样适合该任务,因此没有考虑技术因素。

更容易找到具有所选技术(或问题领域)知识的人才,这就是选择该技术的原因。

或者-就本项目而言,使用技术Y将更具成本效益。

照原样讲。


您可能想找到客户可以关联的类比。诸如此类-为了从欧洲飞往美国,您可以乘坐波音747或空中客车380。哪个重要?只要客户到达那里并且技术同样适合要求,就不对客户不利:)

选择了哪一个?航空公司经营的任何一家...


13
+1对错别字-波音747听起来很有趣。我正在描绘一个巨大的弹簧
娃娃

4
Boing 747的+1(好吧,还有“才华横溢的人们”部分)-我想到的是在儿童生日聚会上偶尔看到的那些充气城堡
Izkata 2012年

1
如果我是客户,我可能会回答“我不知道-但我想飞行员会这么做。”
psr 2012年

7

我认为您的决定在很大程度上是任意的,值得质疑。我同意您不想在您举行数月的委员会会议时陷入分析瘫痪的状况,但这值得您考虑。从较高的角度来看,技术选择很少是武断的。这是业务战略的关键,因为它会极大地影响公司将来的发展方向,并且是开发人员在整个决策过程中指导公司的角色。

该技术的细节,例如MySQL对B树的使用与Oracle的使用,或者PHP语法与ASP.NET的使用,对于程序员之间的宗教辩论无疑是开放的,并且确实会引起您的喜好。由于与您自己相似的顾问很容易产生根本不同的意见,因此这些事情确实相当武断。而且,众所周知,任何具备给定技术能力的开发人员无论如何都会做得很好。因此,对于企业而言,更重要的问题不是语言细节,而是更高层次的问题,例如:

  • 什么是部署方案?某些技术可以采用更轻松的方法,尤其是如果已经有像Heroku这样的云托管服务。一些公司会喜欢这样,其他一些公司则需要托管自己,拥有更多的系统管理员,等等。

  • 项目的寿命和范围是什么?例如,PHP可以比Java容易地启动项目,但是多年来很难扩展和维护。

  • 该技术将吸引什么样的开发商?对于Java,您更有可能获得具有企业经验的人员。对于PHP,您可能会获得更多的交叉设计器或系统管理员类型。对于Node.js,您将获得更多的前端和实验性开发人员,对于Haskell,学术人群等。我知道所有定型观念,但它为企业提供了一些线索。这些小组中的每一个都有自己的文化,对薪资和工作环境的期望以及彼此以及与组织其他成员的合作方式。

  • 开发人员的可用性如何?假设开发人员必须亲自参与,则某些区域具有特定的生态系统。在一个充满初创企业的城市中,将会有很多Ruby on Rails和PHP开发人员;在一个充满政府部门的城市中,将会有很多Java / MS等。世界上绝大多数的编程语言必须仅在此基础上排除。

这些只是几个例子。哪些因素最重要取决于情况,但是这里的要点是,公司需要自觉采用适合其战略,文化和环境的技术。


4

我将为客户提供使用该技术的可行性的客观比较矩阵。例如:

“哪个对我的新网站更好:MySQL或Oracle?”

在您的矩阵中:

  • 成本
  • 在室内使用
  • 可扩展性
  • 经验/熟悉
  • 可支持性
  • 工装
  • 已在使用中(已部署)
  • 发展便利
  • 开发熟悉

等等。

根据矩阵中的项目数,一个应该快速得出分数,并确定使用该技术与另一个技术的可行性。在某些情况下,MySQL可能更好,而在其他情况下是Oracle。


4

用他们理解的术语来解释它-金钱。您可以告诉他们您选择了X而不是Y,因为即使它们都适合该项目,您对X的了解也要比Y更熟悉。因此,当他们在使用X比使用Y编写。


1
是的,答案没有错。如果您比Java更好地了解C#,则可以认为使用C#会更有效率。
安迪

2

“你宁愿开一辆福特还是雪佛兰?” 我会抛出一个驾驶类比,看看他们是否能接受这个问题不会解决的想法。类似的问题可能是,“汉堡或披萨哪个更好?” 在不增加更多约束的情况下,这个问题可以提供多种可能的答案。

另一种看待这种情况的方式是,问清楚为什么知道这一点很重要,并根据可能发现的其他材料(通过澄清问题)找到更好的答案。有人可能会想:“用来建立我的电子商务网站的是什么?” 尽管他们宁愿尝试给人留下深刻的印象,并用几个时髦的词来形容。


8
福特/雪佛兰和汉堡/比萨的例子似乎反应迟钝。这样的回应会让我很生气。
罗伯特·哈维

4
答案总是披萨;)
Izkata 2012年

2
@Izkata:...被福特吃了。
FrustratedWithFormsDesigner 2012年

2
注意,福特与雪佛兰在某些方面可能是一场宗教辩论。一个人可能会受伤。
Wyatt Barnett'4年

2

已经有很多好的回应,但是我没有注意到的一件事是:这是您充分公开的绝佳机会。例如,

“现在我主要依靠技术<foo>谋生,所以我并不完全公正。但是...”

我真的认为您通过这种表述获得了信誉。


1

在极少数情况下,一种技术明显不如另一种技术-“我应该用Python还是Cobol开发我的网站?”,但大多数情况下,这是课程的障碍。

我使用一种方法来确定哪种技术适合客户:-

  1. 他们目前使用什么?通常,更多的相同总比新的要好。
  2. 当前的技术是否有新项目将超出的任何限制?例如,他们使用SQLite,但是现在他们希望100个用户进行并发更新。
  3. 如果当前的技术不适合,则在最受欢迎的开源和商业市场领导者之间进行选择。
  4. 市场领导者是否明显优于开源产品?当前项目是否存在重大差异?
  5. 选择开源或商业应用后,最好选择两个最接近的竞争产品,看看它们是否更合适。

大多数情况下,选择会在第二步停止。如果客户使用Acme Widgets,有使用Acme Widgets的经验,有一套标准,围绕Acme Widgets建立的变更控制和管理程序,并且Acme Widgets可以胜任,那么Acme Widgets是必经之路-即使Ezee DohDahs在这项任务上技术上更好!

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.