Lidando com uma falha de design fundamental quando você é novo no projeto [fechado]

13

Comecei a trabalhar em um projeto de código aberto com cerca de 30 desenvolvedores. Estou trabalhando para corrigir alguns dos erros como uma maneira de entrar no "loop" e me tornar um colaborador regular do projeto. O problema é que acho que descobri uma falha de design fundamental que está causando um dos erros nos quais estou trabalhando. Mas eu sinto que, se colocar isso na lista de e-mails, vou parecer arrogante, e algumas das discussões que tive sobre o assunto estão chocando algumas pessoas. Como devo fazer isso?

Matt Phillips
fonte

Respostas:

20

Mesmo se você tiver certeza de que essa é uma "falha fundamental do design", lembre-se de que você é um estranho. Pode estar lá por uma boa razão. Ou, dependendo da idade do projeto, ele poderia ter sido colocado lá pelo que era uma boa razão na época e agora ainda existe por razões históricas.

Em vez de "colocar isso na lista de discussão", tente fazer uma pergunta. Algo como:

"Ei, eu acabei de encontrar o X, e isso não faz sentido para mim. Parece que o caminho certo para implementar isso seria Y, mas, novamente, eu sei que sou novo aqui e não quero tire conclusões precipitadas. Isso é um erro no design ou está faltando alguma coisa? Alguém pode me informar? Obrigado. "

A engenharia é um dos poucos lugares do mundo onde a humildade ainda é considerada uma virtude genuína, e fazer perguntas sobre "problemas óbvios" dessa maneira é realmente uma boa maneira de obter boas respostas e aprender coisas novas.

Mason Wheeler
fonte
2
Definitivamente, isso está na direção certa. Eu só quero fazer isso de uma maneira que não saia como "Eu sei que você está errado e eu estou certo" e ainda assim tirar algo disso.
Matt Phillips
@ Matt: Em seguida, diga-o como "não sei se estou certo" e tente o seu melhor para evitar que pareça sarcástico ou acusador.
Mason Wheeler
Eu usaria algo como "Não entendo por que isso é feito dessa maneira. Não seria melhor / mais fácil / mais legal fazê-lo dessa outra maneira? Acho que também ajudaria no bug XX"
Javier
2
Eu acho que você pode querer brincar um pouco com o texto, em vez de dizer diretamente "o caminho certo para implementar isso seria Y". Transformar em uma questão pura "existe alguma razão pela qual Y não é usado" mostra o mesmo ponto sem colocar o pé no chão. Qualquer um terá um ego um tanto frágil ao ser questionado sobre seu próprio código e apelando para sua experiência (por que você escolheu X em vez de Y) em vez de desafiá-lo (Y é / parece / se sente melhor / mais legal / mais fácil que X) pode provocar uma resposta mais favorável.
Steven
6

Uma das 48 leis do poder :

Ganhe com suas ações, nunca com argumentos

Qualquer triunfo momentâneo que você acha que conquistou através de argumentos é realmente uma vitória pirra: o ressentimento e a má vontade que você desperta são mais fortes e duram mais do que qualquer mudança momentânea de opinião. É muito mais poderoso fazer com que outras pessoas concordem com você através de suas ações, sem dizer uma palavra. Demonstre, não explique.

Este é o que aprendi da maneira mais difícil depois de muitos argumentos inúteis.

Nesse caso em particular, eu recomendaria a criação de um código muito simples e específico que funcione, mas não funcionará devido a essa falha de design. Como diz o velho ditado, "Você não pode discutir com o compilador / intérprete".

A outra coisa é que, para ter influência sobre um grupo, você deve ser percebido como um membro do grupo . Mesmo que você tenha ingressado na empresa, as pessoas ainda não o percebem como um membro do grupo. Portanto, talvez seja melhor acompanhar o grupo estabelecido até que eles aprendam a percebê-lo como um deles.

Jason Baker
fonte
5

Você poderia perguntar por que um design específico foi usado? Dessa forma, você pode obter mais informações da história, pois pode haver algumas boas razões pelas quais algo foi escolhido que você não conhece. Eu concordaria com a idéia de que você não é o especialista que pode separar o design, mas perguntar pode ser uma maneira de aprender mais, para que você possa perguntar sobre a falha encontrada para que a mensagem não seja vista. como isca de chamas ou corrico.

JB King
fonte
4

Você provavelmente não vai gostar disso ... mas aqui vai ...

Estou trabalhando para corrigir alguns dos erros como uma maneira de entrar no "loop" e me tornar um colaborador regular do projeto. O problema é que acho que descobri uma falha de design fundamental que está causando um dos erros nos quais estou trabalhando.

Não, não, você não fez. Se você fez, você não seria tão hesitante sobre isso. O fato de você não ter certeza sobre a "falha fundamental do design" significa que você não descobriu uma. Ao tentar apontar o erro de outra pessoa, não é necessário nenhum amigo para você usar superlativos (como "fundamental").

O que você pode ter descoberto é um design um pouco melhor para o problema que está enfrentando. Você provavelmente deve testá-lo completamente - já que você é novo no projeto, há uma chance melhor do que nunca de você não ter idéia do que está falando.

Mas eu sinto que, se eu colocar isso na lista, vou parecer arrogante

Chamar isso de "falha fundamental de design" definitivamente parecerá arrogante. Aliás, nem mesmo apontar que pode ser um bug é a melhor idéia. Se você não sabe de fato (e pode fazer backup) de que é um problema, é necessário fazer humildemente perguntas e pesquisas até entender completamente . Melhor do que quem você está tentando convencer.

... e algumas das discussões que tive sobre o assunto estão chocando algumas pessoas. Como devo fazer isso?

Pare. Esta não é uma questão moral, e não está matando ninguém (presumo). Se você pretende ser um membro de longo prazo do projeto, primeiro deve ganhar confiança antes de questioná-los. Corrija os bugs, faça um trabalho incrível (de acordo com as métricas que o grupo valoriza), projete alguns recursos e ganhe um assento na mesa.

Então, sem apontar os dedos ou chamar nada de quebrado, apresente humildemente uma sugestão para melhorar o design do grupo. E é melhor você ter pensado em todas as consequências e soluções para elas, ou será abatido por ser "ingênuo". Esteja pronto para uma discussão sobre por que seu design é melhor. Esteja preparado para perder e perder graciosamente.

Se a sua ideia for realmente melhor, ela será aceita pelo grupo (embora talvez não seja pelo designer original), o grupo não se importa, ou o grupo é estúpido. Nos dois últimos casos, por que você gostaria de fazer parte do grupo?

...

Se você é capaz, a alternativa é apenas codificar a maldita coisa de maneira tão brilhante que eles tremerão de espanto com suas proezas de codificação e não terão escolha a não ser aceitar a simplicidade elegante e a verdade eterna do seu design. Desenvolvedores fazer competência respeito, mas você tem que ter cuidado - o castigo para a incompetência (ou arrogância injustificada) é bastante grave. Já que você está fazendo essa pergunta, acho que a rota de arrogância brilhante e descarada não é realmente uma opção. ;)

Mark Brackett
fonte
2
"Oi, obrigada por me receber em sua casa. Ao passar pela porta, quero que todos na família saibam que seu bebê é feio e que alguém o vestiu de maneira engraçada".

Um bug é um bug, e não há problema em chamá-lo assim. Dizer que isso é causado por uma "falha de design" está apontando um dedo para o cara diante de você (mais parecido com o "papai") e dizendo que ele é um idiota.

Desnecessário e contraproducente. Eu sugiro:

"No que diz respeito à edição #blah, acho que posso consertá-la com XY e Z, mas não tenho certeza de como isso afetará o restante do projeto. Tudo bem?"

Onde XY e Z corrigem o problema. Deixe que eles lhe digam que era uma falha de design; pode haver uma solução alternativa. Ou as suposições por trás da 'falha' podem ser tão profundas ao longo do projeto que a mudança corrigirá o erro, mas quebrará todo o resto!

Steven A. Lowe
fonte