程序员同时从事多个项目是否正常?


40

在目前的工作中,我有两个项目需要处理。第一个是非常庞大的系统,第二个较小,但规模也很大(第一个项目的开发时间为12年,第二个项目的开发时间为4年)。

起初,我只从事第一个项目,并试图适应它。然后我被转移到第二个项目并在那里尝试,所以我对第一个项目的了解变得阴暗。现在,我必须同时处理两个项目。

这对我来说很难,因为尽管它们都使用Java,但是它们使用不同的框架,并且要理解的代码和业务逻辑的数量非常大,所以我真的无法将这两个项目都掌握在心中。

这是正常的,我应该习惯了,尽管我的专长变得非常谦虚,但是如果我只从事单个项目,那怎么办?还是我应该引起关注或更换雇主?


对我来说,从事多个项目工作更适合“车身修理厂”,这是一件坏事,不是吗?

最糟糕的是,当您对项目经验不足时,我无法忍受这种信心。而要进行多个项目的情况使我无法获得深刻的理解,这使我发疯,因为我被带离了舒适的生活\工作区。

不想结束这个问题。仅仅因为我认为,如果您是一名程序员,就应该保证自己所做的更改不会影响系统。但是,如果您缺乏系统专业知识,可以提供什么保证?将空检查放在每个“等于”或其他对象方法调用上吗?-地狱呀!

是否允许您在工作中使用协作和知识管理技术?(例如:Wiki,代码审查工具,对设计文档的访问,项目管理工具,个人任务列表,错误跟踪,即时消息等)。如果没有这些技术,则无法在多个项目上进行工作。
rwong 2011年

这个问题是“超过50%的公司允许多任务处理”还是“多任务处理的好坏”?
Martin Wickman'1

Answers:


54

当人们说“是的,多任务处理很正常”时,我完全不同意。

正常!完全没有,对于开发人员来说,在多个项目中执行多任务是非常不自然的(我将在后面解释)。另一方面,多任务在开发人员中非常普遍。这绝对是您应该习惯的东西。因此,您的问题的真正答案是:如何执行多任务?

首先,您不应该简单地接受命运,因为“您是如此出色的员工”,这意味着您需要承担更多的任务,而这超出了您的处理能力。一点也不,你没有。有时人们被赋予多项任务,因为没有其他人。有时经理无法处理他们的工作,因此他们委派了他们,因为他们无法正确处理项目进度,因此在团队中执行多任务处理。因此,您绝对应该尝试确定是由于工作的一部分还是因为其他人的能力不足而被要求执行多任务。无论哪种方式,您都可以自己判断是否可以接受。如果您对工作不满意,可以在其他地方找到工作。[您,开发商,是商品。雇主知道这一点,并祈祷您永远不会意识到这一点。]

现在关于多任务,当人们说“是的,请来回切换并确保您在每个项目上所做的工作量相同”时,我不同意100%的意见。对不起,但这是一个非常糟糕的建议。

首先,您必须在开发软件时意识到大脑是如何工作的(我知道还涉及其他任务,但让我们专注于该任务)。首先,您需要“接线”,这意味着您需要集中精力,使自己的头脑摆在脑海中。所有变量和方法名称,代码的工作流程,对象模型,并排的线程等等。通常我需要15到20分钟才能到达“区域”。

当您达到这种状态时,您实际上就像在骑自行车一样,正在飞翔并编写代码。一旦被打扰,您可能会失去全部。如果中断时间足够长(5、10或30分钟),您将失去这种心理状态,必须重新开始。

因此,多任务处理很可怕,因为它迫使您离开“区域”并继续前进。如果您不断切换,则意味着您效率不高,因为每次更改为新任务/项目时,您都需要浪费15-20分钟才能再次进入该区域(更不用说它会慢慢融化您的大脑)。

这就像多线程:在某些时候,每两个周期切换线程上下文的成本太高了,因此CPU最终花费比执行真实任务更多的时间来切换上下文。

我强烈建议您阅读Joel Spolsky关于此事的文章:

http://www.joelonsoftware.com/articles/fog0000000022.html

所以我的建议是:尝试学习如何(而不是)多任务,因为这确实很常见。但也要确保自己习惯。有些人可能会花费更多的时间专注于工作,并且在进行多任务处理时会比其他人遭受更多的痛苦。那也没关系。这不是因为通常认为它是正常的。

乔尔说得很好:

实际上,这一切的真正教训是,您永远不应让人们一次完成一件以上的事情。确保他们知道这是什么。优秀的管理者将责任视为消除障碍,使人们能够专注于一件事情并真正完成它。


5
同时进行多个项目并不意味着您可以同时进行编码。那将是多任务的。希望一次只拥有一个项目可能会更可取,但只是梦到La La Land。
JeffO 2011年

1
+1好。如果公司意识到这一点,他们会做得更好。但是有些人这样做了,那就是明天的赢家!
Martin Wickman

谢谢@马丁。我感到有些可笑的是,有些人不理解“多任务”与从事多个项目是一样的。我从未说过同时进行编码与多任务处理一样,您是从@Jeff那里得到的?喝咖啡和编码?你在跟我开玩笑吗?因此,如果您同时呼吸和眨眼,您是否也同时执行多任务???至少阅读整篇文章geez!乔尔(Joel)文章的链接具有非常相似的想法,请先阅读它,然后在此处发表评论。
亚历克斯(Alex)

2
@Alex-@bjarkef和@Jeff绝对正确;有两个项目!=多任务。Joel的帖子以及您关于多任务处理昂贵又浪费的文章是正确的,但它们不一定与从事多个项目有关。
Nick Knowlson

5
例如,假设您决定隔天工作两个项目。上下文切换的成本从何而来?那个中断如何在区域中?可能的情况是,Gasan经常被另一个项目的紧急错误甚至同一项目的紧急错误打断。在那里,多任务成为一个问题,但这并不是要处理两个项目所固有的,即使只有一个项目,也常常是一个问题。
Nick Knowlson

33

是的,这是意料之中的。并欢迎。

有几种方法可以查看此情况:

  1. 预计您将执行多项任务,几乎无法集中精力。这会导致次优工程流程,来回切换时偶尔出现混乱,被利用的感觉,挫折感,压力等。然而,

  2. 您被多个项目所信任,这可以很好地反映您产生的结果以及雇主对您的能力的信任。这是向他们展示信任的必要机会。

我的建议是对哪些任务需要您立即关注,哪些可以等待,做出清醒的判断。有时答案是,两者都不能等待,您需要采取创造性的方法来提供结果(对项目A进行一些操作,对项目B进行一些操作,然后冲洗并重复)。培养在这种情况下壮成长的技能。

通常(尽管并非总是如此),这将获得更多的责任,更多的项目玩弄和更多的期望。在某个时候,您将能够并期望委托其中的一些工作。这是衡量成功的标准。

因此,即使您不断发展的杂耍技能仅被您当前的公司所利用,这些都是很好的技能,将在您的职业生涯中为您提供良好的服务。

对于它的价值,我通常会从事一个大型项目,一个较小的项目,旧项目的维护和支持,以及至少管理另一个项目。这令人沮丧,困惑,疲倦,我非常感谢。


7
与其成为一个听话的仆人和对财富的希望,不如要果断自信并通过指出低效率来增加价值?
Joppe

6
@Tungano-我绝不建议自己是一个“服从的仆人”,而是要承担多个并发责任是善于做事的自然副作用。人们倾向于依靠那些可以使事情成真的人。处理多个责任不一定是效率低下,卑鄙或顺从的。如果您(或@gasan)不能有效地处理几件事,那么一定要让您的雇主知道,这样他们就不会犯以为可以的错误。(FWIW,我没说什么关于财富的。)
bw

这样还可以防止您对项目感到无聊。我目前有大约100个不同的任务等待完成,分布在17个项目中。当然,这确实有时会带来一些压力,但除了将我的全部精力都投入到一个大项目中而无事可做时,我会感到不高兴。
Htbaa 2011年

7
我强烈不同意这个答案。多任务处理不是成功的衡量标准,而是经理无能的衡量标准。知道如何执行多任务并非易事。PS:我自己发布了一个答案,但是到了最后。
亚历克斯(Alex)

6
这个答案没有道理。从某种意义上说,这是“正常的”,许多公司都强迫程序员这样做,但这仍然是浪费公司资源。如果他们一次只专注于一件事情,那么完成的速度会更快。
Martin Wickman

15

是! 在服务公司xD上工作时,这完全是“正常” /正常情况

另外,如果您与开源项目合作,那就是规则

也许不是理想状态,而是每天的面包。


好吧,实际上令我难过的是我所获得的专业水平。我只是没有足够的内存来记住系统业务和技术逻辑,这对我来说似乎是不可能的。每次获得任务时,我都必须非常努力地寻找和调试,因为我对系统不太了解。我对吗,程序员应该是“不了解很多但很快就完成所有工作”的程序员,而不是“完全了解整个系统并在几个小时内修复好忍者”?

4
@gasan我们都想“一次做一件事”。但是,从事多个项目,阅读其他人的代码并满足各种要求通往忍者的道路。
bogeymin

12

很常见 但这并不是很好,因为您已概述了原因。切换上下文会影响生产力,因此,如果可以的话,请尝试在一个项目上花费大量时间,例如一天。


9

我每天都会积极参与2到3个不同的项目。并保持几十个。几个星期来,它有点压倒性的。有些项目很大,有些很小,所以几天就被编码了,很少需要更改。它虽然千差万别,但使我接触到不同的思维方式和解决问题的方式,不同的技术和业务领域。我很享受。

因此,要回答您的问题,是的,这很常见。


所以,你是个湿婆?我几乎无法想象您对该项目的投入。

@gasan,有点荒谬。很小但通常很关键的其他部分。还有一些我只需要维护,因为原来的开发人员已经消失了……而这是最耗时的。
CaffGeek 2011年

8

请查看名为“ 多任务处理让您稍后到达”的文章。该图说明了这个故事:

在此处输入图片说明

换句话说,公司浪费了时间,因为他们的程序员一次只能处理一个以上的项目。仅执行三个项目,浪费就是40%!其余时间分为三个项目。

多任务处理的原因通常被称为“完成更多工作”。但这是错误的推理。多任务处理只会导致延迟所有版本。此图显示了双重任务与一次完成一个项目的效果:

在此处输入图片说明

(图像完全忽略了开销。实际上,浪费的时间会使两个项目都滞后20%。)


4

这取决于公司。IMO只希望只在一个项目上工作,但这通常是不可能的,尤其是对于小型公司。

当然,错误修复等总是可能发生在任何项目中。


您是对的,我现在在一家小公司工作,但是以前我只为大公司工作,所以也许这是造成问题的一部分,我的意思是我没有在小公司工作。

4

是的,以我的经验,这是正常的(即使某些“项目”非常相似,例如同一产品的维护和功能项目)。为避免冲突和不切实际的期望,请与项目经理和您的经理达成共识,以将您的时间分配给每个项目(例如,在X项目上为三天,在每周Y项目上为两天)。然后,您通常可以按自己的喜好分配这些分配,例如X上的周一至周三,Y上的周四至周五。

有偶尔一些时候,一个项目“抛出一个异常”和需求要工作现在。这里有两件事要做:

  1. 确保确实是一个例外,而不仅仅是一个棘手的项目经理:在后一种情况下,请推迟。
  2. 交换您的时间分配,这样您就可以在每个项目上保持相同的分数。

3

如果您发现在切换回项目时很难恢复项目的框架或业务逻辑,那么您应该趁此机会编写尽可能多的文档。用您自己的话说,详细描述复杂系统的工作方式将使以后返回项目变得容易得多。另外,如果您的同事需要帮助,则此文档可能会对他们有所帮助。

如果该项目已经很好地涵盖了技术文档,那么在进行复杂的工作时写下您的想法仍然是有益的。这样,下次下次切换时,您就可以开始思考。


1
很好的建议。我记下了详细的笔记,它们不止一次地派上了用场。
亚当李尔

2

好吧,这不应该是正常的,但是在我目前的雇主那里,我有很多项目要承担。我承认,这需要一些时间来适应。我可能给出的最重要的提示是,始终将工作放在优先位置。强迫老板告诉您什么是优先任务,然后仅执行该任务。不要因为抱怨您的其他项目的人而承受压力。您不一定需要更新简历,但要确保工作负载不会超出您可以合理处理的范围。


2
确实,强迫您的老板告诉您重要的事情。沟通非常重要,如果不保持沟通,可能会给双方造成极大的挫败感和失望。
Htbaa 2011年

0

我认为这很正常。我目前的工作方式(我在一家拥有约40名开发人员的公司中,公司总规模约为700名)。而且我通常有一个“长期”项目,其中会出现许多小票/缺陷,因此最终通常是50%的小票和50%的长期项目工作。可能困难的是,持续的中断会减慢并使长期项目脱轨。


0

我认为在多个项目上工作是正常的。关键是要接受您最初将在系统的总体外观方面面临一些歧义。

如果您试图获得更大的图像,那么您将获得清晰感,并能够发现系统中的移动/固定部件以及您的更改如何影响系统。

在一段时间内,您将学习在所使用的各种系统中找到通用模式。您可以将这些应用到其他项目,这将减少您一次需要记住的细粒度信息量。


0

在任何非平凡的项目中,都分配了一个以上的人。这意味着您需要与他人合作并等待他人完成工作,以及他们也需要等待您。

而不是让人们闲着,通常有多个项目处于活动状态,因此,如果需要,总是有一个开放的任务要做。

您仍应在每个项目上以相当大的块进行工作,以使您可以“在区域内”并富有成效。


-1

我同意那些说法,这是正常/普遍现象。

将其视为一种积极的态度,您会变得更有用,更灵活,并且可以帮助您解决问题!随着您最终全面了解2个系统,可能会更有价值。


-1

恕我直言,这不仅是平常的,而且也是可取的。

我曾经做过的最糟糕的开发工作是连续几个月地在同一应用程序同一部分的同一小部分上工作。镭 而当您感到无聊时,您就会将视线从球上移开...


如果您的工作很无聊,也许您应该找到另一种更有趣的工作,而不是尝试仅使其中一部分变得更有趣。
Acumenus 2014年

我确实做到了-但是认为每项工作的各个方面都会令人兴奋是天真的。
cjmUK 2014年

抱歉,我不能同情。作为一名程序员,我发现所有分配的项目都很有趣,不仅在我现在的工作中,而且在以前的工作中都很有趣。不必激动。那不一样。在令人兴奋和无聊之间存在一个有趣的范围。
Acumenus 2014年

然后,我认为您非常幸运...但是,我怀疑我是在较大的人群中,他们必须顺其自然。
cjmUK 2014年

-1

我了解您的感受,很难使新雇主了解所涉及的发展过程,尤其是如果您的雇主不注重发展。

问题在于,他们看到3个Jobs在一个赚钱者身上共同工作的次数超过了一次,而统计数据表明其绩效下降了40%。那就是40%的利润损失。

我以前曾为某个组织工作过,可以让我一次专注于一个大型项目,中间有少量工作,包括机票和支持等。我们进行了一项交易,其中上午8:00-10:00是机票和对当前系统的支持可以通过电子邮件/电话/帮助台通过,然后是10:00-16:30,或者您的完成时间是完全稳定的。这非常有效,因为我们有一个服务台来接听电话和电子邮件,所以我能够在早上做票,并在一天的余下时间工作。问题是您的管理不善。经理使所有这些事情发生了,并且在没有他们的支持或不了解您每天面临的挑战的情况下,他们对事实一无所知。

特别是在上一份工作得到经理的支持和理解时,我一直心存感激,这使我的生活更加轻松,压力减轻了,我们仍然完成了所有工作。

另一个问题是,老板的爱钱,他们看到了金钱中的项目,当他们有5个项目同时花费20,000英镑(并且您是一个单独的开发人员)时,这笔钱就达到了100,000英镑。如果无法满足这些要求,就会破坏公司声誉,错过了最后期限,并且由于缺乏集中力,导致系统出现故障。

我完全同情你,我现在处于你的位置。


这如何回答所提问题?
蚊蚋

-2

这取决于您如何描述项目。通常,开发人员会遇到一些问题,如果公司中有多个产品,而您却没有多个产品。


我们提供2种单独的产品,它们共享一些代码。这些产品可满足不同的用户需求,但它们仍属于同一领域。

-2

像爱情伙伴一样,软件项目可能很多,而且很多,但很多时候只有一次。


-2

除了@Martin Wickman所说的以外,请尽量不要对任务进行太多切换。例如,在项目A上工作AM,在项目B上工作PM。当您没有全职从事项目时,这会更加痛苦。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.