在很少的时间内如何做出重要的技术决策


36

我有2天的时间对公司要使用的工具和平台做出非常认真的决定,以便将其WPF应用程序移植到Linux / Android / iOS。

显然,我可以指出,我的前辈说,只有2天时间不足以阅读所有可能的选择,以及尝试,制作原型等内容。我可以说,这对我没有帮助,我有2天的时间,并且2天后将做出决定。期。

一方面,我感到沮丧,另一方面,我认为这种方法有一定道理,否则,我很容易陷入很多下载的SDK,框架,API,博客文章等之中,沉迷于做基准工作,运行示例并忘记了过程的全部目的。

仍然我担心,错误的决定将使公司付出沉重的代价。那么,您认为做出此类决定的“理想”过程是什么?


4
在某处写上决定几乎不可能在两天内做出的地方。然后尝试做出一个不太糟糕的决定,并证明您的决定不是最好的。换句话说,遮住你的屁股。可以考虑Qt5。或者使您的产品成为HTML5 Web应用程序(可能使用某些HTTP服务器库,例如libonion或FastCGI)
Basile Starynkevitch 2015年

2
@gnat我不同意,这是一个主观的问题,即使存在多个可能的答案,我们还是可以从他人的经验中学到的。
Flot2011 2015年

9
在许多情况下,没有“最佳选择”,您可以将其编写为PHP Webapp,并且可以使用。或者,您也可以将其编写为Qt程序,然后开始运行。它可以是openGL游戏界面UI。所有这些都是可接受的选择,诀窍是选择一个然后着手使其工作。一旦您选择了某种东西,就不要使自己陷入疑惑。
gbjbaanb

5
非常糟糕的示例,因为在此示例中,有一种技术对此很明显,那就是Xamarin。保留.NET后端代码,只需将UI替换为某些内容即可。处理所有给定的案例。因此,更多情况是“我现在了解有关.NET的跨平台系统”。
TomTom 2015年

7
说两天还不够,不是很有建设性的。3天就足够了吗?还是您实际上要花两个月的时间?您的决定可能会好得多?~~~~如果您说需要一个星期,并且确信这很容易节省数百小时的开发时间,请务必提一下。这可能无济于事,但始终有利益相关者喜欢您的业务案例的机会。
Dennis Jaheruddin

Answers:


48

如果您只有2天的时间而没有时间进行原型设计,甚至没有时间阅读所有替代方案,那么实际上只有两种选择:

  1. 问一个认识的人并听从他们的建议。这不一定意味着要问一个人,而是花两天的时间在博客和文章中进行搜索,以收集足够的信息,从而做出比不明智的决定更好的决定。

  2. 对所有主流选项进行一点研究,然后选择一个。有时,领导意味着不要害怕做出错误的决定,做出决定往往比动摇更为重要。

您可以通过提出更分离,因此更易于更改的体系结构来解决自己的问题-例如,客户端/服务器模型将使您以最小的破坏性将UI技术替换为另一种。


10
+1表示“不要害怕做出错误的决定”有时陷入“分析瘫痪”比根本不做出决定更糟糕。我们都是人类。尽力而为,继续生活。
semaj 2015年

1
摇摆不定:在不同意见或行动之间交替或摇摆不定;优柔寡断。
TankorSmash

10
+1代表“通过提出更多分离的架构来发现自己,从而更容易更改”
Darth Egregious 2015年

2
@emodendroket Windows Workflow Foundation。
MetaFight 2015年

2
如果您的问题不是主流,那么不要指望主流解决方案能很好地解决问题。这是去耦和灵活性至关重要的地方。寻找框架/库,使他们可以轻松地做自己的事情,而不是在他们似乎没想到您需要做的事情时使他们shoe之以鼻。
jpmc26 2015年

19

它可能看起来,我逆着流,但我最近读了这本书创新,公司埃德卡特莫尔,并有一个非常好的解决款这样的情况:

安德鲁·斯坦顿接下来发言。安德鲁(Andrew)喜欢说人们需要尽快犯错。他说,在战斗中,如果您面对两座山丘,并且不确定要攻击哪座山丘,那么正确的做法就是赶紧选择。如果发现错误的山丘,请转身攻击另一座山丘。在这种情况下,唯一无法接受的行动就是山丘之间奔跑。

我相信它也可以适用于您的情况。也许您今天可以通过选择一个并开始进行决策来做出决定。如果它可行,那么您将在两天内准备好一些东西,然后您会说-“我选择了它,由于没有进行过几次测试,因此我可以向您展示我们可以做什么”。如果您发现一天选择的解决方案完全不值得,则可以选择其他解决方案,并在第二天使用该解决方案。最坏的情况是,您将用两天时间来测试两个平台,发现它们都不起作用-但这最终是正确的答案,不是吗?清除杂草,摆脱错误的可能选择,因此下一个决定将比前一个决定好得多。最好的情况是

显然,您不会在两天内掌握任何平台,但是选择一个ASAP绝对可以使您更好地了解其工作原理(不仅仅是阅读它),而且可以为您带来更好的答案。


12
尽管我在全球范围内都同意您的观点,但有时在战场上向前冲是很自杀的。
Flot2011

没有人提到匆忙。我从来没有说过今天要去老板那里说:“这就是解决方案。就在这里,现在。” 取而代之的是,我建议先挑一个,然后试着运行并修补它。简单地阅读它并与其他人讨论不会成功。我确实相信,继续尝试下去会导致选择质量更高的选择。
Michal 2015年

6
@ Flot2011但是,如果您拥有MBA学位,您将留在原地,并派出所有部队与任何一座山作战。如果他们全部都死了,哦,好吧,您将拥有更多的部队并继续前进,但这一次是说您作为一名将军的经验使您的工作变得更多……值得得到更多的薪水。
gbjbaanb

1
在这种情况下,“尽快选择一个原型,然后将其原型化”对我来说是非常糟糕的建议。是的,原型制作很重要,但也很耗时。非平凡的问题通常有两个以上的可能解决方案,而两天的时间不足以使几种技术成为原型。
meriton-罢工

@meriton我明白您的意思-我同意,原型制作很耗时。我没有明确声明“做原型”-这就是为什么我谨慎选择“ 修补匠”这个词的原因-探索平台,编写一些小代码,打开一些基本的实现文件,看看它是如何工作的。决策者可能无法正确掌握所有细节,但通过反复试验,他/她肯定可以提高决策质量。
Michal 2015年

10

gbjbaanb提出了一些非常好的观点。我只是认为我会补充一点。

很明显,您没有足够的时间做出完全明智的决定。您唯一的选择是尝试做出决定,以最大程度地减少将来的痛苦。我建议:

  1. 清楚记录情况的性质:向您的经理发送电子邮件,并抄送其经理和利益相关者。说明您分配的问题是一个棘手的问题,但是您愿意全力以赴。但是请注意,鉴于严格的时间限制,您不能保证您的发现是最佳的。

  2. 查找具有活跃的大型在线社区的框架/平台。您想要做的最后一件事是仅调试一个晦涩的框架。

  3. 如gbjbaanb先前所述,使用松散耦合的体系结构可以减轻移植的麻烦和风险。如果一切都随着您的技术选择之一而变,这将使更换它变得更加容易。

我以前遇到过您的情况,最终变成了一场政治噩梦。当系统无法正常运行时,人们开始指责手指,事情变得丑陋。这就是为什么我的第一建议是明确记录您在不可能的情况下已尽力而为

祝好运 :)


17
回复:#1。没有人会喜欢一个失败者,所以只要强调自己在不可能的情况下已经尽了最大的努力,那么你看起来就像是一个积极主动的团队胜利者!管理层喜欢这种事情。顺便说一下,大改写不起作用的原因有很多,选择一项技术而不是另一项技术通常是最少的问题。
gbjbaanb

是的,我意识到这有点古怪,所以我修改了它。
MetaFight 2015年

就我个人而言,我会比“非最优”更为具体,因为这并未说明不确定性的严重性。一位具有“不需要完美,只需要足够好”的管理者会毫无顾忌地忽略此警告,而没有意识到您要说技术可能不够好。
meriton-罢工

3
相反,我将确定具体风险并将其上报给管理层。例如:“根据我们目前的知识,我们认为技术A是最佳选择。但是,由于截止日期很短,我们无法验证这种方法是否可以处理该系统预期的工作量。”。然后,管理层可以接受风险,也可以通过命令进一步分析来降低风险。
meriton-罢工

对于第2点+1。选择一个拥有成熟而完善的社区的解决方案。如果您对一个以上的解决方案不满意,则可以随时浏览在线论坛,博客,发布问题等,找出适合您的解决方案。最佳
Arnab Bhagabati 2015年

5

由于他们实际上给了您很少的时间做很多事情,而不是挑选候选人,因此,我采用以下方法。

选择以下技术:

  • 拥有庞大的用户群
  • 积极支持(通过任何渠道)
  • 正在积极开发中

从定义上讲,这将排除任何前沿技术,无论它有多好。

另外,不要因为没有经过进一步分析就放弃使用技术X的冲动,这仅仅是因为开发人员Fred过去曾经使用过它。这不太可能是完美的选择,如果弗雷德(Fred)搬到更绿的牧场,那么您的领域专家就可以了。


尽管如果技术X足够合适,并且弗雷德(Fred)愿意教育其他开发人员,那么这样做可能是启动团队的好方法。
CVn 2015年

可以肯定-如果它打勾其他框...
罗比·迪

4

2天是做出此类决定的很短的时间,但是由于您必须在接下来的2天之内进行此决定,

  1. 目标平台是什么
  2. 当前应用中使用的自定义/第三方组件是什么,可能需要大量的工作才能移植。例如:图表组件,网格组件,报告组件等。
  3. 当前应用如何与世界连接以及如何处理安全性(数据库连接/ Web服务/等...)
  4. 它是如何分布的以及如何提供更新

现在,您需要找到可用于所有目标环境的替代方案

对于每种选择,请找到每种选择的支持,以使用当前应用程序正在使用的连接性/安全性。

然后针对每个自定义/第三方组件,找出每个组件是否都易于使用。

然后考虑如何对找到的每个备选方案进行分配。

我认为这应该是您应该涵盖的范围,并根据结果可以提供解决方案两天。


4

尽管我喜欢学习和尝试新事物,但在时间限制下,最好的选择始终是尝试任何适合自己或感觉更舒适的东西。坚持你所知道的。

即使从长远来看,即使您没有选择最佳选择,您开发的任何东西仍然是有价值的,并且包装了仍然完全可用和可移植的现场知识。这恰恰是因为您选择使用的舒适上下文,工具和平台不会影响您,让您看到真正重要的事情。


2

列出应选择的因素,例如:性能安全成本易用性X能力X开发人员熟悉上市时间等。

这应该花费不到一个小时的时间(实际上应该少于15分钟),然后与管理层坐下来,让他们优先考虑这些因素。(尽管您可以通过一些关于优先级的建议来指导他们的选择,但是优先级与您相同的机会很少。)现在,您知道该技术的评估了。

根据互联网搜索为您的问题选择三个或四个常见的解决方案。

然后阅读足够多的内容,可以很好地猜测每个选项是否符合其最优先的3-4个优先级。为每个选择分配一个数值。通过将每个优先级的等级乘以该优先级上设置的值来进行数学运算(数字1为10,数字2为8,数字4为3,数字4为6,或者您喜欢的任何数字)。现在,您对每种可能性都有一个数字分数。通常,很明显最能满足分配的优先级。更好的是,您现在可以通过分析来证明他们的选择。他们通常会根据您的选择进行购买,因为您有足够的数字来支持它。如果数字不支持,那么您需要问自己为什么偏爱另一个数字,然后选择数字上最好的数字,或者重新访问分配的数字。

通过专注于选择的真正优先事项,您可以节省大量研究时间。您可能会在一天之内做出猜测,然后剩下一天来选择排名前2的可能性并下载试用版(如果需要)并试用一下。


您所描述的称为“层次分析过程”。这是我见过的用于进行贸易研究的最常用技术。其优势在于,它可以帮助以一种客观的方式决定最佳选择,并考虑所有利益相关者的意见。我很惊讶地看到网站使这种技术看起来多么复杂。不要让网站显示的表面复杂性影响您,它确实非常易于使用。无论如何,由于我找不到很好的例子,所以我认为Wikipedia与任何en.wikipedia.org/wiki/Analytic_hierarchy_process一样都是一个好的起点。
Dunk 2015年

1
整个过程不到十分钟,建立结构在电子表格(中最复杂的部分是决定你要比较优先事项是什么因素),然后是易peasy让我们填写。
HLGEM

它真的很容易。我们还会进行调查,在调查中,每个人都为每个类别分配一个值,以确定每个人认为最重要的内容,因此我们可以对每个类别应用权重。毕竟,软件团队认为处理器速度和内存始终是头等大事,但是硬件专家似乎持相反意见,因为电池寿命对他们很重要。当然,客户通常会至少计入额定重量的一半,并且不会对软件或硬件问题感到毛骨悚然。网上的描述似乎很复杂。
Dunk 2015年
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.