Como você lida com a natureza dinâmica do desenvolvimento de software de alto nível? [fechadas]

25

Eu me considero um desenvolvedor de software de alto nível. Gosto muito de ler e isso me ajudou ao longo da minha carreira. Eu acho que estou indo bem.

Neste momento, passo muito tempo aprendendo coisas novas. Eu não sou péssimo quando se trata de escrever código agora, mas estou prestes a começar uma família, e vejo regularmente muitos idosos com 14 a 15 anos de experiência que - por reduzirem o aprendizado de coisas novas - agora são péssimos. na programação. Eles eram figuras inspiradoras em algum momento, mas não são mais.

Você pode argumentar que o básico nunca muda, mas parece fazer a diferença quando você está codificando no Delphi por 10 anos e de repente todo mundo está usando o .NET framework. É verdade que um desenvolvedor experiente levará menos tempo quando aprender um novo quadro, mas ainda faz tempo demanda e esforço.

Como um desenvolvedor de software gerencia as demandas do trabalho e ainda consegue se concentrar em coisas que necessariamente o afastam do trabalho, como iniciar uma família?

Hemant
fonte
1
O que você acha que não pode gerenciar uma singularidade? Qualquer bom desenvolvedor pode! - brincando, não me escute ...
Klaim

Respostas:

30

Algo que você disse se destacou: "Eu vejo regularmente muitos idosos com uma experiência de 14 a 15 anos ... eles agora são péssimos em programação". Essa é uma pincelada bastante ampla que você está usando para pintar pessoas com experiência. Eu gostaria de destacar algumas coisas a considerar:

  • Praticantes mais jovens / menos experientes gostam de apontar como seus idosos deixam de fazer X ou Y, quando deixam de entender que a experiência mostrou que essas eram más idéias. No entanto, cada nova geração de praticantes parece querer repetir esses erros. Esse fenômeno é comum a todas as profissões, não apenas à programação.
  • Nem todas as pessoas que trabalham há vários anos são experientes, maduras ou boas. É preciso esforço para se tornar melhor. Muito esforço quando você é mais jovem cria um bom corpo de experiência, do qual você pode recorrer mais tarde.

Talvez as pessoas a quem você está se referindo nunca tenham sido boas. É possível que eles estejam olhando para você pensando: por que você insiste em fazer as coisas da maneira mais difícil?

É verdade, no entanto, que quando você inicia uma família, tem muito menos tempo para acompanhar os novos brinquedos. Na verdade, você tem menos tempo à medida que seus filhos ficam mais velhos do que quando são mais jovens. Os brinquedos não fazem de você um programador melhor. Nem ferramentas. O que o torna bom é a capacidade de resolver problemas e criar uma solução funcional. O que o torna ótimo é a capacidade de ensinar os outros a serem bons. É aí que a experiência começa a brilhar.

Berin Loritsch
fonte
1
Gostaria de elaborar sobre o voto negativo? Você pode não gostar do que eu disse, mas é verdade.
Berin Loritsch 29/03
4
A percepção que ele tem é uma grande parte de seu enigma. Tudo o que fiz foi lidar com essa percepção diretamente. Em resumo, estou mais preocupado com a perseguição de ferramentas do que com a capacidade dele de se tornar um bom desenvolvedor experiente . Ele pode até se tornar ótimo . Isso não vai acontecer se toda a sua experiência lhe disser que os desenvolvedores mais velhos são péssimos. É um desmotivador terrível para se esforçar para chegar onde ele quer estar.
Berin Loritsch 29/03
1
@Berin Loritsch: Esse é um argumento justo. Sua intenção foi boa. // Nos Estados Unidos, muitas pessoas tropeçam em si mesmas para repreender outras por fazer uma generalização. Eu aceitei sua resposta porque parecia que você estava fazendo isso.
Jim G.
1
Felizmente, o que você aprenderá com o tempo é quando investir tempo aprendendo novas tecnologias e quando ignorá-las. Resumindo, o tempo é um recurso precioso. Quando o RPC SOAP / XML foi lançado, era muito cedo para dizer o que realmente faria. Agora, com alguns anos de experiência, aprendemos algumas lições dolorosas e modificamos a abordagem com serviços baseados em REST. Além disso, nós, velhos, precisamos de jovens com energia ilimitada para descobrir o que vale a pena dedicar tempo ao aprendizado. Podemos ser um pouco mais lentos para puxar o gatilho, mas não demora muito para acelerarmos.
Berin Loritsch 29/03
2
@Berin Loritsch: Talvez eu entenda agora. Na verdade, eu já vi alguns idosos (incluindo meu atual chefe) que simplesmente arrasam quando se trata de resolução de problemas. Ele não pula de alegria quando digo que você pode fazer o X facilmente usando essa estrutura, mas ele não tem medo de usá-la quando vê que é realmente útil. Então, talvez outros idosos que não sejam bons, não sejam bons porque nunca foram. Não porque estão fora de contato por causa das novas tecnologias. Eu me sinto muito melhor agora. (Espero que eu escrevi faz sentido)
Hemant
20

É difícil prever o futuro. Mas uma coisa é a mais valiosa, com certeza, independentemente da tecnologia.

É a capacidade de um desenvolvedor para resolver problemas .

Muitos de uma qualidade de desenvolvedor são independentes da tecnologia. Por exemplo, a capacidade analítica é a qualidade mais importante que conheço. É como aprender matemática. É simplesmente atemporal.

Amir Rezaei
fonte
1
Sim, mais a capacidade / honestidade de saber quando suas ferramentas / habilidades disponíveis não estão resolvendo o problema. Então você aprende algumas coisas novas e volta à "capacidade de resolver o problema".
precisa
1
eh ... Isso é um pouco vago, e tbh, é um pouco de copout. Se um desenvolvedor ainda está perfeitamente feliz em "resolver problemas" na vb6 ... bem, eu realmente não quero trabalhar com o código deles. Ficar atualizado não é prever o futuro, requer tempo / trabalho e há menos oportunidades quando você tem uma família.
Steven Evers
5

Eu gostaria de ter um pensamento positivo ou concreto - mas acho que como um programador se mantém atualizado e equilibra trabalho / família varia tremendamente de programador para programador.

Pensamentos aleatórios:

  • Nem todo projeto ou empresa de software precisa da mais recente tecnologia - mesmo em software. A mudança é mais dramática no limite - empresas que ficam um pouco atrás do limite costumam ter muitas oportunidades de crescimento e mudança, mas não a demanda urgente e generalizada por mudanças constantes imediatamente.
  • Quanto mais experiente um programador obtiver, mais ele poderá aproveitar a experiência no lugar da última / maior palavra da moda. Percebi que as pessoas que mais admiro com mais de 20 anos na indústria têm toneladas de metáforas sobre como a última coisa em C # é a resposta perfeita para o problema que tiveram no final dos anos 80 com C. Ao aproveitar os problemas e soluções anteriores, eles traga mais compreensão para a mesa com menos pesquisa.
  • Toda vez que tive que avaliar os programadores da equipe, a capacidade de fazer as coisas e jogar bem com os outros superou a gama de tecnologias com as quais o programador trabalhava. Embora a indústria desenvolva muitos idiomas concorrentes, novos, APIs e ferramentas, é bem provável que o projeto use apenas o concorrente por vez. Mas fazer as coisas e ajudar os outros a fazer o mesmo nunca sai de moda e o modo como é feito evolui muito mais lentamente - não que mensagens instantâneas, mídias sociais, smartphones e tudo o mais na era digital não estejam mudando esse aspecto da programação , também.
bethlakshmi
fonte
Também pode ser interessante trabalhar em uma empresa que está um pouco mais à frente do limite, digamos 3-4 anos. Você pode ver com mais clareza os erros cometidos por outros e ter a vantagem de ferramentas e implementações mais maduras.
Michael K
Concordo. Na verdade, eu mesmo trabalho um pouco além do limite, e gosto de saber que outros bateram a cabeça contra ele um pouco antes de eu tentar. :)
bethlakshmi
5

Primeiro, a Microsoft está vendendo ferramentas e plataformas de desenvolvimento de software nas quais executar esse software. Isso os incentiva a fazer alterações, sejam elas necessárias ou não. Isso não quer dizer que todas as mudanças sejam inúteis, apenas que há muitas áreas em nossa profissão que são muito mais estáveis. Com a experiência, você pode discernir melhor em quais bandas vale a pena pular imediatamente e quais você pode esperar para amadurecer.

Segundo, a experiência requer apenas tempo. A maioria dos desenvolvedores com 15 anos de experiência ruins agora era ruim há 15 anos. Não atribua à idade o que pode ser adequadamente explicado pela incompetência.

Terceiro, não confunda ter conhecimento desatualizado com ser incapaz de usar o melhor e o mais recente quando necessário. Normalmente, basta saber o que está por aí. Por exemplo, até recentemente, meu conhecimento de programação da web era antigo no final dos anos 90, mas quando eu queria criar um site para meu irmão, sabia o suficiente para verificar tecnologias "novas", como CSS, jQuery e sistemas de gerenciamento de conteúdo, e era bastante até a velocidade em algumas semanas. Em outras palavras, se você não precisou de algo nos últimos 10 anos, é improvável que tenha uma emergência em que gostaria de estar no momento.

Finalmente, ser pai ou mãe é realmente um grande compromisso, mas menos tempo do que muitas pessoas sem filhos parecem pensar. Os pais ainda conseguem ler livros, assistir TV, jogar jogos, navegar na web e até fazer aulas de vez em quando. Chocante, eu sei. Você apenas faz isso em pequenas porções e faz prioridades. A única coisa que desisti completamente é assistir a reprises.

Karl Bielefeldt
fonte
3

Posso garantir que as pessoas que apresentam poucas habilidades de programação depois de dez a quinze anos nunca internalizam realmente o desenvolvimento de software. Dominar um conjunto de ferramentas não é o mesmo que dominar a arte do desenvolvimento de software.

Escrevo código há mais de trinta anos. Passei por vários períodos em que tive que colocar minha carreira no piloto automático devido a obrigações e / ou interesses externos. O que é preciso aprender a fazer à medida que envelhece é evitar pular em um movimento de tecnologia cedo. A maioria das tecnologias deixa de cumprir o seu hype. Como um praticante mais velho, com obrigações fora do trabalho, é preciso ser mesquinho com o tempo. Um profissional experiente pode dar ao luxo de esperar alguns anos para que uma nova tecnologia amadureça porque ele / ela já dominou a arte do desenvolvimento de software.

bit-twiddler
fonte
Portanto, você não acha difícil permanecer atualizado com as novas tecnologias quando elas amadurecem?
Hemant
1
Esta indústria é cíclica. A maioria das novas tecnologias é pouco mais do que idéias antigas reembaladas. Se os seus fundamentos são fortes, não haverá problemas em acompanhar. Lembre-se, não é preciso estar na vanguarda da tecnologia para ganhar uma vida decente como engenheiro de software.
bit-twiddler
2

Ao longo dos meus anos de experiência:

  • Os idiomas mudaram (geralmente relativamente devagar).
  • A gama de problemas que podem ser praticamente resolvidos aumentou (um pouco mais rápido);
  • O tamanho e a complexidade das soluções aumentaram (relativamente rapidamente);
  • Houve algo que é flavor of the day(às vezes bom, geralmente ruim).

Como observado em uma discussão sobre padrões, a quadrilha de quatro não inventou padrões. Eles criaram terminologia e modelos para soluções que já estavam sendo aplicadas.

Ao contrário de muitos outros campos, ainda há muita coisa que não é prática comum. Eu já vi muitas coisas de ponta indo e vindo. Muitos deles estavam reformulando as técnicas já em prática, e essas geralmente eram bem-sucedidas até certo ponto. Outros foram embora mais ou menos, e a maioria vem de novas abordagens. (Alguém viu um idioma de quinta geração ultimamente?)

Os programadores que eu vi que são mais eficazes podem selecionar e montar componentes comprovados em uma solução funcional. Isso raramente envolve algo de ponta, o que geralmente aumentaria o risco do projeto. A capacidade de desenvolver o trabalho que já foi realizado nos permite aumentar o escopo do que é possível.

Linguagens de programação tendem a cair em relativamente poucas famílias. A familiaridade com um idioma em uma família facilita o trabalho com idiomas semelhantes. Compreender as bibliotecas disponíveis no idioma e aproveitá-las pode aumentar bastante a produtividade e a confiabilidade. Em geral, eu escolheria um idioma antigo com bibliotecas apropriadas em vez de um idioma mais novo sem bibliotecas apropriadas.

Ao aplicar novas tecnologias é importante evitar a Because We Cansíndrome. A adição de uma nova tecnologia, por ser o sabor do ano, tende a causar mais problemas do que resolve. Saber quando a tecnologia resolverá um problema real e quando apenas adicionará complexidade é uma habilidade útil.

Um programador realmente bom resolverá os novos problemas e usará as soluções existentes para o resto. Poucas empresas precisam de tecnologia de ponta, todas precisam de soluções sólidas.

Eu geralmente me arrependo de deslizar pela lâmina de barbear. Não me lembro de ter me arrependido de usar uma tecnologia comprovada. No entanto, muito do que é descrito newé reembalagem de algo existente. Geralmente, essa reembalagem facilita as coisas para entender e aplicar adequadamente.

BillThor
fonte
2

Ninguém pode acompanhar tudo. Você provavelmente esteve muito ocupado acompanhando a oferta da Microsoft. Você já viu o Ruby nos bancos de dados RAILS e Python e NoSQL, Hadoop e criação de aplicativos móveis e CSS e HTML5 e jQuery e ExtJS e ...?

Eu trabalho com software há bastante tempo. Eu tento acompanhar a tecnologia realmente nova, como as novas idéias para bancos de dados massivamente paralelos, e ignorar os feios (por exemplo, MFC, WinForms, SOAP, XML, EJBs) e os triviais o máximo possível. Principalmente, vemos grandes idéias antigas reembaladas e finalmente adotadas. Programação funcional? Eu estava usando o INTERLISP em 1977. Aplicativos para celular? É a mesma interface do usuário orientada a eventos e gráficos 2D que fazemos há pelo menos 30 anos. Claro, existe uma arte em projetar um aplicativo utilizável para uma pequena tela sensível ao toque, mas a programação não é nova.

Kevin Cline
fonte
1

Concordo com a @Amir que sua habilidade é resolver o problema não do seu domínio de idioma, mas aprecio sua preocupação, portanto:

Se você tem a liberdade de escolher seu idioma atual, escolha um que seja o mais próximo possível dos primeiros princípios (por exemplo, um idioma do tipo C ++) para que, quando você trabalhe em um novo domínio, a curva de aprendizado seja menor - já que é apenas abstrações acima de você. Se você atualmente investe apenas em idiomas de alto nível, descer uma abstração é muito mais difícil (mesmo que apenas na percepção).

Se você não tiver esse feedom, basta fazer uso total das suas 8 horas de trabalho. Se sua paixão for alta, você não ficará "preso" e sempre encontrará problemas interessantes para resolver, que naturalmente o levarão a aprender mais. .

Stephen Bailey
fonte
1

Vai depender do seu trabalho e dos empregos que você deseja. Há posições em que os desenvolvedores ainda estão usando tecnologias mais antigas. Ainda há muito COBOL para continuar (tenho certeza de que algo mudou).

Trabalhar em uma empresa que faz uma grande mudança como você descreveu pode deixar algumas pessoas desempregadas. Às vezes, a empresa investe na obtenção de treinamento, exigindo que você o aprenda no seu próprio tempo.

Ter uma família pode limitar suas opções de trabalho. Pode torná-lo menos móvel. Você pode trabalhar em um arranque com metade do seu salário na esperança de um grande dia de pagamento - talvez não com crianças e hipotecas.

Os mais novos nem sempre são melhores e muitos não duram.

JeffO
fonte
1

Eu não estou no campo da medicina, mas que tal uma analogia entre um desenvolvedor e um médico? Ambos os campos sofreram mudanças tremendas nos últimos 20 anos e o ritmo da mudança é cada vez mais rápido. Todos os médicos acompanham? Não. Todos os desenvolvedores acompanham? Não. Você pode fazer alguma generalização sobre desenvolvedores ou médicos com 14 a 15 anos de experiência? Mais experiência significa que você tem um conjunto maior de respostas para problemas semelhantes. A experiência supera o interesse? Não a longo prazo.

Pense como um tubarão que precisa nadar ou morrer. Continue aprendendo ou morra (ou mude para a gerência, que é aonde a maioria vai, à medida que a linha de carreira em desenvolvimento atinge seu pico em cerca de 10 a 15 anos).

SnoopDougieDoug
fonte
Não tenho certeza da situação em que você mora, mas na Austrália há um requisito para que os profissionais médicos se envolvam em educação e exames contínuos para manter seu registro (e, portanto, a capacidade de praticar medicina).
Sedate Estrangeiro
0

Tenho as mesmas preocupações no fundo, mas meu pensamento recente sobre isso é parar de tentar prever sua própria capacidade de se adaptar e apenas se adaptar. Acho que, se suponho que posso acompanhar, geralmente faço. Se eu me preocupar em ficar desatualizado, isso pode torná-la uma profecia auto-realizável.

Como você disse, fique na ponta dos pés. E se você não consegue acompanhar, não se preocupe demais. A tecnologia tem uma maneira engraçada de dar a volta no círculo completo, e você pode se encontrar de volta ao mainstream se apresentando de maneira excelente.

Kevin Hsu
fonte