您的位置:首页 > 其它

身陷 Bug 时,优秀的开发工程师是如何寻求帮助的?

2017-10-19 08:43 337 查看
作为一名开发者,想要寻求帮助,踏出的第一步可能很困难,但这是与同事之间锻炼协作解决问题的一个良好时机。

还记得上次南京某大型软件企业的员工小张被传销组织控制、几近绝望之时,利用和同事沟通代码的机会,利用代码路径名发出 SOS 求救信息,他的程序员同事们竟然“秒懂”,并赴天津协助警方,将他成功解决出来。

所谓“台上一分钟,台下十年功”,协作并非一日之功,只有经过长久的协作磨合,才能达到一定的默契,而本文分享一名优秀的开发工程师日常寻求协作帮助的技巧,希望对大家有所助益。

今天,是全新的一天,继续开始日常上班,启动服务器,但屏幕上仍会再次冰冷地显示出:err_node_unsafe。昨天已经存在的 Bug,今天依旧没有任何变化。

现在是早上 9:48,团队的其他人几乎还未到。而这是你到公司的第五周,现在需要解决的功能本来应该在两天前就应该完成。

身陷 Bug 之中,踏不出第一步求助、张不了口的你,先是调高了座椅的高度,想象重新抬起头看向屏幕就会有所不同。再次重新启动电脑,堆栈跟踪滑入终端,还是显示:err_node_unsafe。刷新数据库:err_node_unsafe。



处于崩溃边缘,看看四周,另一团队的技术主管正坐在他的办公椅上,带上耳机沉溺于自己的世界中。于是你自己思考:他能解决这个问题吗?他会说什么呢?他知道发生了什么吗?他会帮助我吗?

想想之后,你又继续默默地看着屏幕,心里再次决定重新启动电脑,祈祷着也许这一次,错误就会消失不见了。

其实,以上是我们很多开发者的日常,尤其是新人。寻求帮助是第一步是困难的,拖延症又在“保护”着我们。这就是为什么作为开发者的你,必须完善寻求帮助的能力的主要原因。而想要成为一名优秀的工程师,实现生产力才是关键,以下分享寻求帮助的协作技巧。

1.阐明自己的期望值

在不太明确的期望值下,不要开始工作,否则结果只能是模凌两可且容易犯错。举个例子:

走出家门去上班。

离开家去健身房。

这两件事中哪一件比较容易做?早上去上班并不是世界上最简单的事情,但这应该比去健身房要容易得多。因为我知道如果我不去工作,我的同事或主管会发现我没有上班。但平时,并没有人在意我是否去了健身房。缺乏预期意味着没有动力去做。

当你的期望值不清楚的时候,就会拖延、找借口、多次改变主意,也会超期完成工作。

所以在工作中寻求帮助也是如此。如果你觉得没有人期待你去找他们寻求帮助,那么你将会花费一段时间说服自己去做。

当你被困时,可以问主管,他们期望你做什么

这种方式将改变你在工作中获得帮助的方式。当你困扰不知做什么的时候,可以问问主管的建议。谈话之后,开始思考解锁新的工作而不是一直扎根于无法完成的工作之中。

讨论工作的解决方案,直面挑战。

你是否会担心,当你提出这个话题时,你的经理会想什么?那一定要开始对话,并申明你的立场。重申你的主要目标是成为团队自主而有成效的贡献者。然后讨论当工程师在遇到困难时,会做些什么。

列出个人经历,并寻求帮助

描述当你陷入困境时所经历的步骤,包括任何可能在没有帮助的情况下完成不了的事情。在你的经历中,最后一步才是请求帮助。

那么在需要帮助时,不要犹豫。尽可能明确客观地请求帮助。你越能从决策中去除主观判断就越好。

基于文章开始所述的案例,可以列出以下清单:

重新启动了我的开发环境吗?

是否记下了这个问题吗?

使用 Google 寻求帮助了吗?

是否运行了 BUILD 和 CLEAN 命令?

是否搜索了内部文档?

我读了一些相关的源代码有 20 分钟?

如果是这样,请立即向同事求助。

不要忘记和你的经理及同事分享此清单。这是为自己设定明确期望的有力方法。当你学到更多关于如何在你的团队工作时,请记住修改和更新此列表。

2.寻求帮助的时候,要承担全部责任

许多工程师认为寻求帮助是工作失败的原因。对他们来说,求助意味着放弃。当他们寻求帮助时,他们只想解决这个问题,这样就能继续真正的工作了。这就是为什么他们可能会问这样一个问题:

“我的 git 分支搞砸了。你能修复它吗?”

然后他们可能会坐在一边,而另一名工程师拿起键盘并为他们解决问题。他们看着别人的工作时,他们的眼睛呆滞,并不关心这个问题所在。

明确表示你不会放弃

避免使用“我需要你的帮助”或“我无法解决这个问题”这样的短语。这两者都意味着你已经完成了工作,而现在正试图把责任推卸给别人。相反,描述你正在进行的工作,例如:“我正在研究我的开发服务器上的这个奇怪的错误。”

接下来,提示你已经完成的一些工作。 “我已经检查了错误,搜索了源代码,到目前为止还没有找到问题根源。”

最后,描述他们如何参与到你的下一步。 “我要看这个文件来了解发生了什么。如果你有时间,可以与我一起看一下,那将会很有帮助。“

将精力集中在谈话中,帮助每个人都有更好的体验。如果你的同事看到你没有检查出问题,他们将更加热情地帮助你。

积极参与协助的过程

一旦你开始与某人合作,不要撇开,让他们自己工作帮助你。要去建立自己的思维模式,问“为什么”这样的问题,如“为什么一个节点可能不安全?”和“你为什么要看这个文件?”

在这个过程中做简短的笔记。这些以后可能会对你有很大帮助。主动学习比被动学习有效得多,所以尽可能地通过口头和写作来参与。

协作编程需要很多的精力。如果你感觉到你在退步,那么不要害怕说你要自己解决这个问题。明确说明如何探索这个问题,让他们对你有信心地离开。

3.在得到答案之后,继续跟进

在卡住了几个小时后,问题终于解决了,感觉项目又前进了一大步,接下来准备好,继续跟进,毕竟生产力才是关键,对吧?

获得帮助需要来自各方的大量时间投入,只要确保投入不会浪费就行。在得到帮助后要有意识地去做。



巩固学到的东西

这是至关重要的:每当你和某人在一起工作时,记下你所学到的东西。写作是一种能让你大脑像砖块一样把你的想法变硬的烤箱。

永久地保存记录。我发现即使选择一个文件名一项麻烦的工作,所以我用 Quiver 来跟踪我的笔记。这样我的笔记虽然没有组织计划,但依然对我有用。

如果你把问题发布在公司频道上,那记得跟进解决方案。这就形成了一个对你及他人都有用的知识库。它也为你创造更强的成就感,以便鼓励你在将来再次寻求帮助。

间隔重复是记住信息的最有效方式之一。Anki 是管理间隔重复的强大工具,发送给自己一个回旋的电子邮件或延迟 Asana 任务是一种刷新自己的知识库更简单的方法。

表示欣赏,不仅仅是感激之情

如果你让别人感觉帮助你很好,那么他们会做更多的事情。在别人帮助你之后,你可能已经说过“谢谢”了,这显示了感激之情。但欣赏不同于感激,当你欣赏某人时,他们会感到特别和独特。

这里有一些方法可以做到这一点:

在你的团队工作群中,可以表达出:“Alice 帮我弄清楚那个奇怪的错误!”

“昨天我被困扰了一段时间,但 Alice 帮我解决了这个问题,因为她很了解我们的控制器是如何工作。”

写一封电子邮件:“再次感谢你今天抽出了时间帮助我。我现在取得很大的进步。“

在困难解决之后欣赏别人,会让协作少了一些商业化的感觉。相反,则会让人感觉你正在建立一种强大的职业关系。欣赏比看起来更难,所以记住这样做会让你脱颖而出。

解决过的问题,务必记下

软件工程师探索未知的逻辑和数据领域,都会遇到意想不到的事情。有很多东西可以自己发现,然而,与你的同行探险者合作,还有更多的知识需要学习。拥抱它,掌握它。

你解决困难的能力是作为专业软件工程师的关键技能之一,所以,当你遇到问题时,你能给它带来什么?解决并掌握它,你就无敌了。

作为开发者的你,还记得第一次寻求帮助的么样吗?平时会立即寻求帮助吗?

注:文中图片均为视觉中国付费下载。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  bug 工程师