A questão é essa e os detalhes a seguir: há algo que eu possa dizer / trazer, como programador, para trazê-lo para o meu lado?
Eu adoraria ouvir argumentos válidos para ambos os lados, mas principalmente sugestões de como conversar com ele.
Minha situação é a seguinte: estou trabalhando em um projeto de equipe no meu curso de graduação, construindo um site de tamanho médio como um protótipo para a universidade. Todos são considerados iguais no grupo e não há um líder nomeado; portanto, a resposta para esse problema não pode ser "pull rank".
Todos são iguais, no entanto, existe uma enorme lacuna no conhecimento entre os membros. O membro da equipe em questão e eu somos desenvolvedores capazes, embora ele não possua experiência no setor. Os outros três membros são menos capazes e dois optaram totalmente pelo desenvolvimento. Todos os três se recusaram a comentar a situação devido à falta de conhecimento.
Como um grupo, estamos decidindo quais tecnologias usar na implementação do site; especificamente, se você deve usar uma estrutura PHP (Code Igniter) ou não.
Estou argumentando a favor, citando:
- Não reinventar a roda
- Base de código bem escrita e testada para trabalhar a partir de
- Como avançar (o prazo está mais próximo do que gostaríamos)
- Velocidade de desenvolvimento
- Padrões de design sólidos e sustentáveis e boas práticas
Ele está argumentando a favor de trabalhar da maneira que costumava:
- Gravando sob medida, funções únicas em um arquivo de "biblioteca" como quando ele precisa delas
- Funções para acessar dados e renderizar esses dados na página, obtendo / configurando para e da sessão e obtendo / postando dados, etc.
- Ter 1 arquivo por página (resultando em nenhuma separação de preocupações entre controle, apresentação e dados)
Suas razões contra o uso do framework são baseadas principalmente em ele não conseguir entender o ponto: ele já pode fazer todas essas coisas. A estrutura não muda isso, apenas torna mais difícil porque ele precisa aprender a estrutura; ele não quer usar código que não escreveu pessoalmente.
Ele também disse que "não importa a qualidade da base de código, já que o projeto é apenas um protótipo e nunca será mantido". Para mim, isso não é desculpa para escrever código não sustentável.
Percebo por que ele argumenta, mas discordo de sua "falta de preocupação com a capacidade de manutenção" e seu "desprezo pelo bom design", ou mesmo separação de preocupações. No entanto, suspeito que ele nunca tenha estudado padrões de design, por isso não sei quão eficaz seria demonstrar por que seu método poderia se provar insustentável.
Quero continuar esse projeto, mas não quero fazê-lo sem levar em consideração tudo o que aprendi ao longo dos anos. Como eu disse antes, não há possibilidade de conseguir classificação aqui, nem outros membros da equipe estão dispostos a participar. Devo simplesmente recuar e fazer as coisas à sua maneira? Ele é muito teimoso e inexperiente para saber melhor? Ou estou sendo o mais teimoso aqui?
TL; DR O membro inexperiente da equipe está sendo teimoso, como posso conquistá-lo?
fonte
he doesn't want to use code he hasn't personally written.
É melhor ele jogar fora seu sistema operacional, IDE, telefone, semáforos etc.I want to know exactly how everything works
é um argumento válido ao aprender, se reinventar a roda é realmente aceitável. Talvez, apenas talvez, você possa ler isso como um pedido de ajuda e não como uma teimosia.since the project is only a prototype and will never be maintained
Últimas palavras finais :) Eu gostaria de ter um dólar toda vez que fiz essa suposição e descobri que a impaciência e a ganância de curto prazo dos superiores decidiram que o protótipo é o produto agora.Respostas:
Você não será capaz de convencê-lo a isso. É chamado de efeito Dunning-Kruger . Ele é ignorante demais para saber o que não sabe e tem medo de perder o que chama de vantagem.
Quando não é possível chegar a um consenso, você deve alcançar um compromisso. Talvez você possa dividir o trabalho para que sua necessidade de aprender a estrutura seja mínima. Talvez você tenha algum tipo de "design-off" em que cada um faça o seu caminho por algumas semanas e depois a equipe vote em qual é o melhor. Talvez você possa envolver seu professor patrocinador ou quem quer que o cliente resolva o problema.
fonte
Um argumento a seu favor é a reutilização do conhecimento. Todos os membros da equipe que aprenderem uma estrutura conhecida e amplamente usada (como o CodeIgniter) poderão reutilizar seus conhecimentos no próximo projeto. Enquanto o conhecimento de uma "biblioteca" aleatória, proprietária não é reutilizável. Isso pode ter uma boa repercussão com os outros membros da equipe, pois eles provavelmente preferem adquirir algum conhecimento útil e reutilizável nesse projeto.
Outro argumento pode ser uma medida concreta dos custos de desenvolvimento / manutenção. Imagino que um desenvolvedor versado no CodeIgniter possa se desenvolver mais rápido do que seu colega escrevendo todas essas funções proprietárias. Isso pode ser demonstrado com você e ele construindo uma página da Web idêntica - você com o CodeIgniter, ele à sua maneira - e medindo o tempo até a conclusão. Em seguida, faça um conjunto de modificações / extensões nas páginas, medindo novamente o tempo até a conclusão. Obviamente, a especificação deve ser preparada por alguém independente de vocês dois, para lutar em terreno neutro.
Outra - como você mencionou - é a qualidade do código. Quando as páginas da Web estiverem prontas, execute o mesmo conjunto de testes de aceitação em cada uma e compare a densidade de erros.
Obviamente, quando você está sob pressão do tempo, pode não haver possibilidade de parar e fazer essas medições. Então você provavelmente quer uma resolução rápida para esse dilema. Tente convencer os outros membros da equipe (por exemplo, fazendo com que eles leiam as próximas respostas ao seu post aqui :-), para aumentar a pressão do grupo sobre ele. No final, se ele realmente não puder ser convencido, convém dividir o projeto em duas partes, uma para ele e - idealmente - para o restante da equipe, usando o CodeIgniter. Concentre-se em fazer sua própria parte da melhor maneira possível e deixe-o fazer o que quiser. Os resultados provavelmente falam por si.
fonte
Eu sinto que você precisa envolver os outros três companheiros de equipe. Vocês dois precisam apresentar seus argumentos e explicar as coisas para que eles entendam. No final do dia, eles terão que trabalhar com essa base de código também. E se todos são iguais, então eles devem ter alguma opinião sobre o que desejam trabalhar.
Eu acho que uma boa abordagem seria para cada um de vocês descrever os benefícios de suas respectivas soluções e mostrar aos outros membros da equipe por que você acha que esse é o melhor caminho a percorrer. Então deixe-os decidir. Existem 3 deles, então será o desempate.
Uma coisa que você deseja destacar é que, se esse é o seu projeto Sr., e os outros membros da equipe não têm outra experiência, esse projeto precisa refletir o trabalho que eles podem fazer para os possíveis empregadores. Se você fizer certo, pode ser um bom ponto de conversa em uma entrevista. Sei que peço aos novos graduados que descrevam seu projeto sênior e como ele foi projetado e desenvolvido.
Se eles seguirem a abordagem do outro cara, você terá que aceitar. Mas não desista da esperança. Crie um bom design para que o caos que ele está escrevendo não tenha impacto sobre tudo. Se você tiver tempo, faça um código para limpar e refatorar algumas coisas dele e mostre a ele que ele não precisa reinventar a roda a cada vez.
fonte
Eu sinto que a faculdade é como uma caixa de areia. A maioria das coisas que você faz não é usada na implantação. Assim, você tem muito mais liberdade para experimentar e sair da sua zona de conforto. Explore coisas novas porque a falha não terá muito impacto. Também na sua situação, os membros de sua equipe têm a vantagem extra de ter alguém com conhecimento prévio ajudando-os.
Quanto ao outro membro experiente da equipe, ele não precisava ter ido à faculdade se não quisesse aprender algo novo. Esta é uma boa oportunidade para aprender algo novo e adicioná-lo à sua caixa de ferramentas.
E para os membros inexperientes da equipe, suas chances de serem empregadas / melhor empregadas aumentarão com uma estrutura como CodeIgniter em seu currículo (na verdade, o conhecimento para justificar isso em seu currículo).
fonte