老板刚刚给了我一个警告。有没有办法更快解决漏洞?

这个问答是每周发布的一系列帖子的一部分,这些帖子强调了技术爱好者遇到的常见问题,并由100多个问答站点组成的免费社区网络Stack Exchange的用户回答。BeeBand问:

我刚刚接到老板的通知,星期一我将收到负面的绩效考核。他想和我谈谈为什么我这么慢,为什么我的错误修复率这么低。

我喜欢编程和解决问题,但我确实发现我的工作真的很难。

我做程序员大约十年了。但这是我的第一个多线程嵌入式Linux作业——我在这里已经两年了,大家都知道我还在努力。而且我觉得我变得如此沮丧和被边缘化,以至于失去了工作开始时的很多激情。

有没有人遇到过类似的情况,你如何提高你的错误修复率?

请参阅此处的原始问题。

破解笔记本扎克的答案( 13票) :

这个行业最常见的管理功能障碍之一是不理解调试本质上是困难的。我有将近20年的经验,但我还是要经常花整整一周的时间去发现导致程序崩溃的一行错误。然后,如果我的经理不理解这些事情,他们就麻烦我花一周的时间换一行代码。

你能做些什么?

调试时做笔记。只要打开编辑窗口,写下你的意识流。除了你之外,任何人都没有意义。你可能会发现这有助于你更快地调试,但也意味着你有一些具体的东西可以用来证明你并没有玩Nethack一周。和你所有的同事做笔记。修复错误通常需要多长时间?他们的虫子修好了吗?他们多久换一件小事,发现自己被一堆连锁反应所掩埋?这些问题的答案会让你有一种感觉,你是否真的在和部门其他人斗争。与QA人员和客户支持人员交朋友。他们最清楚虫子有多重要。这通常与漏洞有多难没有或很少相关,所以你可以对系统进行一点游戏,并尝试分配所有高重要性、低难度的漏洞。(这不是真的作弊。一个组织良好的团队总是先跟踪那些错误。如果你的老板连续两年没有对你的表现给出足够的反馈,那么首先在这次绩效考核中提出这个问题,然后当你被允许绕过它时,向老板提出。要有礼貌,特别是不要让他们看到你有多生气,而是要以书面形式得到具体的批评。寻找patternschrisaycock答案( 6票) :

在工作两年后,每个人(你、你的老板、你的同事)都应该清楚你的立场。你永远不应该发现你一年只做了一次不好的事情;理想的工作环境会提供持续的反馈。

无论如何,关于如何调试多线程代码:您还没有提到这是您的代码还是其他人的代码。有一些新的调试器和静态分析器可以处理并发。但真的,知道模式是你最好的选择,因为你知道该找什么。

如果你理解关键部分和比赛条件以及僵局是如何工作的,那么你将会更好地发现意想不到的事情。如果您看到两个线程之间没有条件变量的 communication 或者如果资源被静音而没有特定的顺序,或者如果局部变量被声明为静态而没有明显的原因,那么您有一个潜在的bug!所以,学习你的领域的最佳实践,你就能更好地判断什么时候事情变得异常。

相关: 如何减少编码时的错误数量?

自我反思timekmote答案( 11票) :

许多答案质疑你的老板方法/策略/指标等。但那不是重点。也许你很慢。每个开发人员的房间都必须有一个比其他房间慢的房间,对吗?(那只是直集合论。)那么让我们假设是你。答案是,你为什么慢?(显然,这是你必须回答的问题,然后你才能解决你所陈述的如何加快速度的问题。)

可能有各种原因,但这里有一些可能的解释需要考虑:

你不如他们聪明。可能吧?(研究表明,我们都不如朋友那么受欢迎、不那么有趣,而且(接下来)也不如朋友聪明。)所以也许你只是头脑迟钝。再说一遍,在你的情况下,我认为这是不太可能的。你的一瞥StackOverflow profile显示,你有在广泛的话题上提出智能问题的历史。那么你显然是一个思想家,也许是一个很好的思想家。你太瘦了。同样的,你的个人资料显示,你的问题涵盖了过去两年中非常广泛的技术(图形、Web、Python、c++、C、Linux、嵌入式、线程、套接字等)。就我个人而言,我知道当我陷入(或想要)钻研许多不同的溪流的处境时,我发现自己游得非常慢。也许你真正需要的是专注。也许是健康的优先次序。有没有办法把不太重要的锅放在后面烧,把主菜的热度调大一点?你玩得不开心。火灭了,蒸汽机就要减速了。你在你的岗位上承认你的士气最近受到了严重打击。不幸的是,你已经被自增强负谐波——一种可以摧毁桥梁的力——吸入漩涡中。这是一个非常熟悉的螺旋:困难的任务- >压力- >错过期限- >更多的压力- >应对机制不良- >更多的压力- >拖延- >更多的错过期限- >批评/八卦(真实的或想象的) - >更多的压力。你明白了。这很少导致有用的结果。从我的泛舟生活中汲取教训:当你被4级快艇背面的环流吸入水下时,你的救生衣不会让你浮回水面。最好的策略(虽然不直观)是找到河底,走出激流。所以我给你的建议是:找一些地方(朋友、教堂、健康的新习惯等),利用它把你自己从漩涡中拖出来。你不在你的区域。迈克尔·乔丹是一名相当蹩脚的棒球运动员。(好吧,他还是比我强,但肯定是个小个子。)也许多线程嵌入式Linux不是你的工作。但是软件开发是一个非常广泛的领域(众所周知;cf # 2 )。你的公司足够大,你能找到另一个合适的位置吗?在我上一份工作中,我被聘为嵌入式软件开发人员。(我没有这方面的经验,但我告诉他们我学得很快。 )我像石头一样迅速下沉。但我一直努力工作,不断寻找我知道如何解决的问题。结果是,我逐渐能够转变成新的责任,我可以发挥自己的才能,为此我最终获得了相当多的赞扬。所以也许你需要重新给自己贴上标签。重点是:如果你慢了,那是有原因的。但是,嘿——你是软件工程师,老兄!调试自己!

页:下一步12→)