Um pouco de fundo :
Estou trabalhando em uma grande empresa, usando o Windows XP e codificando Winforms no VB6 / VB.Net e algumas WebForms no VB.Net (código de manutenção de 95%). Eu tenho uma tela de 4: 3 19 ". Uma versão mais moderna do Windows não está acontecendo tão cedo, e nenhum trabalho greenfield é feito pelo que parece!
Não me disseram nada sobre isso quando entrei na empresa, fiquei enganado ao pensar que estaria trabalhando com tecnologias e estruturas muito mais atualizadas.
Tenho uma experiência muito mais atualizada em trabalhos anteriores, tanto com estruturas mais modernas quanto com outras linguagens de programação, e quando estou conversando com amigos de desenvolvedores de outras empresas, só ouço falar sobre como eles estão usando a estrutura mais recente do ASP MVC, ou Vagrant / Ruby on Rails / etc e estou recebendo os olhos verdes!
Eu poderia me arrumar com outro emprego rapidamente, mas sinto que deveria dar mais uma chance a esse.
A questão :
Estou tentando me convencer de que meu trabalho atual não é tão ruim assim. Então, quais são as vantagens desse tipo de papel? Existem vantagens em trabalhar com tecnologias desatualizadas? Talvez algumas técnicas que eu não aprendesse trabalhando com as mais modernas? Ou esse é o tipo de lugar onde as carreiras vão morrer, e eu deveria sair enquanto ainda tenho minha alma?
Respostas:
Ah, mas lá estão eles brincando com seus brinquedos, e você está fazendo um trabalho real, usando uma ferramenta que faz o trabalho para obter uma solução.
É isso que você deve considerar - o software é frequentemente um caso amador, com pessoas pulando de uma nova tecnologia interessante para a próxima moda mais recente. Existem outros que a tratam como uma carreira muito mais profissional, onde as ferramentas não importam tanto quanto o produto ou solução que você cria.
Há lugares em que a tecnologia antiga precisa ser substituída por algo novo, mas geralmente são apenas atualizações, não substituições por atacado. Por exemplo, o VB6 é atualizado para o VB.NET, o Visual Studio 2002 é atualizado para o Visual Studio 2012. Quem entra em uma reescrita completa sempre acha que as coisas não são tão fantásticas com as novas ferramentas. (é por isso que Joel, entre outros, diz que a reescrita é sempre a resposta errada)
Portanto, concentre-se em realizar as coisas e atualize-o onde puder, devagar e com cuidado, onde isso fizer sentido - não porque você queira brincar com os brinquedos mais novos (que serão descartados em breve), e a última coisa que você deseja é manter um sistema escrito por pessoas que codificaram a tecnologia legal do ano passado )
fonte
Há, de fato, vários benefícios para uma empresa ficar com tecnologias desatualizadas:
Às vezes, coisas herdadas não funcionam com coisas novas
Uma empresa pode ter investido uma grande quantia de dinheiro em sistemas que simplesmente não funcionam com idiomas ou sistemas operacionais mais recentes. Um exemplo clássico são muitos aplicativos da Web da intranet que são compatíveis apenas com o IE6 e IE6. A escolha entre aderir ao Windows XP + IE6 e jogar fora um sistema operacional e investir dinheiro no novo não é óbvia.
Mudar para mudar não é uma escolha sábia
Exemplo: muitos bancos ainda continuam mantendo aplicativos originalmente escritos em COBOL. Quando as coisas funcionam, por que uma empresa decide reescrevê-la em outro idioma, dado o custo de reescrever um grande sistema crítico de negócios, bem como o risco de errar, introduzindo um monte de novos bugs? (Um dos motivos é descrito abaixo)
As licenças são caras
Digamos que uma empresa tenha algumas centenas de desktops que usam o Windows XP. Eles querem migrar para o Windows 8. Qual é o custo de uma única licença do Windows 8 Enterprise? E se multiplicarmos esse custo pelo número de máquinas?
Torna-se ainda pior para servidores. Uma licença única para Oracle ou Microsoft SQL Server custa entre US $ 30.000 e US $ 40.000. Se uma empresa possui, digamos, cinquenta servidores de banco de dados, ela se torna rapidamente muito cara mesmo com o licenciamento por volume.
Na minha empresa, estamos presos ao Visual Studio 2010. Sofremos com seus inúmeros erros e sabemos que eles nunca serão resolvidos, pois a Microsoft abandonou esta versão. Mas US $ 13.000 (considerando que precisamos da versão Ultimate por causa de seus recursos exclusivos que não estão disponíveis em outras versões) são altos demais para que possamos atualizar para o Visual Studio 2013.
Dito isto, também existem desvantagens importantes.
Coisas herdadas não atraem novos talentos
Esse é um dos problemas das empresas que mantêm aplicativos COBOL: elas têm dificuldade em encontrar desenvolvedores baratos. Além disso, trabalhar em mainframes e escrever código COBOL não é algo atraente para pessoas criativas.
Embora sejam uma boa opção para sistemas de backbone que precisam permanecer sólidos, esses sistemas e idiomas não se encaixam bem em produtos que exigem inovação constante.
Velho não significa seguro
Como reescrever um produto em um novo idioma pode introduzir novos bugs, manter os sistemas antigos que não são mais suportados também pode ser perigoso. Imagine que um bug seja encontrado no Windows 98, o que poderia comprometer todo o sistema: a Microsoft lançaria uma atualização para resolvê-lo?
O legado é viral
A incompatibilidade entre sistemas legados e sistemas mais recentes significa que, frequentemente, quando você adere a um produto, idioma ou infraestrutura antigos, não poderá atualizar em outro lugar. Um aplicativo de intranet antigo que funciona apenas no IE6 leva ao Windows XP em todas as áreas de trabalho, o que significa que você não pode migrar para uma nova versão do Active Directory, o que significa que você não pode usar novos aplicativos que exigem a versão mais recente do Active Directory e em breve.
Produtividade
Novas versões de produtos trazem novos recursos que, às vezes, aumentam a produtividade. Uma tarefa que levaria uma hora com o Visual Basic 6.0 poderia ser realizada em menos de uma hora com o Visual Studio 2013, porque o Visual Studio 2013 e o .NET Framework 4.5 trazem Intellisense aprimorado, Entity Framework e milhares de outras coisas que reduzem o código para escrever, aumente a velocidade de escrita do código e diminua o risco de introdução de erros.
Se o exemplo não estiver claro o suficiente, aqui está outro. No Windows 3.1, os administradores de sistema configuravam todas as máquinas, uma a uma, manualmente (a menos que houvesse alguma automação da qual não conheço). Hoje, eles usariam o PXE e o Windows Assessment and Deployment Kit para implantar em minutos um novo sistema operacional e software em milhares de máquinas automaticamente.
O uso de versões mais antigas pode simplesmente se tornar um custo proibitivo. Pode não ser óbvio para alguns usuários que estão felizes em usar o Windows 95, mas é muito mais óbvio para desenvolvedores, administradores de sistemas, designers, cientistas e outras pessoas que dependem fortemente do poder do hardware e aplicativos.
fonte
Há algumas vantagens em desenvolver com tecnologias desatualizadas, mas se elas superam ou não o custo que você sofre por perder a fluência com suas substituições e a dor de trabalhar com elas é uma escolha pessoal entre você e elas.
Posso pensar em três benefícios de trabalhar com tecnologia obsoleta substituída:
Familiaridade com a própria tecnologia antiga
As únicas tecnologias antigas ainda em uso são aquelas que alguém, em algum lugar, decidiu que é mais barato manter do que substituir. Ser capaz de listar a experiência de trabalho com essa tecnologia mais antiga pode, por si só, ajudá-lo a conseguir outro emprego trabalhando na mesma área. E à medida que mais e mais desenvolvedores avançam, o prêmio que você pode cobrar por trabalhar nesse tipo de coisa aumenta.
A chance de praticar aprendendo algo novo
Você não é realmente um programador se puder apenas programar em idiomas que alguém lhe ensinou. Ser capaz de adaptar suas técnicas e modelos à tecnologia mais antiga requer exatamente as mesmas habilidades que você precisaria para se adaptar à nova tecnologia.
Compreensão mais profunda de por que eles foram substituídos
É difícil explicar para um RH ou programa executivo não programador por que o VB.NET ou C # é superior ao VB6 se você não estiver familiarizado com a própria tecnologia. E se você não estiver totalmente familiarizado com o último, aprender o que eles substituíram pode ajudar a entender alguns dos motivos pelos quais as substituições foram escritas como eram.
Tudo dito acima, não há absolutamente nenhuma razão para uma empresa persistir na manutenção de qualquer aplicativo escrito em tecnologia que se tornou tão desatualizada.
Se ele puder ser deixado em paz até que o tempo de execução falhe devido a algum erro não documentado, isso é uma coisa - mas a cada hora que um desenvolvedor gasta em tecnologia antiga sem um plano de transição é uma dívida técnica que a empresa terá que pagar eventualmente.
fonte
Em algum momento, a empresa precisará se preocupar com o fim da vida útil do VB6, mas, infelizmente, o VB.NET ainda tem um pouco de ar.
Existe algum motivo relacionado ao qual você precise trabalhar em um único monitor pequeno? Parece mais a empresa ser barata do que se preocupar com tecnologias bem testadas. Não é como se alguns monitores de 21 "apresentassem bugs.
Para manter suas habilidades nítidas e ser pago por isso, sugiro analisar sua configuração de compilação, teste e implantação. Essa pode ser uma oportunidade para começar a introduzir algumas tecnologias mais recentes usando rake, powershell e / ou nant para compilação e implantação. Se você não tiver testes de unidade, comece a adicioná-los.
No final do dia, se a empresa não estiver no espaço tecnológico, ela sempre será secundária a eles. Faz todo o sentido manter a estabilidade para proteger suas operações de negócios principais.
Vou evitar dar conselhos de carreira, tenho certeza que outros cobriram as bases.
fonte
Para as pessoas idosas, avançar para o final de sua carreira profissional, vender seu profundo conhecimento de uma tecnologia mais antiga para uma empresa que ainda usa as coisas antigas, pode ser financeiramente atraente . Por exemplo, se você tem experiência no PDP-11, pode se mudar para o Canadá .
No entanto, no início de sua carreira, eu recomendaria seguir em frente.
fonte
Existem várias vantagens:
1) Haverá muitos recursos disponíveis para as tecnologias, desde que não sejam obscuros e não amplamente utilizados.
2) Espero que outros na empresa sejam bem versados nas tecnologias, pois não mudaram.
3) Se não houver muito desenvolvimento novo, você poderá refatorar o código antigo para ficar mais limpo ou mais rápido. Observe que o tipo de loja que mantém essa tecnologia antiga provavelmente será contra a alteração de qualquer código que "funcione", apesar de ser abominável.
fonte
Vou me concentrar no outro lado da questão, ou seja, as desvantagens do uso de novas tecnologias, pois as vantagens de tecnologias desatualizadas foram suficientemente abordadas em outras respostas.
Ainda temos uma grande base de código do Visual Studio 6 e parece que ela não será substituída em breve.
No entanto, estamos avançando com novas tecnologias onde podemos para novos desenvolvimentos.
Como eu acho que você faz alusão, é possível escrever o VB.NET que faz interface com o código VB6 herdado usando COM.
O uso de tecnologias de ponta é sem dúvida divertido, pois geralmente trazem benefícios significativos à produtividade. No entanto, o outro lado é que você pode encontrar um bug / falha que o atrasa dias / semanas. É chamado de borda de sangramento por uma razão!
Mesmo que a empresa gaste o dinheiro para atualizar o software, isso (como descobri por experiência pessoal) pode ser um obstáculo, independentemente da maneira que a empresa escolher:
Porta do software
O software é reescrito, mas precisa ser exatamente igual ao software antigo para não incomodar os usuários. A alegria de trabalhar com novas tecnologias é substituída pelo fato de você não poder usar nenhuma das novas magias da GUI.
Atualização do Visual Studio
Você realmente não usa nenhum dos novos recursos corretamente, pois gasta muito tempo resolvendo falhas no código, onde ele funciona bem em uma versão do estúdio, mas não na outra.
Migração funcional
Você migra o software mantendo a funcionalidade principal. Isso permite a maior liberdade do ponto de vista do desenvolvedor, mas podem ser introduzidos erros que podem levar a empresa a questionar o valor desse exercício, a menos que novos recursos de valor agregado também sejam incluídos.
O Nirvana para a maioria dos desenvolvedores é um treinamento de qualidade em tecnologias modernas, uma chance de praticar o que você aprendeu e, em seguida, um projeto inovador para você.
O que você deve fazer depende muito do tipo de pessoa que você é. Os neófilos sempre querem trabalhar com o novo material, enquanto os especialistas acreditam que a tecnologia antiga é a melhor. A maioria de nós está em algum lugar no meio. Você precisa trabalhar onde se sentir confortável. Se você acha que pode viver com o status quo, então ótimo, pegue a moeda por enquanto e fique de olho para uma posição mais adequada.
fonte
Pode não ser exatamente o que você está perguntando, mas tenho algumas sugestões:
Eu acho que o maior benefício é o que você pode oferecer ao seu empregador em termos de experiência quando eles perceberem que precisam migrar. O XP será descontinuado este ano, então imagino que seu departamento de TI já esteja considerando uma estratégia de migração. (Caso contrário, prepare seu currículo, porque a empresa não vai demorar muito.)
Com isso em mente, pode ser prudente começar a compilar uma lista de vantagens para migrar os principais conjuntos de ferramentas de software em conjunto com a migração do SO / plataforma. Ajude a educar sua cadeia de gerenciamento que não é tecnicamente segura quanto ao ROI em relação às novas tecnologias. Seus gerentes não se importam com estruturas de zumbido e brinquedos tecnológicos, mas devem estar muito interessados em suas projeções de longo prazo em relação aos custos comparativos de despesas de manutenção contínuas, desenvolvimento futuro etc.
Nessa mesma linha, você pode aproveitar esta oportunidade para descobrir o nível de satisfação de seus clientes (os funcionários que usam seu software). Que melhorias eles gostariam de ver? Que insetos os deixam loucos? Quais recursos melhorariam significativamente sua eficiência? Se você puder mostrar aos seus empregadores que um novo investimento em tecnologia impactaria demonstrativamente seus resultados, você poderá ganhar o título de Gerente de Migração Técnica.
E isso ficaria bem em QUALQUER currículo.
ATUALIZAÇÃO: Parece que você não está sozinho no seu setor: " 95% dos caixas eletrônicos do mundo executam XP ". Não me interpretem mal: XP é ótimo - eu sempre fui fã. Mas a realidade é que, quando os patches e atualizações de segurança terminarem, o XP não será um produto viável para um banco. Seu trabalho (em benefício dos clientes do seu banco) é informar graciosamente, mas persistentemente, seus gerentes de que eles acabarão pagando muito mais (em acordos de serviços estendidos ou atenuação de ataques) para manter o XP após a data de aposentadoria. Como o link de @ RobbieDee apontou: você tem até 14 de julho de 2015. Isso é tempo suficiente (se você começar agora) para projetar, implementar e implantar um sistema de substituição.
(Mas NÃO tente vender essa idéia para o cara que acabou de assinar a instalação do XP em toda a empresa. Ele não é seu aliado. Com esse julgamento, seus dias nesse cargo são contados. Apenas trabalhe em silêncio até que prevalecem as cabeças mais sábias.)
fonte