Como converter um programador de copiar / colar / espaguete para ver a luz?

35

Esta questão foi inspirada por esta . Enquanto essa outra pergunta foi considerada localizada, acredito que o problema subjacente é algo extremamente comum em nosso setor. Eu sei que existem alguns desenvolvedores que lerão isso e acharão que estou inventando essas coisas, e eles poderão responder como todos se preocupam com o trabalho e querem aprender, mas apenas olhando para outras postagens de Programmers SE ( caso em questão ), Eu sei que isso não é universalmente verdade.

Então, digamos que você tenha alguém em sua equipe (ou talvez a maioria) que seja o procedimento operacional padrão para copiar / colar e que acredite que tudo pode ser resolvido se você adicionar variáveis ​​e chamadas de função suficientes. Essa pessoa nunca ouviu falar de TDD, DRY ou SOLID e, fora de 40 horas no trabalho, quando está ocupada trabalhando, nunca leu um único livro de metodologia / práticas / design.

No passado, eu (e outros) perguntamos como você ensina OOD . Mas agora estou pensando que essa não é a pergunta certa. A verdadeira questão é como você aborda essa pessoa / equipe e as deixa curiosas sobre a melhor maneira de fazer as coisas? Como você os inspira a aprender? Sem isso, parece que todo o ensino, reuniões, palestras e discussões são inúteis se eles estiverem perfeitamente felizes voltando para a mesa e fazendo o que sempre fizeram.

Eu trabalho com um monte de gente assim. Na verdade, eles são indivíduos bastante inteligentes, mas eu odeio quando ouço: "Eu terminei de codificar, só preciso refatorar e dividir em várias classes para tornar o DXM feliz". Eles não refatoram para um código mais limpo, legível e sustentável, mas apenas porque, caso contrário, serão repreendidos. Eu sei que eles são capazes de aprender, apenas parece que há uma falta geral de motivação.

Quando eu entrego trabalho, geralmente há muito menos erros e o trabalho que eu possuía nunca se tornou monstruosidade de 5000 linhas de uma classe. Outros gostariam de fazer comentários como "seu código é muito mais limpo e legível que o nosso", para que eles vejam a diferença. Mas, ao mesmo tempo, acho que eles acreditam que são pagos por 40 horas, independentemente do que fazem, e, na verdade, não se importam se passam três dias inteiros no controle de qualidade procurando um bug que não deveria ter sido introduzido no o primeiro lugar. Ou eles levam uma semana para modificar uma classe porque há tantas dependências que acabam tocando. O pensamento de que "talvez essa classe devesse ter sido escrita de maneira diferente" nunca parece aparecer.

Alguma coisa pode ser feita nessas situações? Alguém conseguiu? Ou é melhor isolar essa mentalidade em partes não críticas do projeto e minimizar os danos?

NOTA: Quando digo "falta de motivação". Não acho que seja falta de motivação para trabalhar ou fazer um bom trabalho, porque eles simplesmente pararam de se importar. A maioria de nossa equipe é exatamente o oposto. Eles definitivamente se preocupam com o produto. Temos caras que trabalham noites e fins de semana. A parte que estou tentando passar é com hábitos e habilidades aprimorados, eles realmente não precisariam trabalhar tanto. Eu acho que essa coisa de "40 horas" fez esse post parecer um pouco negativo demais.

DXM
fonte
Que país é esse?
3
@ ThorbjørnRavnAndersen - EUA. agora você tem que escrever uma resposta porque estou muito curioso para saber como essa informação afetou :) Eu sempre pensei que éramos todos humanos e esse tipo de coisa era universal. E não, essa questão não tem nada a ver com terceirização.
DXM
8
As diferenças culturais entre os países podem ser substanciais e qualquer tentativa de introduzir mudanças deve levar isso em consideração. O que funciona em uma cultura provavelmente não funcionará em outra. No seu caso, acredito que a melhor maneira é ter a gerência oficialmente elevando a fasquia do que é aceitável.

Respostas:

18

Você se encontrou com o motivo: "Eu sei que eles são capazes de aprender, apenas parece que há uma falta geral de motivação".

Há pessoas apaixonadas pelo seu trabalho. E há outros que, por vezes competentes o suficiente, estão trabalhando apenas por dinheiro . Eles sabem o que fazem, mas não gostam do trabalho. Eles não gastam tempo extra fazendo refatoração adicional para tornar o código legível ou resolvendo um problema intrigante quando um hack rápido e feio pode fazer o trabalho.

Esse fenômeno existe em todos os empregos. Só que alguns trabalhos não são extremamente empolgantes (você já viu um contador que ama o trabalho e já sonhava com ele quando criança?), Mas na programação há muitas pessoas que realmente amam o que estão fazendo (caso contrário, Programmers.SE estará bem vazio). Isso significa que, como desenvolvedores apaixonados, que conversam diariamente com outros desenvolvedores apaixonados, temos mais chances de nos surpreender ao ver uma pessoa que faz programação apenas por dinheiro.

O que podemos fazer? Não muito. Em todos os casos, não é para você, mas para os recursos humanos escolher pessoas realmente motivadas¹. E demitir pessoas que não são.

Você pode tentar motivar seus colegas, mas é extremamente difícil. Se você lhes der livros para ler, eles os devolverão fechados algumas semanas depois. Se você lhes der um conselho, eles não ouvirão, porque não se importam².

Você pode:

  • Convença seu chefe a definir várias regras estritas em sua empresa: diretrizes de estilo etc. Isso não motivará essas pessoas a fazer um trabalho melhor, mas pelo menos elas não poderão confirmar o código-fonte que não corresponde aos requisitos .

  • Trabalhe nos requisitos, especialmente requisitos não funcionais . Que tal um requisito que informa que um projeto específico deve conter menos de 5.000 linhas de código IL (não, não estou falando do LOC sem sentido ) ³? Que tal exigir obter resultados específicos com complexidade ciclomática ou acoplamento de classe ?

  • Aumente o número de horas que você gasta em sua empresa fazendo revisões de código . Especifique o que foi revisado: se você possui uma lista de verificação, adicione os pontos relacionados à refatoração, legibilidade, comentários limpos e úteis, etc. Se você não tiver uma lista de verificação, deverá fazê-lo.

  • Use [mais] programação em pares . Isso pode ajudar a melhorar a qualidade do código e motivar os colegas de trabalho menos motivados.

  • Use o sistema de compensação semelhante ao usado em Fog Creek.


¹ É disso que se trata a entrevista: antes de contratá-lo, os recursos humanos devem agregar não apenas seu nível técnico, mas também sua motivação . Infelizmente, algumas empresas esquecem esta segunda parte da entrevista e contratam pessoas que não gostam muito de programar. Felizmente, na maioria dos casos, o trabalho nessas empresas nunca é agradável e o teste de Joel raramente excede 2.

² Eles realmente não se importam, mesmo que ganhem menos dinheiro. Estou bem perto de um dos meus clientes (sou freelancer) que acredita que seu trabalho é desenvolver sites para seus próprios clientes. Ele também tem um designer. Eu falei várias vezes sobre como eles podem aumentar sua produtividade em 2 ou mais. Se eles contratassem alguém competente, aumentariam sua receita em pelo menos 3. Mas eles têm dinheiro suficiente e não se importam com a qualidade ou quanto custam aos clientes ignorantes, em comparação com alguém produtivo.

³ O que quero dizer é o número de linhas de código IL que você vê nas Métricas de Código no Visual Studio , a métrica que realmente significa alguma coisa. O LOC real não importa e você não precisa medi-lo; é uma das métricas mais estúpidas de todos os tempos. A imposição de linhas de código IL significa que os desenvolvedores serão forçados a refatorar o código, e não apenas a recolher dez linhas de código em uma única linha ilegível.

Arseni Mourzenko
fonte
3
Eu discordo: motivação para trabalhar e motivação para aprender são duas coisas totalmente separadas. Por exemplo, algumas pessoas adoram seu trabalho e seu trabalho, mas podem pensar que "SOLID" é apenas mais um chavão de bingo ou "TDD" é um conceito de torre de marfim sem uso no mundo real.
Nikie
5
@ maple_shaft está certo: algumas pessoas trabalham 70 horas por semana e produzem a pior quantidade de código de espaguete sem testes (elas não têm tempo para essas bobagens!). Enquanto são apaixonados e melhoram constantemente suas habilidades, mas voltam para casa após 40 horas, porque sabem que não podem ser produtivos por mais tempo do que isso. Não misture as duas coisas!
Nikie
13
Não não não. Disposição de ser explorado por um empregador! = Capacidade de produzir código de qualidade. Há um monte de coisas desse tipo "ficar até as 2 da manhã para fazer isso", um absurdo acontecendo em nossa indústria, já que não estamos confundindo isso com algum mítico desenvolvedor ideal. Se você gosta de trabalhar 80 horas por semana, mais poder para você. Eu tenho coisas que são importantes para mim além do trabalho. Para concluir, sou ruim no que faço por causa disso é espúrio, na melhor das hipóteses. Nenhum outro setor se dá bem com o que o nosso se dá bem, e cabe a nós mudar isso, se vai mudar.
Dan Ray
6
Ter que trabalhar até as 2 horas da manhã para trabalhar em um projeto é uma maneira muito eficiente de matar qualquer amor pelo projeto, especialmente para aqueles com obrigações familiares.
2
Penso que todos os argumentos apresentados aqui são válidos, mas alguns de vocês podem ter entendido mal a MainMa. Ele nunca disse que trabalhava até as 2 horas da manhã porque você é forçado devido a prazos. Em vez disso, ele simplesmente se referia às pessoas que ficam tão empolgadas de ver algo funcionar que, às vezes, preferem fazê-lo a dormir. Eu posso me relacionar com isso. Para mim, um exemplo extremo foi uma tarefa na qual eu estava trabalhando para adicionar suporte de encapsulamento à nossa biblioteca de streaming de vídeo. Foi estimado em 5 dias, mas com a nossa nova arquitetura de pipeline, tudo estava indo tão bem que comecei na sexta-feira à tarde ...
DXM 27/12/11
12

"Eu terminei de codificar, só preciso refatorar e dividir em várias classes para fazer o DXM feliz".

Essa linha de pensamento ali mesmo é um câncer em qualquer equipe e matará a motivação de toda a equipe se não for tratada imediatamente. Refiro-me, é claro, ao fato de, por antiguidade e / ou mérito, estar em uma posição de autoridade técnica, dando-lhe o poder de ajudar a influenciar e trazer boas práticas para sua equipe.

Tudo está muito bem, no entanto, se sua equipe foi claramente vendida nesses processos, eles não destacariam você em declarações como estas que mostram claramente uma falta de respeito pelo processo e uma falta de respeito em você. Eles ainda veem essas práticas recomendadas como um obstáculo causado por você e não como um processo de propriedade da equipe que sua equipe defenderá por seus próprios méritos.

Você mencionou nos comentários anteriores que outros membros da equipe estão realmente seguindo essas práticas e padrões e aplicando-os corretamente. Concentre a atenção primeiro em reforçar o apoio deles, pergunte o que funciona, o que não funciona, o que eles gostam e o que eles gostariam que mudassem. Se você fizer isso e levar a sério as opiniões deles, eles se sentirão muito diferentes sobre os padrões, como se fossem uma decisão da comunidade, em vez de um procedimento que lhes foi entregue por um superior.

Você reforça o suporte às melhores práticas e padrões, apontando para a equipe como eles melhoraram o processo de desenvolvimento de software ou a qualidade do software.

Poste uma votação sobre os assuntos para discussão e documente os resultados, idealmente, todas as decisões devem ser unânimes por uma questão de legitimidade, mas se você estiver lidando com obstrucionistas de linha dura, isso pode ser impossível e pode acabar com todos os problemas. Use um voto majoritário nesta situação. Se a maioria é contra os padrões e práticas propostos, você já perdeu a sala, basta desistir nesse momento.

Eles possuirão esses padrões e procedimentos e os aplicarão para que você não precise. Como líder em tecnologia, você não precisa declarar decretos e decretos, é uma maneira ruim de ser um líder.

Quando a equipe sentir que possui os procedimentos, os membros da equipe que começarem a rotular você para determinados procedimentos e práticas recomendadas ficarão ilegítimos. Sua equipe ajudará a corrigir essa atitude nos outros.

maple_shaft
fonte
11
+1 para ênfase na centrando-se sobre relacionamentos, em vez de princípios
sunwukung
5

Boa pergunta! Eu acho que a resposta depende de por que as pessoas não querem melhorar suas habilidades. Respostas possíveis são:

  • Eles acham que estão ocupados demais para aprender algo novo ou acham que a nova maneira de fazer as coisas (como escrever todos esses testes) os levará mais tempo e não terão tempo para isso. Então a resposta óbvia seria: dê a eles mais tempo. Aprender algo ou tentando algo como TDD quando você tem coisas sempre feito de forma diferente vai demorar mais tempo do primeiro par de vezes. Se seus programadores não tiverem esse tempo, você não poderá culpá-los por não tentarem.
  • Eles têm uma percepção diferente de suas próprias habilidades, ou seja, acham que são muito bons programadores produzindo código de alta qualidade. Este é um terreno psicológico difícil, porque destruir essa crença pode ser muito desmotivador. Talvez algum tipo de competição informal possa ajudar (quem produz o menor número de defeitos / recurso? O código mais curto? O menor número de WTFs / minuto em uma revisão de código?).
  • Pode haver um problema de motivação real (ou seja, eles só querem "fazer o seu tempo e ficar sozinhos" até a hora de fechar). Felizmente, isso é muito geral / não relacionado à programação, porque eu realmente não tenho uma resposta para isso.
  • Eles são iniciantes e não sabem melhor. Nesse caso, o treinamento, as revisões de código podem ajudar, ou um "clube do livro", em que um membro da equipe deve discutir um novo livro técnico todos os meses.
  • Eles já viram balas de prata antes (e ficaram amargamente desapontados) e acham que o que quer que você esteja tentando vendê-las é apenas mais uma nova palavra da moda que soa bem na teoria e pouco serve na prática. Nesse caso, demonstrar as vantagens durante as revisões de código e as sessões de programação em pares pode funcionar. Tente não ser um total know-it-all quando fizer isso.

A melhor solução realmente depende do problema raiz: por exemplo, diretrizes formais de codificação, métricas e revisões podem funcionar para iniciantes, mas pessoas com "percepção errada de suas próprias habilidades" - a multidão pode lutar contra elas ou reproduzir as métricas porque vêem como obstáculos burocráticos contraproducentes à realização do trabalho.

nikie
fonte
Bons pontos. Eu gosto especialmente do primeiro - e até generalizo: primeiro você precisa deixar claro que o aprendizado no trabalho é incentivado e que não há problema em reservar um tempo explicitamente para ele.
sleske
Se as pessoas têm uma percepção diferente de suas habilidades, talvez estejam apenas medindo o sucesso em parâmetros diferentes? Se você estiver medindo a qualidade do código, e eles estiverem pensando em quão rápido o código pode ser criado, obviamente o resultado será diferente - nesse tipo de casos, pergunte como eles medem o sucesso. Pessoas diferentes têm maneiras diferentes de pensar sobre isso.
tp1 27/12/11
3

A verdadeira questão é como você aborda essa pessoa / equipe e as deixa curiosas sobre a melhor maneira de fazer as coisas? Como você os inspira a aprender? Sem isso, parece que todo o ensino, reuniões, palestras e discussões são inúteis se eles estiverem perfeitamente felizes voltando para a mesa e fazendo o que sempre fizeram.

É isso aí! Esta é realmente uma pergunta real.

Para dar um pouco de apoio, nós simplesmente não temos tempo para colocar muito treinamento formal - mas, ocasionalmente, se eu fizer isso - ele ainda não vê luz. Também fiz parte das empresas em que o treinamento formal se torna um processo em si, e sou tão frequentemente uma testemunha que eles quase não os ensinam a pensar.

Então a pergunta que eu lhes proponho não é como ensiná-los - mas como fazê-los aprender? A diferença é sutil, mas é o que fará toda a diferença.

Não sei se estou certo; mas muitas vezes acredito no diálogo de Matrix, o filme - "É a pergunta que nos move!" O mais importante é fazê-los pensar, fazê-los perguntar o porquê! E, é claro, a maioria dos que pensam que já sabem tudo sobre alguns padrões de design porque obtiveram boas notas nos cursos universitários - são os mais difíceis por lá.

Como você faz essas perguntas? Minha abordagem geral é "que os jogue na lagoa se você quiser que eles aprendam a nadar" . Eu concordo que as pessoas possam discordar; e terei prazer em concordar em discordar deles. Quando você os joga na lagoa - eles realmente não aprendem a nadar automaticamente; mas desencadeia um instinto de sobrevivência que os faz pensar - uma vez que isso acontece, eles naturalmente pensam em COMO e POR QUE.

Um exemplo prático que eu dou às pessoas é colocá-las em um projeto significativamente complexo do que o que eles esperavam obter e deixá-las travar sua própria batalha. Quando eles começaram a desvendar o código e acham difícil rastreá-lo - você percebe que eles começam a fazer uma boa pergunta.

Isso pode parecer um pouco extremista, pode parecer desperdício de recursos . E tenho certeza, há muitos outros que me darão conselhos para não fazer isso. Mas isso funcionou para mim!

Não importa quais pacotes de pagamento e tags de RH que você atribuir não resolverão o problema básico de motivação . Pois esse único caminho é que eles são desafiados; Se você despertar esse espírito humano básico - tudo funcionará. Se você não pode, é um jogo frouxo.

PS: Aliás, eu postei uma resposta aqui https://softwareengineering.stackexchange.com/questions/127021/how-do-you-train-freshers/127034 - e recebi toda a contestação; principalmente a maioria das pessoas acredita que, de alguma forma, as empresas não podem desperdiçar recursos! Tenho certeza de que esta resposta pode receber tratamento semelhante aqui. Mas a verdade é que fazer as pessoas trabalharem e fazê-las acreditar em fazer um bom trabalho é um assunto da psicologia humana sobre como elaborar o plano de estudos do curso.

De qualquer forma, a tarefa que você está descrevendo aqui significa acender a paixão interior de fazer grandes mudanças. E quanto maior o sistema, mais difícil fica. Comece com colegas mais jovens que ainda estão construídos com o espírito de não fazer bom trabalho e desafie o status quo.

Dipan Mehta
fonte
obrigado por criar a matriz, agora eu tenho que passar duas horas da minha vida assistindo de novo :) É engraçado, mas eu achei que os "mais novos" são os que absorvem tudo o que você joga neles. Tendo me graduado em um bom programa de CS, deixo bem claro o que penso da "educação" deles e, na maioria das vezes, eles concordam comigo. Acho que os maiores problemas são os caras que fazem isso há 10, 15, 20 ou mais anos. Também concordo com a sua abordagem "julgamento por fogo". Foi exatamente assim que aprendi o que não fazer. O problema é que a) é preciso muito tempo que a maioria das equipes não podem pagar e b) quando se trabalha em uma equipe ...
DXM
.. configuração (ouso dizer "semi-ágil", não me odeie S.Lott :)), não temos propriedade exclusiva, o que requer julgamento por incêndio. Se eles escreverem algo que falhar, alguém intervirá e o corrigirá. Como alguém que esteve na lagoa e principalmente conseguiu, gostaria de pensar, fiquei curioso para saber se há algo que possa ser feito para transferir essa mentalidade sem que toda a sua equipe atravesse a lagoa.
DXM
@DXM Concordo com suas preocupações de que é melhor não jogar toda a equipe para refletir de uma só vez. Sim. O ponto é, comece jogando alguns deles um por um então! Pelo menos esse é um bom acordo entre nós. Eu acho que a mentalidade que cresceu por muitos anos - levará algum tempo e perseverança para mudar.
Dipan Mehta
O @DXM para dar a você coisas mais concretas - tente pequenas iniciativas de cada vez - mostre os resultados e mostre que gerenciamento significa negócios para fazer um bom trabalho aqui. E promova a mentalidade - uma etapa de cada vez. persistência seria uma obrigação, mas eu tinha conseguido isso em minha última empresa. Com o tempo, a gerência continuou dando à minha equipe um exemplo de como fazê-lo bem.
Dipan Mehta
11
Gosto da sua resposta, especialmente se ela funcionar para você, portanto, o seguinte não é uma crítica, mas apenas uma observação: infelizmente, isso não funciona em todos os casos. Eu tive vários casos em que desenvolvedores não motivados começaram grandes projetos. Sempre terminava o mesmo: o projeto falhou e culparam a gerência ou seus colegas ou o fato de que não havia tempo ou recursos suficientes ou que os requisitos não eram suficientemente claros. Eu me pergunto o que faz a diferença entre aqueles que aprenderão a nadar e os que provavelmente culparão a água.
Arseni Mourzenko
2

Como você ressalta, é a sua motivação. Não os confunda não cuidando deles não sabendo. Eles sabem claramente o que fazer. Eles simplesmente não se importam . Se for esse o caso, a verdadeira questão aqui é ... o que sua gerência está fazendo de errado que os mantém tão desmotivados? Você é o mais novo membro da equipe? Talvez eles tenham passado por tudo isso antes, com isso apenas levando a problemas de sua gerência. Portanto, eles continuam se esforçando para fazer a menor quantidade de trabalho necessária para manter o emprego, porque não acham que fazer mais será respondido pelo empregador.

GrandmasterB
fonte
Eu sou o líder da equipe e estou com a equipe há quase 9 anos, mas foi liderada há cerca de um ano. Eu acho que há uma diferença entre "não me importo com o trabalho ou a qualidade do meu código" e "não me importo em aprender novas habilidades". Na verdade, fizemos muitas melhorias no lado da administração e muitos de nossos colegas de equipe agora estão muito felizes. No entanto, alguns estão bastante satisfeitos fazendo o que sempre fizeram. Na verdade, eles passam horas extras sem serem solicitados, muito responsivos, mas ainda parecem bastante satisfeitos depurando seus próprios bugs 75% do tempo.
DXM
11
Bem, então, como em todas as profissões, nem todos estarão na metade superior da curva do sino. É possível que você tenha apenas algumas pessoas para receber o salário.
GrandmasterB
Você sabe, todo ano escolhemos uma cotação de equipe e o ano de 2011 era "é o que é", mas estamos prestes a começar um novo ano e, pelo menos por enquanto, vou me recusar a aceitar que é isso que é, embora eu concorde com você que na maioria das vezes é. Estive pensando mais sobre essa questão e, na verdade, tenho uma ideia que pode ter potencial. Como não posso responder à minha própria pergunta (coisa pessoal, não limitação do sistema), se mais duas pessoas votarem para reabrir programmers.stackexchange.com/questions/127080/… eu postarei lá :)
DXM
2

Parece-me que este é um problema de gerenciamento e liderança - se for sua equipe, você poderá trabalhar para tornar a melhoria (pessoal e do código) um atributo essencial da sua equipe, a questão é se isso será suportado por sua gerência - porque você vai querer fazer coisas que levarão tempo (elas terão uma vitória líquida, pois você deve reduzir a nova dívida técnica e pagar a dívida técnica existente).

Então, você afirma que deseja que a equipe melhore, você concorda que isso é uma coisa boa (que a equipe, como um todo, trabalha para melhorar a qualidade de seu código) e então inicia um programa para fazer isso acontecer - parece tão fácil ... Estou ciente de que não!

Eu acho que há duas partes nisso - educação e práticas de trabalho.

  • Educação Você pode começar um almoço por semana - todo mundo come junto, você faz uma apresentação de 20 a 30 minutos com perguntas e respostas. Você começa com o básico que deseja - o SOLID pode ocupar as primeiras 2 a 4 semanas - com o tempo, você faz a equipe falar em rotação e pode descobrir como decidir quem fala sobre o que entre você. Permita que os palestrantes tenham algum tempo de preparação no trabalho. Além disso, incentive a participação de grupos de usuários locais (tornando-o pelo menos parcialmente social, se possível)
  • Práticas de trabalho ... bem, depende do que você faz agora e das ferramentas que possui, mas você pode querer concordar com os padrões de codificação, introduzir revisão de código por pares (é sólida), teste de unidade (não necessariamente testar primeiro) , executando um servidor de integração contínua e analisando testes mais automatizados (além de testes de unidade). Mas estes devem ser introduzidos substancialmente com consentimento / acordo (e não o servidor de build / CI!) E você precisa levar a qualidade adiante como uma equipe. Sempre há coisas que podemos melhorar (Kaizen)

Também vale a pena olhar para o Kanban (que é visto como um fator de mudança / melhoria).

Um último pensamento - sou programador profissional e gostaria que minha equipe fosse a mesma, mas trabalhar mais de 40 horas por semana não é realmente uma coisa boa, então o objetivo de alguém deve ser ter uma equipe que faça seu trabalho efetivamente e bem dentro da semana normal de trabalho e em relação a isso, o argumento para melhorar a prática de trabalho é que é mais provável, por exemplo: adicionar testes de unidade para demonstrar o caso de falha quando (antes) a correção de erros lhe dá confiança de que éfixo; ter um servidor de build dá a você confiança em sua capacidade de criar suas soluções de maneira limpa - se esse build também gerar pacotes de implantação, significa que a implantação é muito simplificada; O código SOLID é, por definição, mais fácil de modificar; e, em geral, quanto menos dívida técnica você incorre, menos tem que pagar ...

Murph
fonte
0

Eu caí na programação por acidente ~ 30 anos atrás. Fiquei motivado a aprender os princípios básicos de engenharia de software ao ser designado para manter / dar suporte ao código de outras pessoas. Nessas tarefas, aprendi como um leitor de código experimenta código - como ter empatia com o leitor de código. Eu não queria infligir a dor do meu código mal escrito a outras pessoas!

Essa prática de designar novos programadores para manter / apoiar o código de outras pessoas não é uma mágica e parece fornecer motivação para aprender a produzir código sólido com mais frequência do que nunca.

David Pointer
fonte
11
Comecei da mesma maneira, embora não por acidente. Isso é muito semelhante ao que Dipan Mehta disse em seu post. Você joga uma pessoa em uma lagoa, certificando-se de que não é muito profunda, e deixa-a nadar. Você foi um daqueles que aprenderam a nadar, mas isso não é universal (veja a resposta dele com comentários). Também acredito que esse tipo de abordagem funciona melhor para novas pessoas do que aquelas que já têm hábitos arraigados. Então, eles não apenas precisam nadar, mas também contra a corrente das práticas estabelecidas.
DXM