O trabalho de manutenção dedicado dificulta a carreira de um programador? [fechadas]

51

A maior parte do meu trabalho nos últimos três anos tem sido em grande parte mantido em torno de sistemas legados que precisavam de conserto ou a renovação ocasional antes de serem vendidos novamente.

Eu entendo o papel crítico que os programadores de manutenção dedicados precisam desempenhar em empresas com um grande número de projetos e desenvolvedores limitados disponíveis.

Mas, ao julgar o progresso da minha carreira atual, vejo meus colegas; empreiteiros e desenvolvedores corporativos; Sinto-me como se estivesse atrasada desde que ganhei uma grande amplitude em termos das áreas que toquei, mas não de muita profundidade. Comecei a abordar isso iniciando um blog, trabalhando em meus próprios pequenos projetos de hub e reescalonando minha vida para ter tempo para fazer codificações pessoais depois do trabalho regularmente.

Eu sinto que se eu fosse entrevistar em outras empresas para escapar do trabalho de manutenção, eu teria que me representar como um iniciante em nível de habilidade, já que não teria a profundidade de conhecimento exigida de uma pessoa com três anos de experiência. em um caminho particular no desenvolvimento de recursos seria. Então, metade da minha atual experiência de trabalho não valeria nada a longo prazo.

Mas isso me leva a minhas principais perguntas, desculpas se isso se sentir muito centrado em torno do meu dilema pessoal:

As funções de programação de manutenção dedicadas acabam sendo prejudiciais para um início de carreira? Outros programadores estão certos em evitar papéis como esses? Esta linha de trabalho faz com que você faça tarefas semelhantes, a menos que esteja preparado para começar de novo?

    
por Gyurme 04.06.2013 / 10:32
fonte

5 respostas

70

Do dedicated maintenance programming roles end up being detrimental to an early career? Are other programmers right to avoid roles like these? Does doing this line of work lock you into doing similar tasks unless you're prepared to start over as a junior?

Primeiro, você deve saber que você é considerado um júnior por um bom tempo. Você pode receber promoções arbitrárias porque você é bom e esta é a única maneira de dar a você um pagamento decente, mas você ainda será considerado um júnior quando estiver no seu próximo emprego.

Segundo, se eu estou contratando alguém com 2-4 anos de experiência, eu realmente não me importo se o trabalho deles era puramente de manutenção. Se você passou 10 anos em manutenção e eu estou contratando para um projeto greenfields, eu posso ter dúvidas, mas, nos primeiros anos, eu honestamente espero isso.

Por outro lado, se estou contratando alguém que NUNCA trabalhou em manutenção, ficarei mais desconfiado. Eu tive muitos candidatos para empregos que passaram os primeiros 4 anos pulando de um "bom" trabalho para outro e cada um não aprendeu nada sobre o que faz para o código de manutenção. E, não se engane, se eu estou contratando para um projeto greenfields que pretendo manter, eu não me importo se você vai manter o código, eu me importo que você saiba como deixá-lo sustentável para futuros desenvolvedores. / p>

Esses outros programadores que você menciona, que evitam empregos como esses, geralmente os evitam porque são menos divertidos, não porque atrapalham a carreira deles.

Por fim, você deve saber que uma porcentagem muito grande (acho que acho que cerca de 80%) dos trabalhos de desenvolvimento de software são mais de 50% de manutenção.

Então, para superar tudo isso e responder à sua pergunta: não, não acho que isso atrapalhe sua carreira. A menos que você fique lá por muito tempo. A regra comum é "quando você começa a sentir que está recebendo o mesmo ano de experiência todos os anos, é hora de ir." Se você sente que, a cada ano, como se fosse um desenvolvedor melhor do que no ano passado, você está bem (e isso vale para mim, 20 anos na minha carreira, tanto quanto você).

    
por 04.06.2013 / 12:02
fonte
13

Em qualquer trabalho, a experiência que você recebe é específica para o que você está fazendo, o que limita o seu leque de possibilidades quando se candidata a outros trabalhos com base nessa experiência. Não é específico para manutenção. Acho que outras questões são mais relevantes do que se algo é manutenção ou desenvolvimento de novo software:

  • Quão difundidas são as tecnologias específicas com as quais você está trabalhando? Se você está mantendo algo que é obsoleto e raramente usado em outros lugares, isso limitaria suas futuras oportunidades de carreira (mas também desenvolveria novos softwares para um sistema / plataforma / tecnologia que não é amplamente utilizada).
  • Como o seu trabalho atual equipa você para o trabalho que você quer fazer no futuro? O trabalho de manutenção, como você apontou, é importante e estará sempre por perto. Não há nada de errado em ter uma carreira voltada para esse tipo de programação; sempre haverá muitas possibilidades para os mantenedores do sistema. Mas talvez não seja o que você quer fazer. É uma preocupação se o seu trabalho atual não está preparando você para o que você está interessado.

No entanto, eu não ficaria muito preocupado. Uma coisa que você diz é:

I've gained a great deal of breadth in terms of the areas I've touched but not much depth.

Não pense nisso como um problema, porque pode ser usado para sua vantagem. Ter ampla experiência significa que há uma grande variedade de coisas para as quais você pode dizer "sim, eu fiz isso". Muitos trabalhos pedem experiência em várias tecnologias e tarefas diferentes. Você provavelmente teria uma vantagem sobre um desenvolvedor que possui uma experiência muito profunda em uma tecnologia.

Além disso, muitos trabalhos envolvem uma mistura de manutenção e novo desenvolvimento. Se você quisesse fazer mais novos desenvolvimentos, você poderia usar sua experiência de manutenção existente para fazer a transição para uma função mista que lhe dará mais experiência em desenvolvimento.

Em conclusão, seu currículo é provavelmente melhor do que você pensa que é. Muito disso se resume a quão bem você analisa os pontos strongs de sua experiência e, em seguida, comunica esses pontos strongs no processo de inscrição e entrevista.

    
por 04.06.2013 / 10:59
fonte
2

Do dedicated maintenance programming roles end up being detrimental to an early career?

Mais frequentemente do que não - SIM, assumindo:

  • que carreira aqui significa experiência em muitas habilidades técnicas diferentes.
  • que você gasta mais de X anos, onde X é o suficiente para "definir" seus modos de pensar.
  • que você não faz nada de lado.
  • que "mantenedor dedicado" (veja EDIT, abaixo) significa que você não codifica para manter bem como codifica coisas novas, mas que você quase sempre codifica para manter ou até mesmo trabalhar em um projeto no modo de manutenção - sem novos recursos, exigidos menos alterações no código para corrigir o bug.

Isso não significa que é sempre o caso.

O software de manutenção de pessoas raramente é incentivado (consulte EDIT, abaixo) para fazer pesquisas, raramente pode conectar nova biblioteca ou banco de dados e passar alguns dias descobrindo como funciona. É (normalmente) um trabalho estável que requer mudanças mínimas na base de código existente e, assim, "modela" a maneira como você aborda os problemas mais tarde. Posso citar algumas empresas que têm uma política para manter software que declara explicitamente "menos alterações no código = melhor", apesar das coisas ruins que isso pode trazer.

Are other programmers right to avoid roles like these?

Eu sei que bons mantenedores que gostam de seus trabalhos e não querem que se inscrevam em outra coisa precisamente porque é confortável onde eles estão. Nem todo mundo gosta de aprender coisas novas de vez em quando. Então, evite ou procure, dependendo de suas preferências.

Does doing this line of work lock you into doing similar tasks unless you're prepared to start over as a junior?

Mais frequentemente do que não - SIM. Porque você já tem experiência em fazer isso, porque você já "conhece as cordas", etc. Mas mudança é definitivamente possível e pode acontecer sem se candidatar a uma posição júnior. Você já começou a fazer as coisas de lado, continue assim! Isso realmente vale a pena e pode diminuir a 'lacuna de habilidades' que você percebeu.

EDIT: Dan apontou (muito corretamente), que as tarefas de manutenção podem ser feitas frequentemente com pesquisa. Isso é verdade. Eu mudei a resposta acima em dois lugares para melhor resolver isso.

Tais tarefas certamente poderiam ser feitas dessa maneira e se elas são - ótimo! No entanto, os mantenedores mais AFAIK dos sistemas LEGACY têm políticas ou expectativas de gerenciamento e prazos que - mais uma vez, mais frequentemente do que não - os coagi a resolver o problema com o mínimo de mudanças possíveis. Muitas vezes a pressão é alta o suficiente para que, mesmo que você possa fazer isso, talvez não queira. Especialmente se não for o SEU código: sem teoria (como por Ryle e Naur) por trás, você corre o risco de danificar mais do que conserta.

No entanto, deve ser notado: Eu não tenho dados globais concretos, falo por experiência própria - trabalhei em uma situação como OP, recrutei pessoas com 4 - 10 anos de experiência como mantenedores, conversei com muitos mantenedores e conheço pessoas que trabalham como mantenedores dedicados . Não apenas pessoas que codificam coisas novas, mas também codificam para manter mantenedores dedicados ao projeto, cujo único trabalho é fazer bugs e patches e nem mesmo um novo recurso, porque é um projeto antigo e agora está apenas no "modo de manutenção".

    
por 04.06.2013 / 16:48
fonte
1

I would have to represent myself as being quite junior in skill level since I would not have the depth of level of knowledge required of a person with three years experience focused on a particular path in feature development would

Correto. Você não seria capaz de dizer "3 anos de experiência projetando sistemas do zero usando X, Y e Z", você teria que dizer "3 anos de experiência MANUTENÇÃO de sistemas a partir do zero usando X, Y, e Z "a menos que você queira mentir em seu currículo.

I feel that were I to interview at other companies to escape maintenance work I would have to represent myself as being quite junior in skill level since I would not have the depth of level of knowledge required of a person with three years experience focused on a particular path in feature development would

Se você quiser dizer "Eu projeto e construo sistemas a partir do zero", então sim, você teria que se classificar como júnior.

O que é bastante comum em TI (e não estou dizendo isso é o que você está fazendo) é para as pessoas assumirem que por terem trabalhado por X anos, elas têm X anos de experiência e após {número indeterminado de anos} eles devem ser considerados um desenvolvedor Senior {Widget}.

Agora, não me entenda mal, não há nada errado com o trabalho de manutenção, todo mundo tem que fazer isso em algum momento ou outro, mas o que você percebeu é que ficar preso fazendo isso por muito tempo provavelmente dificultará para você se afastar desse papel no futuro. Isso geralmente anda de mãos dadas com o fato de estar "preso" ao não aprender novas tecnologias / ferramentas / métodos.

O ideal é que você deseje uma mistura de "novo" trabalho de sistema e trabalho legado.

Em uma nota positiva, presumivelmente você já viu muitas arquiteturas diferentes (boas e ruins), abordagens diferentes, como decisões ruins podem fazer com que os programadores legados trabalhem com mais afinco mais tarde. Estes são todos positivos do que podem ser acentuados.

Boa sorte!

    
por 04.06.2013 / 11:36
fonte
0

Olhando para isso de um ângulo diferente, acho que vender-se como especialista em manutenção é uma oportunidade comercializável.

Como proprietário de uma empresa de software que possui vários projetos em trânsito, um dos maiores riscos que eu tenho que minimizar é o dos desenvolvedores que abandonam o serviço e a manutenção subsequente de seu código.

Então, assumindo que você é capaz de se apaixonar pelo trabalho de manutenção (o que eu acho que é o caso, já que você está preparado para blogar sobre sua experiência), se você veio me oferecer como guru de manutenção - garantindo para polir todos os vários projetos de meus desenvolvedores refatorando, otimizando e documentando seu código para manutenção a longo prazo - e você tinha um histórico para fazer backup de sua garantia, eu contratava você em um piscar de olhos.

Meu conselho seria dar uma boa tentativa. Posicione-se como um especialista em manutenção e cultive seu blog. Você pode estar em algo.

    
por 05.06.2013 / 20:32
fonte