Como convencer um membro da equipe a usar uma estrutura da web? [fechadas]

10

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:

  1. Não reinventar a roda
  2. Base de código bem escrita e testada para trabalhar a partir de
  3. Como avançar (o prazo está mais próximo do que gostaríamos)
  4. Velocidade de desenvolvimento
  5. 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?

Andy Hunt
fonte
2
É muito difícil encontrar a pergunta real no seu blog :) Revise de uma maneira que enfatize os argumentos técnicos que você cria. Embora não possamos realmente dizer como conversar com uma pessoa que não conhecemos, poderíamos ajudá-lo a abordar a situação do ponto de vista dos programadores. Parece haver uma boa pergunta sobre prototipação evolucionária lá, mas eu não posso ter certeza ...
yannis
4
Partes deste provavelmente seria mais adequado para: area51.stackexchange.com/proposals/30887/professional-matters
Karlson
3
he doesn't want to use code he hasn't personally written.É melhor ele jogar fora seu sistema operacional, IDE, telefone, semáforos etc.
StuperUser
4
@AndyBursh 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.
yannis
4
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.
maple_shaft

Respostas:

20

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.

Karl Bielefeldt
fonte
3
+1, uma vez que isso acontece ocasionalmente no mundo real. Estive em empregos em que não podia concordar com outro desenvolvedor sobre qual era a melhor abordagem. Então, nós dois acionamos um POC e examinamos os prós e contras de cada um. Nove em cada dez vezes, acabamos adotando uma solução que era um mashup dos dois POCs, e todos aprenderam algo com o processo.
Timothy Baldridge
11
+1 para ensinar sobre Dunning-Kruger! Todo mundo precisa saber sobre isso ..
Stephen Gross
Bah. É muito fácil citar Dunning-Kruger quando você discorda de alguém - muito fácil chamá-lo de estúpido. Talvez o colega acredite que estruturas violam o espírito da tarefa, talvez ele queira resolver, em primeira mão, os problemas que uma estrutura resolve, talvez ele queira evitar o debate CodeIgniter, Cake, Symfony ... Minha primeira suposição não foi ele era um idiota.
março de Corbin
11
@Corbin, Dunning-Kruger não é sobre falta de inteligência, é sobre inexperiência. Duas coisas muito diferentes. Concordo que suas razões podem ser válidas, mas o OP disse que esses não eram os argumentos que ele estava fazendo. Em vez disso, ele "não entende o motivo" de usar estruturas, porque ele pode escrever algo tão bom quanto do zero em menos tempo. Uma pessoa inexperiente que superestima sua própria competência em comparação com uma solução sobre a qual ele reconhece quase nada é um exemplo de Dunning-Kruger. Essas pessoas não podem ser "convencidas" a algo, elas devem ser mostradas.
Karl Bielefeldt
7

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.

Péter Török
fonte
Eu gosto da ideia de um teste de velocidade para demonstrar isso. Que tipo de testes de aceitação poderíamos executar? Certamente vou sugerir isso, mas não tenho certeza se ele ficará bem com ele (ou com o grupo), já que todos temos outros prazos para administrar, e duvido que alguém esteja particularmente interessado em escrever as especificações ou "perder tempo" (como Eu tenho certeza que seria colocado) nisso.
Andy Hunt
11
Ciência, funciona: xkcd.com/54
StuperUser
5

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.

Tyanna
fonte
Eu não tinha pensado em como isso se reflete nos outros do grupo, honestamente. Eu vou ter certeza de apontar isso.
Andy Hunt
1

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).

aufather
fonte