Debugging 您是否认为调试(系统故障排除)是程序员能够具备的最重要的可测量的技术不可知技能之一?
程序员可以具备很多技能(理解问题、提出好的问题、良好的设计技能等) 我认为系统调试技能非常有价值。这是调试任何技术系统的一般技巧(从遥控器的电池耗尽到邻居的火腿收音机发出的信号干扰) 以下是我教计算机编程时给学生的方法:Debugging 您是否认为调试(系统故障排除)是程序员能够具备的最重要的可测量的技术不可知技能之一?,debugging,language-agnostic,Debugging,Language Agnostic,程序员可以具备很多技能(理解问题、提出好的问题、良好的设计技能等) 我认为系统调试技能非常有价值。这是调试任何技术系统的一般技巧(从遥控器的电池耗尽到邻居的火腿收音机发出的信号干扰) 以下是我教计算机编程时给学生的方法: 定义问题(当我执行XYZ复制步骤时,我得到ABC症状) 确定测试范围并分成几节 使用消除过程对每个部分进行测试,以找到导致问题的部分 如果需要,将该部分分解为多个小节 分析导致问题的部分 修理 通过使用步骤来复制症状 你认为呢?我认为承诺更重要。如果你将“故障排除”定义为包括“
你认为呢?我认为承诺更重要。如果你将“故障排除”定义为包括“调试”,那么是的,这是至关重要的 编辑:根据您的编辑,您列出的自上而下的消除技术过程是系统的,非常有价值 另一种技巧是逆向推理:
- 从末尾开始,使用产生症状/错误的变量/调用
- 从那里向后推理-是什么导致了这个不正确的值或错误的调用
- 继续在逻辑中向后追踪,直到找到罪犯
另一种技巧是坐下来思考什么情况可能会产生所观察到的bug/行为/值。当您很匆忙,不想系统地扫描很多地方,但需要您已经对系统有了透彻的了解时,此技术非常有用。当问题中的错误/行为是由于设计缺陷或疏忽而不是编码错误时,这很有用。这很重要,但对我来说,故障排除/调试只是:
- 学习
- 研究
- 接受你不知道的一切
- 将过去经验中的知识应用于当前问题
- 而且,最重要的是,探索你认为可能已经解决的问题的替代方案。你可能会找到更好的解决办法
计算机世界中的故障排除通常意味着你的基本“我的电脑不工作,你可以修复它”类型的工作,而百思买柜台后面的人就是这样做的。我认为你的意思是调试,虽然两者都很有价值(我当然很高兴我不需要运行来支持我的计算机出现的每一个故障),但调试对于开发人员来说无疑是更关键的技能。无论使用哪种语言,了解如何跟踪、识别和消除bug是程序员在其职业生涯中最困难和最常执行的任务之一 正如我所说的,我会说我认为在我的武器库中最重要的技能是毅力。当我的经理让我去完成一项任务时,他们知道无论发生什么,我都能完成。时期无论我遇到什么障碍,无论时间安排如何,无论最终目标如何,我都会尽可能地满足他们的期望,直到工作完成或他们对结果感到满意。顺便说一下,这是一个非常重要的区别!最初的目标并不总是可行的,如果不可行,我的工作就是确保管理层尽快准确地知道为什么不可行以及他们的替代方案是什么。提供这些替代方案很重要。没有人愿意听到“哦,对不起,你完蛋了。”为问题提供不同的解决方案是坚持的一部分。除非得到指示,否则你永远不会放弃 简言之,在我看来,在不分心或不放弃的情况下,将一个项目看完的能力,是让自己与众不同、让雇主满意的最有效的方法。相信我,这太难了!但这就是它的价值所在!:)
故障排除技能至关重要。通常,一个好的疑难解答者的问题多于答案。他们还将有一种有条不紊的方法来测试他们发现的问题的解决方案。他们不会害怕自己不知道的事情,也不会因为问一个“愚蠢”的问题而感到尴尬。他们学得很快。程序员的所有优点。当我离开大学时,我认为成为一名优秀程序员的关键是第一次编写出完美的(函数和形式)代码。出现的任何问题都是因为我不够好,或者是因为我不够仔细,或者是因为我没有足够的超前思考,或者是因为我没有花足够的时间来计划。要是我能把所有的问题都解决就好了