我听说领导XP的Kent Beck在需要解决问题时使用了这么多彩色铅笔来刺激他的大脑。我试过肯特的方法,它真的对我有用。我不知道为什么。
你有一个特殊的方法来解决难题吗?我真的想了解你的秘密。
要点: 人们推荐以下内容:
答案 0 :(得分:21)
通常最好只向某人描述问题。有一半时间,我问专家,问题的答案是在中间问题。如果有一些我只是半懂的东西,我会尝试向其他人解释,我最终会完全理解它。
请继续讨论。
答案 1 :(得分:10)
对我来说,你的问题可以采取两种方式。一个是如何为编程问题创建解决方案,另一个是如何解决存在的问题(即调试)。
编程:
调试:
经过几次迭代后,您应该完全理解问题,并了解适合您情况的最佳解决方案。有些时候你无法得到它。走开,睡在上面,并准备新鲜攻击它是很好的。绝对正确地讨论它并向其他人展示你的问题可以帮助你更好地理解问题并获得新的想法。
答案 2 :(得分:7)
我可以告诉你不要做什么:
在电话会议中与客户交谈时,在识别问题5秒后,与您的非IT经理在董事会会议室中提出解决方案:)
答案 3 :(得分:5)
说真的,只要不断添加抽象层,直到事情“正常”为止。如果我在我脑海中,我只会问一个比我更聪明的人如何解决这个问题。
答案 4 :(得分:3)
体验。
说真的,你对你的问题有什么样的答案?
没有任何算法可以解决各种问题。
要详尽无遗,探索每一个选项,记住你学到的东西,重复使用你所知道的,考虑其他选择,问问你认识的人,google,记住你学到的东西,重复使用你所知道的,创造性,混乱,记住你学到的东西,重复使用你所知道的东西,在盒子外面思考,向奇怪的方向推进问题,记住你学到的东西,重复使用你所知道的东西。
答案 5 :(得分:3)
完全基于经验,当我得到最好的启示/尤里卡时刻时:
答案 6 :(得分:3)
强制性参考文献:
Conceptual Blockbusting,来自James L. Adams
How to Solve It,来自G. Polya
甚至可能
Mind Performance Hacks,作者:Ron Hale-Evans
答案 7 :(得分:2)
我发现经常看起来很困难,因为我并没有完全理解这个问题。通过回到真实用户/客户并听取他描述他真正需要的东西而不是阅读需求文档,我经常能够将问题简化为微不足道的事情。
答案 8 :(得分:2)
也许这些都是需要考虑的事情:
答案 9 :(得分:2)
我一遍又一遍地重新定义。然后再次。然后我把它分成我能做到的最小的块。
编码时,我使用了很多变量,并且在一行上不能执行多个步骤。如果我必须添加五个数字然后乘以一个百分比,我将在它自己的行上执行每一步。
后来,在我知道我已经得到它后,我会将线条组合在一起,但直到我确定问题解决了。
这也有助于调试,因为我可以检查每一步,知道它做了我想要它做的事情。
答案 10 :(得分:1)
我最好的办法是停止在电脑后面工作。泡一杯茶,走一会儿,也许可以漫步。如果这是一个棘手的问题,向其他人解释并讨论这个问题对我有很大帮助。如果它真的很难:停止工作,并专注于其他事情。
我认为最重要的是让你的大脑放松并让自己变得富有创造力。那些彩色铅笔是一种刺激你的创造力的方式(应该尝试自己,听起来很棒!);一杯茶(或@Martin:钓鱼)是一种放松的方式。历史上一些最好的想法是在洗澡时被发现的,顺便说一下:)
答案 11 :(得分:1)
我关掉电脑,拿出杆子,花几个小时钓鱼。
这是一个令人惊奇的活动,可以清除你的思绪并担心那些琐碎的问题。最棒的是,你捕获的鱼越少,你可以解决的问题就越多!
答案 12 :(得分:1)
为了解决问题,我已经根深蒂固了以下几个步骤。
问题 - 找出真实的东西 问题/问题是。很多时间 它很模糊或模糊不清。
事实 - 获取您所知道的一切 直截了当,弄明白 未知的将是什么。
图片 - 绘制图片我用我的 白板一直都在使用。
策略 - 弄清楚不同 你可以解决它并决定的方法 最好的选择。
答案 - 通过获取实际解决方案 选择的策略。
检查 - 验证您的解决方案是否正确 用给定的解决问题 事实。
答案 13 :(得分:1)
我通常不会马上开始编码。我打破了这个问题,并记下它,直到我到达一个我知道我需要在代码方面做什么的地方。我使用emacs组织模式文件,偶尔使用笔和纸,具体取决于问题的类型。
在我将任何实际代码放下之前花一点时间思考这个问题通常会让我写出一个比其他方式更优雅的解决方案。
答案 14 :(得分:0)
在:
在:
亚特:
答案 15 :(得分:0)
三个字:测试驱动开发
答案 16 :(得分:0)
对我而言,这取决于问题所在 - 如果我正在努力解决一个新问题,我要做的第一件事就是找到白板并开始草拟一些概念,或者找一个记事本并开始草拟一些概念。通常,为了解决问题,我首先必须了解问题是什么以及为什么它是一个问题,一旦事情转移到编码和与编码相关的常规过程。
另一方面,调试是一个完全不同的问题。在调试时,我通常会尝试找出代码中发生了什么(即逐步执行它并观察变量),弄清楚它打算做什么,并尝试修复它。通常,每个步骤之间都有一个“走出房间,喝点东西”。我通过调试找到的一个技巧是尝试保持冷静,如果这不起作用,请暂时忽略该问题并处理其他事情。大多数时候,虽然专注 - 压力 - 工作需要更长的时间才能解决问题,然后通过休息来实现。
答案 17 :(得分:0)
这么多答案......
尝试查找元认知!有很多技术可以帮助解决问题。
我发现的最简单的被称为“问题解决轮”。在Google搜索上查看。
也有基于心理学的东西。尝试格式塔心理学;他们最受欢迎的是了解问题成为解决方案的“啊哈”时刻。
答案 18 :(得分:0)
我试过肯特的方法,它确实对我有用。
我猜这是因为你可以同时从两个不同的角度看问题,至少在潜意识里。
作为一般方法,我倾向于考虑最终解决方案必须做什么。