软件工程师如何应对压力?

162 阅读5分钟

软件工程师的主要压力来源不是由开发技术造成的,它们是由经理或者项目引起的。

我总结了以下几个方面:

1、工作任务描述不清晰

如果我得到的工作任务要求不明确,我会要求提供更多细节。我明确表示,在了解工作的全部范围之前,我无法估算成本或完成时间。在专业的软件工程环境中,应该花费大量时间根据任务的复杂性来估计工作。如果您在了解项目要求之前同意最后期限,您可能会陷入压力很大的义务中。

对此我们要小心。项目经理们经常坚持认为软件开发工程师过已经做了估算,然后他们依据这个对付开发人员,说这是开发做出的估算,所以他们不会说这是强加给他们的估算。

当您在了解工作范围之前被要求进行估算时,请记住使用以下标准回答:“我稍后回复您。”

2、日程安排太激进了。截止日期是不可能的

在我刚加入一家公司时,主要工作内容是让一个系统项目重回正轨,因为该项目已经落后于计划并且前任团队负责人已经辞职。我大致知道这个项目是什么,但我不知道已经做了多少,还需要做多少。在我上班的第一天,一位销售人员告诉我,他想在两周后举行的年度会议上向客户展示该软件。他要我保证到那时完成软件。我告诉他我需要两周的时间来了解项目的当前状态并对完成情况做出估算。告诉他“不”是有点压力,但做出承诺却没有兑现会更加糟糕。

3、按计划完成工作需要很长的工作时间和很少的休息时间

不要陷入让管理层胁迫你工作到精疲力尽的陷阱。如果你这样做,你会犯更多的错误,你的代码将需要被废弃和重写。你不是一台机器——即使是机器也需要时间来维护、清洁、修理等。如果你保持身体健康、头脑清醒,你将能够更好地集中注意力并做出更高质量的工作。你将有更好的机会按时完成工作。

4、新的要求是在项目后期添加的,但他们仍按原来的时间计划表。

当他们想要添加更多功能时,告诉他们您将评估新需求,看看是否可以在对日程安排造成最小干扰的情况下添加它们。尽你所能并诚实地努力做到这一点。但有时新功能需要对当前已部分实现的代码设计进行重大更改。

联系产品经理并让他们知道这一点。向他们展示以下选项:

  • 将他们的新功能想法推迟到“第二阶段”(即软件的未来修订版)。
  • 从当前项目中删除一些耗时且尚未实现的其他要求。
  • 做出妥协以降低一个或多个功能的复杂性,从而减少实施时间。
  • 延长项目期限,为额外功能提供足够的时间。

如果他们仍然要求他们想要所有功能并且不改变时间表,那是不现实的。礼貌地告诉他们,他们需要选择其中一个选项,否则他们会感到失望。这使得艰难的选择成为他们的责任,从而减轻了我的压力。

5、计划外的工作和警报会打断并破坏注意力

这是压力的一大来源,因为在中断后很难恢复需要集中注意力的工作。这已经经历过过多次了。这不仅仅是完成计划外任务所需的时间。在任务之间转移注意力也需要时间。如果这种情况每天发生几次,您可能会失去一整天的所有生产力。

如果软件工程师需要待命或帮助进行计划外的分析或故障排除或技术支持,那么他们应该明确表示任何进度估计都是不可预测的。你的压力来自于你是否能够足够高效地按时完成任务的不确定性。您可以通过坚持每次被打扰时都必须延长截止日期来减轻这种压力。

6、软件工程师应该能够理解并高效地使用任何类型的技术,而无需花时间培训

解决这个问题的最好方法是撒点小谎,为每个估计增加一些时间,以便进行研究、自我训练、调试并从技术支持那里获得答案。不幸的是,现实是,如果公司已经向软件工程师支付了高薪,他们就无法证明培训时间的预算是合理的。因此,您必须将必要的培训时间纳入工程估算中。

将培训隐藏为工程的一种方法是安排部分项目来实施“原型”或“概念验证”。这些基本上意味着您将进行练习,结果将是一个未优化的实现,打算在最终截止日期之前废弃并重做。