如果您无法解决问题会怎样?[关闭]


58

我距离大学毕业已经一年了,我真的很期待解决实际问题。特别是非平凡的,需要一些研究和大量思考。

但是与此同时,这也是我最大的恐惧-无论我如何努力,都面临着我无法解决的问题。由于迫在眉睫的交付截止日期的代码迫在眉睫,在uni的安全操场上观看代码时,确实看起来有些吓人(最糟糕的事情是您必须重做课程或考试)。

因此,对于那些已经从事了较长时间的行业的人来说,如果告诉您解决无法解决的问题,将会发生什么?它发生了吗?如果是这样,发生了什么?他们只是放下它说:“哦,好吧,我们可以做点别的事情了”?有后果吗?您受到谴责,甚至被解雇了吗?


24
这适用于任何行业-快速失败,寻求帮助,在提交之前研究可能的解决方案
Steven A. Lowe 2010年

9
别担心。那里80%的工作都在维护旧的垃圾。
工作

无法解决问题?有可能吗
WernerCD 2010年

3
我认为这不是一个真正的问题,除非这是乔恩·斯基特(Jon Skeet)无法解决的问题,在这种情况下,我们都注定要失败!
Skizz 2010年

Answers:


56

首先,您的恐惧非常健康并且正常。这是我在软件行业工作约15年后的想法。
以下是一些要问自己的问题:

  1. 明白这个问题吗?
  2. 您是否知道问题是无法解决的(在您的时间/预算限制内)?
  3. 您是否不知道如何解决问题?
  4. 您的客户/老板是否在要求不可能?
  5. 这值得么?(投资回报率)
  6. 这是一个真正的问题吗?

1)首先,请确保您了解问题所在。没有愚蠢的问题。您了解客户/老板在问您什么以及他们需要什么吗?

2)这将会发生。“到明天为我盖一座桥”。确保您知道在约束内问题无法解决的事实。您的客户/老板在时间/预算上可能很灵活,可以对其进行修改以增加您的时间/预算。

3)如果问题是可以理解的,并且约束条件在合理范围之内,并且有可以解决问题的技术,但是您只是不够了解……这就是StackOverflow互联网的目的。确保首先进行研究。尝试问一些可以量化答案的明确问题。问你的同龄人。进行设计会议。

4)这是答案2的变体。似乎您的客户/老板在问不可能的事情。做一些研究。除非您确切地知道原因并且可以澄清,否则请不要说问题是无法解决的。

5)ROI代表投资回报率。这是指对时间的投资。你的时间!。问题是否足以解决需要解决的问题,以保证您将花费大量时间来研究和解决问题。与您的客户/老板讨论

6)这是一个真正的问题。客户常常会理解他们想要的东西,但不一定理解他们的需求。尝试了解您的客户/老板的实际需求,并与他们讨论。

希望这些指南对您有所帮助。


3
最具参考价值的答案。希望它能获得更多的选票。
gablin

6
不错的答案。我只是想补充一点,最成功的黑客会保持一定程度的实践狂妄:即假设您可以应对任何挑战。在大多数情况下,您是对的,并且比不做假设的人解决的问题要多。就是说,没有解决问题不是世界末日-只是不要把它留到最后一刻。管理意味着确保老板有合理的期望。如果您不确定如何做某事,请让老板知道您需要时间进行研究并提出建议。
HedgeMage 2010年

我喜欢#4没问题
endolith

57

如果您遇到一个看似无法解决的问题,要记住两件事:

  • 让其他人尽快知道您被困住了。这将有助于他们及时调整估算值,以免为时已晚。

  • 如果您发现解决问题的一种方法不起作用,请在浪费太多时间之前将其丢弃。寻求帮助或尝试其他方法。这并不是要证明自己努力又聪明,而是要把事情做好。


11
+1表示“寻求帮助”。另一对问题的看法可能非常有用。
Michael K 2010年

5
+1是第二点...提防95%的解决方案。也就是说,该解决方案可以非常快速地为您提供95%的解决方案,但是几乎不可能100%地完成工作。我发现很容易浪费很多额外的时间来尝试获得最后的5%,因为您“就在那儿”。
Scott Whitlock 2010年

5
“科里昂先生是一个坚持要立即听到坏消息的人。”
JeffO 2010年

3
能够寻求帮助非常重要。如此多次,我已经看到新开发人员在两周后回来,却没有任何表现可言,因为他们在第一天就被卡住了。当然,您的导师/老板应该问您前进的方向,等等,但是当事实显然并非如此时,不要撒谎并说“一切都会好起来”!
迪恩·哈丁

4
即使是向别人解释问题的简单举动,也可以让您找到解决方案。
alexanderpas 2010年

26

我去StackOverflow ;)

但是开个玩笑,不要害怕未知。您的整个职业将面对未知的事物,因为如果您已经解决了未知的问题,那么下一次它将不再是问题。


12
这对我来说不是个玩笑,这通常是我的第一个电话口岸。实际上,提出问题的过程通常会为自己寻找解决方案提供动力。
NimChimpsky 2010年

10
上次我只是无法弄清楚某些软件的问题,因此要求我几乎立即获得了正确的答案。
David Thornley,2010年

好答案!+1- 软件开发的最佳部分 -“您的整个职业将面对未知。”
Karthik Sreenivasan 2012年

10

我将不得不回答一个简单的问题:我寻求帮助。就像其他人有时在试图为某事找到解决方案时,他们会向我寻求帮助。

编辑:我应该提一下,我通常只是通过向同事描述问题来找到解决方案,有时甚至是当我开始在StackOverflow之类的网站上发布问题时。


3
有时与了解这项工作的同事交谈可以帮助他们,即使他们没有提供任何建议,只是说出来就能帮助您理清
头绪

9

从不同角度看

我遇到过很多次,通常会发生以下情况:

  • 您有一个问题,最初您脑子里有个解决办法。
  • 当涉及到实际实施解决方案时,事实证明这是行不通的(可能是由于实际问题的模型较弱)。
  • 在努力解决问题之后,是进行更多研究还是要问别人。没有任何效果,纯属无奈!

最后,您选择不想做的事情->

“肮脏的hack”

可以,但是您感觉很脏...


3
+1是肮脏的骇客,有时根本无法找到合适的解决方案……毫无疑问,没有人喜欢全局变量,但是如果这是从A到B获取一条信息的唯一可用方法...总比不提供要好。
user281377 2010年

+1- 明确描述软件开发人员所面临的最常见经验。
Karthik Sreenivasan 2012年

5

通常,我会找一个比我聪明的人来解决它。他做到了,他是我的老板。我觉得我好笨。我们继续前进。


4
我羡慕您---您有一个老板比您更了解您的工作。非常感激!
JasonFruit 2010年

实际上我很高兴我不是。;-)老板为我服务,以摆脱障碍,在需要时组织帮助,保持动力和前进,等等。如果他在我的工作上表现更好,他不应该是我的老板,但应该做我的工作。
johannes 2012年

你的老板在很多事情上应该比你了解更多,imo。
约翰尼

5

这取决于您无法执行...的原因...

  • 从逻辑上讲是不可能的:与编写需求的人讨论,也许有误解。示例:一方面,规范说应用程序必须在所有平台(Windows / Linux / Mac)上都具有本机外观,另一方面,它表示程序在所有平台上必须具有完全相同的外观

  • 从技术上讲是不可能的:重新评估您使用的工具,也许它们不合适。与您的同事和项目经理讨论问题。示例:垃圾收集可以在不确定的时间内停止执行的环境中的严格实时要求

  • 性能不足:也许您使用了错误的算法,或者问题太难了(例如NP-hard),并且需求没有考虑到这一点。重新评估您使用的算法,也许有更快的方法。与您的同事和项目经理讨论问题。考虑切换到足够好的启发式方法,而不是完美的结果。示例:具有数十个甚至数百个节点的路径优化

  • 您只是不知道该怎么做:询问您的同伴,询问stackoverflow,搜索互联网。请与您使用的工具/库的支持联系。与项目经理讨论。

  • 它应该工作,但是不起作用,您也不知道为什么:重构程序以使其更具可测试性。考虑到比赛条件,它们通常是难以发现错误的原因。向同伴寻求帮助,四只眼看到两只以上。在Internet上检查正在使用的工具/库中的已知错误。


4

我认为其他人很好地指出了如何以专业的方式处理它。我想说说如何处理沮丧,恐惧等个人感觉。

最重要的是,即使您没有及时解决问题,您也将保持良好状态。生活仍在继续。

有时,时间表会被推迟。该项目要么成功要么失败。您可能会被解雇,然后干得不错。你只是永远不知道。

不要误会我的意思。这并不意味着可以解决问题。我们所能做的就是尽力而为。

有时候,我认为无奈,担心无法解决问题是我作为普通开发人员的生活。


2

我不确定我会说我无法解决问题,但是在某些情况下,我确实放弃了尝试解决问题的意愿。在投入大量时间尝试修复错误或实现某些我不知道如何执行的功能后,我可能会告诉团队,团队负责人或经理中的某人:“我坚持下去。你要我做吗?” 让他们知道我在哪里。他们可能会说:“坚持下去,我们认为您会成功的”,或者“继续进行一些不那么重要的事情”,或者其他一些事情,然后我就会知道我应该做什么。

当然,我有一些我无法解决的错误以及一些未完成的功能。尽管我可以尝试完成某件事,但并非所有事情都可以在合理的时间内解决。关键是要进行沟通,以便您的上司知道您的位置。

也就是说,我确实有几次遇到过一些非常特殊的情况:

  1. 在多伦多的一家加拿大大型银行工作时,我会被要求做各种各样的事情,当我接到任务时,我不知道该怎么做。例如,我被要求测试这种保护笔记本电脑安全的方法,其中在启动时交换了“ Esc”和“ Enter”键,并且使用正确的键序,笔记本电脑将再次可用,试图找出数字似乎很奇怪。出来,“这可以吗?我怎么知道这对用户是否可行?” 还有其他任务,我只是没有硬件或其他资源来完成它。同时,这是很有教育意义的,因为这给了我很多预防未来麻烦的信息。诸如确保我得到付款,如何跟踪时间,

  2. 在卡尔加里的应用程序服务提供商工作期间,我得到了这个项目,试图在我们作为服务出售的内部应用程序中创建另一个网站的副本。这里的关键点是,我没有给出时间表,也没有给出建议先做哪个部分,只是一般研究,一个月后,我被要求进行演示,因为我对某些止痛药反应不佳。这种反应持续了一个星期,我突然下班,然后第二周,我参加了一次微软活动,这是我第二天被解雇时的最后一根稻草。这里要注意的一点是,无论我何时与老板碰到我,我都会立即想到:“现在怎么了?”


2

正如其他人所说的那样,沟通是至关重要的-当您陷入困境时,让人们知道(将受到影响的人):您的老板,团队成员,客户等。

一位敏锐的同事曾经向我灌输,成功源于两件事:

  1. 人际关系
  2. 期望

我想,良好的关系是良好的沟通和预先设定期望的功能。


2

我遵循Polya原则:

“如果存在您无法解决的问题,那么将存在一个您无法解决的更简单的问题:找到它。”

乔治波利亚

该原则的优点在于,在某个时刻将存在一个很小的问题,并且您将能够解决该问题,如果您做对了,希望它可以引导您解决原始问题。这个原则还没有使我失望。


1

寻求帮助 ”答案绝对正确。您极不可能是第一个遇到特定问题的人。

但是作为一个实验,如果没有帮助怎么办?如果您必须自己解决问题怎么办?解决问题最重要的能力是识别挑战自己的假设的能力。如果您可以逐一列举关于问题的假设并依次消除每个假设,那么您最终将得出错误的假设,结果将为解决方案带来新的可能性。

(顺便说一句,当您在求职面试中看不到问题的答案时,这也是最好的方法。逐字列出您的假设,确定哪一个是错误的,然后重新攻击该问题。几乎所有“技巧性问题”都是基于自然而错误的假设)。


1

寻求帮助确实是最好的答案,但是这里可能还有用。

因此,对于那些已经从事了较长时间的行业的人来说,如果告诉您解决无法解决的问题,将会发生什么?它发生了吗?如果是这样,发生了什么?他们只是放下它说:“哦,好吧,我们可以做点别的事情了”?有后果吗?您受到谴责,甚至被解雇了吗?

是的,这发生在我身上,不,我从来没有为此受到谴责或开除,因为...

在行业中,关键在于您是否能按时且在预算范围内解决问题,体面的管理人员知道这并非总是可能的。

实际发生的是您的经理说:“我希望您做X,您认为这会发生什么?” 您可以给出很多答案。好的包括:

  • 我所做的事情确实与此相似,因此我认为这将需要三周时间和价值3,000美元的测试硬件。
  • 我大致上与此类似。因此,让我考虑一下,今天下午回覆您。
  • 我从来没有做过这样的事情。因此,让我研究一下,明天再回覆您。
  • 这个星球上没有人做过。如果您想研究一下,我将需要两个星期的时间来进行足够的实验以进行估算。

决定是否以及如何进行是经理的工作。如果他们确实选择继续,那么您的工作就是达到您的估计,或者让经理知道是否存在障碍。只要您这样做,在一家合理的公司中就不会有负面后果。

当然,也有不合理的公司没有给您时间或资源来完成您的工作。我曾在其中一些公司工作过,每个人都遇到了在公司的约束范围内无法解决的问题。其中一个人在八个月内解雇了约98%的编程人员,这当然是后果,但这并不是直接针对我的,我仍然认为我的老板和他的老板是好朋友。


+1非常好的目标清单。管理人员必须接受的问题是,人们对问题的了解越少,获得解决方案所需的估计时间就越长,这也会增加此类估计的误差范围。归根结底,如果您有不合理的管理人员,那么工作总是有风险的-因此您仍然应该按照上述步骤进行操作,因为这样可以使您的后背得到保护。至少您可以说“我告诉过您”。
2010年

1

您会遇到很多不同类型的问题,并且许多问题都有不同的处理方式。

一种类型的问题是实现了您以前从未见过的东西,例如奇怪的声音API或其他东西。在这种情况下,我会认真询问。

另一个是要解决的非常大的问题。这种类型的问题可以迭代解决。他们告诉您“实施庞大”。您仔细查看并写出尽可能多的步骤。然后,您将复杂的步骤分解为较小的步骤。当您不得不考虑较小的步骤时,它们将变得更加清晰。如果您遇到技术困难,请尝试测试实施,并在必要时在此处询问。

较烦人的问题之一是要求不明确的请求。他们只是想要一个做“ x”的事情,而没有告诉你应该怎么做。对于这些,一种好的方法是为接口(通常是GUI)制作原型,然后让某人使用它。

然后是无法满足的时间限制。这通常涉及修改期望并提供功能原型。

通常,您会通过一种或另一种方式找到自己的方式。它令人恐惧,但是一旦进入它,您几乎总能找到一些解决方法。

最好的选择是在笔记本计算机的外部涂上“不要惊慌”字样。而且不要忘记你的毛巾。


+1对于HHGTTG参考和“然后存在一些时间限制无法满足。” 太正确了。在现代市场营销主导的商业世界中,很可能会要求您构建一些即将发售(如果尚未发售)的产品;但团队规模是两倍,是分配时间的三倍。
2010年

1

我解决问题的顺序(只有下一个步骤无效时,才执行下一个步骤):

  1. 尝试谷歌
  2. 问人家
  3. 直接搜索SO(绕过Google)
  4. 认为
  5. 冒烟(==清头)
  6. 在SO上提问
  7. 等到早晨(==进一步清醒头脑)
  8. 使用那个肮脏的技巧,让自己感到难过:(

在第5-6步中解决了讨厌的问题。

真正非常糟糕的问题通常需要一些时间(第7步是解决大多数“似乎我无法做任何事情”的问题)。我的意思是-在一天的剩余时间里切换到另一项任务,并尝试在早晨首先解决问题。那确实令人惊奇。

然后只有步骤8。


我通常找到解决问题的最佳方法是a)骑自行车或b)淋浴。然后,这变成了在一个有记笔记设备的地方或忘记我刚想到的东西之间的竞赛(我现在有点忙了,我的短期记忆是我在说什么吗?)
Skizz

0

我还没听说过这样的事情。首先,您永远不会遇到根本无法解决的问题。该问题可能很难解决,可能需要花费一些时间才能解决。当遇到问题时,您必须告诉我这是我需要的时间。如果在研究中您认为确实无法解决此问题,则必须举起一个旗标,告诉经理该问题将花费更多时间,或者确实很难解决。一切都是关于时间表。如果您答应了一些东西而无法交付,那就是问题了。但是,如果您不断说出自己的状态和疑虑,则经理有责任照顾好它。他应将您重定向到可以提供帮助或调整计划的适当人员。


3
-1,绝对有可能会带来一个无法解决的问题。“设计一种可以在不到一分钟的时间内破解30个字符密码的暴力密码求解器,它需要在具有256兆内存的奔腾2上运行。”
AttackingHobo 2010年

1
有很多无法解决的问题。诀窍是要知道它们很快就无法解决。最好是在营销人员要求您解决之前,先告诉您问题所在。
2010年

@AttackingHobo ...那根本不是一个现实的问题
Dacto 2010年

0

这里有一些很好的建议!我的两分钱是;不要被BIG问题淹没,不要忘记解决问题的令人兴奋和具有挑战性的部分将其分解为一系列可管理且更重要的是可理解的子问题,这些子问题又一次又细分为小问题子问题。任何优秀的程序员通常都会在创建代码时(使用函数,方法,子例程等帮助降低代码段的整体复杂性)在几分钟内完成此操作,这种方法通常适用于您遇到的任何BIG问题面对生活(不仅仅是工作)。


0

显然,这取决于具体问题是什么。但是响应可以是以下任何一种:

  1. 查找解决方法/替代
  2. 购买近似您想要的商业解决方案
  3. 只要有需要,就不要放弃并继续努力,直到成功为止

3号可能需要时间解决问题,并在数周或数月后重新进行讨论。这通常会有所帮助。


0

在我的经验中,有时存在您无法解决的问题,至少在时间限制方面。因此,在解决问题之后,请您尽快寻求帮助。

记住经验法则:总是看老板雇用你的原因。尽您所能为获得最佳工作结果而做的事情,有时这是早期的失败报告(远比延迟的报告要好)。

简而言之,如果您认为可以找到解决方案,请随时尝试,但要给您的老板估计风险和时间成本。现在是他们的问题。


0

如果即使有经验的人,亿万美元的项目也会失败,那么当您还是学生的时候,您就不必担心失败。我遇到了需要解决的问题,我发现如果这是您遇到的问题,则必须记录解决该问题的所有尝试。

有帮助:

  1. 解决问题的尝试证明。
  2. 记录这种类型的故障很重要,因此您可以从中学到东西,几天后再做一次,以为它会起作用。

0

我的经验是,应届毕业生不会陷入深渊。相反,您可能会加入一个由经验丰富的开发人员组成的团队。

我的建议是:利用它们。当您不确定如何解决问题时,或者如果您想知道解决方案的方向是否正确,请与他们讨论。如果您觉得自己被困在某个地方,请抓住一位经验丰富的人,向您解释问题并寻求帮助。

大多数情况下,仅说明您的问题即可发现解决方案,而说明您的解决方案也可能同样揭示其缺陷。


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.