当您遇到棘手的问题时,您会做什么?
我只是想一遍当铅笔和纸。
- 分解成各个部分
- 看什么部位,我知道
- 研究部分我不
- 把它放在一起
- 利润
对我来说,诀窍是把它分解成可管理的位。
- 编辑
我必须和上面大约交谈了别人,还有海报同意。即使你没有任何人可以与之交谈,也可以将它解释为蓬松的玩具,答案通常会变得明显。
+1为'利润',但你忘了'????' – 2009-09-01 01:09:41
我的前任老板一直说他要为自己做一个生命纸板剪影,让人们向他们解释他们的问题。 8-) – RichieHindle 2009-09-01 07:43:08
如果可以的话,我会放一会儿吧。当我至少期待它的时候,解决方案常常会涌入我的脑海。 (如果我们总是等待 - 我们通常不会这么做)
编辑:另一个非常有用的事情是向其他人描述问题。即使他们不能帮助,向不熟悉问题的人解释它的行为通常会在你脑海中澄清事情。有时候你会直接找到解决方法,而没有其他人说一句话。 8-)
我发现使用白板向其他人解释问题非常有用。
有时我会搜索堆栈溢出来查看是否有人遇到相同或类似的问题;如果他们没有,我有时会发表一个关于它的问题。
Peopleware把它放在一个很好的方式,尽管是一个不同的上下文也适用于这里。
经理的作用,他们写,是不是 使人们的工作,但使它 可能为人们的工作。
在这种情况下,你是你自己的经理,所以它取决于你自己的工作。如果你遇到困难,那么你需要倾听自己的意见。你需要什么才能开始解决问题。
对我来说,这可能是项目中的一个主要班级名称错误而且不雅。为了以优雅的方式解决这个问题,需要首先解决这个问题,否则它将作为一个半解决方案结束。
10美分
对于许多问题,编写单元测试可以提供帮助。分解它(如丝般的建议),并尝试为各个部分编写测试。然后编写代码使测试通过。查阅一些关于TDD的文献。
写一次性“秒杀”代码也是一个方便的方法来找出新的东西。
那么,这取决于问题的类型,它是否可以研究。对于你不能做到的事情,我经常遇到一些特殊的设计问题,我一直在想所有的因素,但我发现有两种方法可以很好地工作:
- 摆脱所有可能的干扰(计算机,电话,人),例如找一个空的会议室。拿笔和纸,画出问题所涉因素的自由形式图;有时桌子也很好。我发现,集中精力而不分心的能力和图形表示通常使我能够找到解决方案。
- 对于真正困难的问题,睡在它上面。也许这只是我,但有时在我入睡之前想到处于半昏迷状态的东西时,我有时会想出最好的想法 - 奇怪的是,我总是记得他们在早上来。
相关问题: http://stackoverflow.com/questions/711431/what-are-your-best-practices-for-bugs-that-are-hard-to-solve/ – sleske 2009-09-01 00:05:06
通过怎样的方式你能找到这个相关的问题吗?我试图搜索现在,但没有找到 – MemoryLeak 2009-09-01 00:06:53