专门的维护工作会妨碍程序员的职业吗?[关闭]


52

在过去三年中,我的大部分工作主要围绕维护旧系统,这些旧系统需要修补或偶尔进行改造,然后再出售。

我了解专门的维护程序员在拥有大量项目且开发人员有限的公司中必须发挥的关键作用。

但是,当我判断自己目前的职业发展并与同龄人看时;承包商和企业开发商都一样;我确实感觉自己已经远远落后了,因为我在接触的领域上获得了很大的广度,但是深度并不多。我已经开始建立博客来解决这个问题,从事我自己的git-hub小项目,并重新安排我的生活,让他们有时间定期下班后进行个人编码。

我觉得如果我要去其他公司面试以逃避维护工作,我将不得不把自己表述为熟练的技能水平,因为我不会拥有具有三年工作经验的人需要的知识深度功能开发的路径。因此,从长远来看,我目前的工作经验的一半将变得毫无价值。

但这引出了我的主要问题,如果感觉太围绕我的个人困境,我深表歉意:

专门的维护编程角色最终会损害早期的职业生涯吗?其他程序员是否应该避免此类角色?除非您准备从高中开始,否则从事这方面的工作是否会使您锁定执行类似的任务?


我认为与您从事维护工作还是进行新开发相比,您职业生涯早期使用的技术(远远)更为重要。如果您使用内部语言或较旧的语言进行新开发而几乎没有需求,那可能比不使用更高需求的语言进行新开发要差得多。
stoj 2013年

6
它肯定会树立个性。
–quant_dev

Answers:


70

专门的维护编程角色最终会损害早期的职业生涯吗?其他程序员是否应该避免此类角色?除非您准备从高中开始,否则从事这方面的工作是否会使您锁定执行类似的任务?

首先,您应该知道自己已经相当一段时间被视为大三了。您可能会因为自己的好而获得任意晋升,这是给您带来体面的薪水的唯一方法,但是您在下一份工作时仍然会被视为初级。

其次,如果我雇用的是具有2-4年经验的人员,那么我真的不在乎他们的工作是否纯粹是维护工作。如果您已经花了10年的维护时间,而我正在为一个绿地项目聘用,我可能会有疑问,但是在头几年中,我真的很期待。

另一方面,如果我雇用从未从事过维护工作的人员,我会变得更加可疑。我有许多应聘者的工作,他们在开始的头四年中从一项“好”工作跳到了另一项工作,而且每个人都对可维护代码的构成一无所知。而且,不要误会,如果我正在招聘一个我打算坚持的未开发项目,那么我不在乎是否要维护代码,我关心的是您知道如何使其对将来的开发人员可维护。

您提到的其他程序员,他们避免这样的工作,通常是因为没有那么有趣而避免他们,而不是因为这阻碍了他们的职业生涯。

最后,您应该知道,很大比例的软件开发工作(保守地估计大约占80%)超过50%的维护工作。

因此,为了解决所有问题并回答您的问题:不,我认为这不会阻碍您的职业生涯。除非您在那儿呆太久。普遍的经验法则是:“一旦您开始觉得自己每年都获得相同的经验,那就该走了。” 如果您觉得自己像去年比以前是一个更好的开发人员,那您就很好(这对我来说,职业生涯20年对您来说是一样的)。


25
+1进行维护可使某人更好地发展。

8
+1对您自己或其他人的项目进行维护会迫使您欣赏和学习项目早期做出的决策的后果。
Ophidian 2013年

虽然拥有维护经验是理想的选择,但我的观点是,您从开发成功的项目中学到的知识>您可以学到的维护他人项目的知识。维护可能会教您不要做什么,但正如杰森·弗里德(Jason Fried)所说的那样:从失败中学习可能会告诉您下次不应该做什么,但是并不能告诉您下次应该做什么
Korey Hinton 2013年

@KoreyHinton:我确信成功的企业家Jason Fried会相信他所说的话,成为一名企业家。我会说a)他实际上并不知道他会做得更好,因为事情对他来说非常正确,b)支持DHH和Rails是37signals成功的90%,这是一场赌博,不会有回报节省了90%的时间,并且c)甚至杰森也可能不会声称关于成为企业家的建议必然会转化为从必须组装糟糕的软件中学习。
pdr

@pdr你是对的,这两件事并不能完全翻译。当我还是一个学生的时候,我说的是观点而不是经验。我个人认为我更喜欢编写新代码,而不是维护其他人编写的代码,但这听起来像是维护,这是我将在该领域做的很多事情。
Korey Hinton 2013年

13

在任何工作中,您获得的经验都是针对您所从事的工作的,这会限制您根据该经验申请其他工作的可能性。它不是专门针对维护的。我认为,除了维护还是新软件开发之外,还有其他问题更重要:

  • 您正在使用的特定技术的普及程度如何? 如果您维护的东西已经过时并且很少在其他地方使用,那么这将限制您未来的职业机会(但是为未得到广泛使用的系统/平台/技术开发新软件也将受到限制)。
  • 您目前的工作如何为您将来的工作做好准备? 正如您所指出的,维护工作很重要,而且将永远存在。专注于此类编程没有错。对于系统维护人员来说,总会有很多可能性。但这也许不是想要的。如果您当前的工作没有为您感兴趣的事情做好准备,那是一个问题。

但是,我不会太担心。您说的一件事是:

就我所接触的领域而言,我获得了很大的广度,但深度不多。

不要认为这是一个问题,因为它可以为您带来好处。拥有丰富的经验意味着您可以对很多事情说“是的,我已经做到了”。许多工作要求获得几种不同技术和任务的经验。与在某项技术上拥有非常丰富经验的开发人员相比,您可能会具有优势。

此外,许多工作涉及维护和新开发的混合。如果您想进行更多的新开发,则可以利用现有的维护经验过渡到混合角色,这将为您带来更多的开发经验。

总之,您的简历可能比您想象的要好。其中很多取决于您对经验优势的分析能力,然后在申请和面试过程中交流这些优势。


+1关于广泛的经验。经过15年的开发和最后一年的维护,我可以从亲身经历中得知,我接触到的语言和平台要比停留在开发中要多得多。作为自由职业者,广度高(综合主义者)给我一种令人欣慰的感觉,即不太可能很快失业。也许这是以牺牲专科医生(专家)时赚更多钱的可能性为代价的,但是我宁愿降低风险。
Lieven Keersmaekers 2013年

2

专门的维护编程角色最终会损害早期的职业生涯吗?

多数情况下-是,假设:

  • 职业在这里是指在许多不同的技能专长。
  • 您在那里花费了X多年,而X足以“设定”您的思维方式。
  • 你什么都不做。
  • “专用维护者”(请参见下面的“编辑”)意味着您无需编写代码来维护编写新事物,而是几乎总是编写代码以维护或以维护模式在项目上工作-不需要任何新功能,至少修改代码以修复该错误。

这并不意味着总是如此。

很少鼓励维护软件的(请参阅下面的EDIT)进行研究,很少会插入新的库或数据库并花几天的时间来研究软件的工作原理。(通常)这是一项稳定的工作,需要对现有代码库进行最少的更改,从而“塑造”以后解决问题的方式。我可以说出很多公司的政策,这些政策旨在维护软件,明确规定“代码中的更改更少=更好”,尽管这可能带来不利的后果。

其他程序员是否应该避免此类角色?

我知道非常好的维护者喜欢他们的工作,并且不想因为他们在自己的位置很舒适而愿意申请其他东西。并非每个人都时不时地喜欢学习新事物。所以-根据您的喜好避免或寻找它。

除非您准备从高中开始,否则从事这方面的工作是否会使您锁定执行类似的任务?

更多的是-是的。因为您已经有这样做的经验,因为您已经“知道了绳索”等。但是换班绝对是可能的,并且可能会发生,而无需申请初级职位。您已经开始将事情放在一边,继续努力吧!这实际上非常值得,并且可以缩小您注意到的“技能差距”。


编辑:丹已经指出(非常正确),维护任务通常可以通过研究来完成。那是真实的。我在两个地方更改了上面的答案,以更好地解决这个问题。

这样的任务肯定可以用这种方法来完成,如果他们做的很好,那就太好了!但是遗留系统的AFAIK最敬业的维护者有政策或管理层的预期和期限是-再次,往往不是 -强迫他们到解决问题,至少改变成为可能。通常压力很高,即使您可以通过这种方式这样做,也可能不想这样做。尤其是如果它不是您的代码:如果没有理论依据(根据Ryle和Naur),则背后有破坏的风险比修复的风险还要大。

不过,应该注意:我没有可靠的全球数据,我是根据自己的经验说的-我在OP的情况下工作,我招募了4-10年的维护人员经验,我与许多维护人员进行了交谈,知道人们是专门的维护者。不仅是编写新事物的人,而且还编写代码来维护项目-专门的维护者,他们唯一的工作就是漏洞和补丁,甚至没有一项新功能,因为它是旧项目,现在仅处于“维护模式”。


@ dan1111,哪些部分不是?尽管这是重复的,但我会很乐意让答案更好。
LAFK说恢复莫妮卡

谢谢丹。我将在某种程度上扩展我的答案,以突出显示我认为包含您评论答案的部分。
LAFK说恢复莫妮卡

+1为答案做其他工作。特别是,解释您自己的经验范围有助于建立答案的可信度。

“人们维护软件……很少能插入新的库或数据库,而花几天的时间来了解其工作原理。” 那真的不是我的经验。维护程序员必须善于研究陌生的事物并快速理解其本质(无论是程序还是库)。至少,如果您要维护不同的东西,那就是这种情况。如果您多年来一直都在维护同一件事情,那么与之相反的负面影响并不是由“维护”引起的,它们是由于对同一件事情进行太长时间的工作所造成的(无论它位于何处)生命周期)。
user1172763

嗨@ user1172763。我必须说,您的维护定义非常特殊。我相信我为Dan添加的部分将解决更有趣的维护案例,例如您的案例。但是我不认为这是标准维护。只是为了验证-否决票的原因是因为您的经历与我的答案不符?然后,请像我所说的那样说出您的出处,以便其他人可以阅读和决定。
LAFK说恢复莫妮卡2014年

1

我将不得不以自己的技能水平为初级,因为我不具备拥有三年经验的人员所需的知识水平,而该经验只专注于特征开发的特定路径,

正确。你就不能说“3年设计经验用X,Y和Z从头系统”,你不得不说“3年经验MAINTAINING用X,Y从无到有系统和Z”除非你想正确地躺在你的简历上。

我觉得如果我要去其他公司面试以逃避维护工作,我将不得不把自己表述为熟练的技能水平,因为我不会拥有具有三年工作经验的人需要的知识深度特征开发的路径将

如果您想说“我从头开始设计和构建系统”,那么可以,您必须将自己归为初级。

在IT部门中,很普遍(我并不是说这就是您正在做的事情),是因为人们假设他们已经工作X年,因此拥有X年的工作经验,并且在{不确定的年数}之后应该被视为高级{Widget}开发人员。

现在,请不要误会我,维护工作没有错,每个人都必须在某个时间或另一时间做这件事,但是您已经意识到,这样做太长时间会令您难以接受在未来摆脱这个角色。这常常与“卡住”而不学习新技术/工具/方法并驾齐驱。

理想情况下,您需要将“新”系统工作和旧工作混合使用。

令人欣慰的是,您大概已经看到了许多不同的体系结构(好的和坏的),不同的方法,错误的决策如何使遗留程序员在以后的工作中变得更加困难。这些都是可以强调的积极因素。

祝好运!


0

从不同的角度来看,我认为以维护专家的身份推销自己是一个可销售的机会。

作为一家拥有多个正在进行的项目的软件公司的所有者,我必须最小化的最大风险之一是跳船的开发人员以及随后对其代码的维护。

因此,假设您有能力对维护工作充满激情(我想是这样,因为您准备就您的经验写博客),如果您来找我作为维护专家提供服务-保证完善所有通过重构,优化和记录他们的代码以实现长期可维护性来解决我开发人员的各种项目,并且您拥有支持您的保证的良好记录,我很快就雇用了您。

我的建议是尝试一下。将自己定位为维护专家并培养您的博客。您可能正在做某事。

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.