Quando você não ajuda os programadores menos experientes? [fechadas]


57

Você acha que é uma boa idéia quando um programador júnior precisa de ajuda para sempre entrar e tentar educá-los? Ou eles ignoram todos os conselhos sobre "ensinar a pescar" que você lhes dá e se concentram no "peixe" que você acabou de lhes trazer? Você os deixa sempre descobrir as coisas por conta própria, sabendo que os erros são a melhor maneira de aprender? Ou tem medo de que fiquem tão queimados e frustrados que percam o desejo de acelerar?

Quando você escolhe quando ajudar alguém mais jovem do que você e quando recuar e deixá-lo aprender com seus erros?


5
+1. Muito boa pergunta. A alimentação com colher não ajuda ninguém, mas deixar que alguém se atrapalhe também é um grande fracasso.
13113 Steve

11
Não se esqueça de que nem sempre é possível fazer as coisas sozinho, às vezes você tem um problema ou um erro e precisa de uma nova mente para resolvê-lo. E, se eles perderem o desejo de se esforçar mais, talvez eles não mereçam realmente ser educados. Você não pode alimentar o cérebro com uma colher, isso nunca funciona. Costumo fazer perguntas que meus professores não conseguem responder por muitas razões: por alguma razão, tenho algum tipo de curiosidade sempre faminta que me impede de fazer meu trabalho até que eu saiba muito. cuidado com esse tipo de aluno, eles não vão sugar apenas o seu tempo, mas também o deles. Pelo lado positivo, estou mais lúcido ...
jokoon

11
Não escreva o código deles. Mostre a eles o seu. Dê-lhes conselhos (se eles quiserem ouvir).
Kamil Tomšík

Respostas:


51

Em um dos meus trabalhos, eu estava aprendendo e ensinando (porque é claro que não sei tudo, mas sei mais do que alguns)

Não coloque as mãos no teclado a todo custo . Isso é frustrante tanto para você quanto para a pessoa que você está ensinando. Mesmo se você der instruções passo a passo, quando você coloca as mãos no teclado, é o equivalente a dar um pedaço de código e dizer "isso corrige".

No que eu aprendi:

  • Não digite o código para eles
  • Tente ensinar no nível deles (se eles entenderem a sintaxe, não explique a eles. Isso os aborrecerá; ensinará as classes / funções usadas)
  • Não os ignore ou diga "descubra por conta própria". O que você acabará fazendo com que eles cheguem até você mais tarde, exceto agora as três linhas de código com as quais eles tiveram problemas, agora são 50 linhas, distribuídas por 8 arquivos, tentando solucionar o problema.
  • Ensine-os a aprender por conta própria. Uma das melhores maneiras é dizer a eles para usar o stackoverflow. Às vezes, mesmo sabendo a resposta, se eles me perguntassem. Eu diria "bem, eu vou fazer esta pergunta no stackoverflow". e eu daria a eles um link para a pergunta. Faça uma pausa para o café e veja alguns códigos diferentes. Quando eles voltaram perguntando "como resolver esse problema", peça para eles consultarem sua pergunta no SO (usando o URL que você forneceu). Descobri que as massas geralmente são melhores professores do que eu.
  • Quando eles copiam e colam o código da Internet e perguntam por que não funciona, peça que expliquem o que cada linha faz. Se não puderem, diga-lhes para pesquisar as funções / classes usadas. Se necessário, forneça explicações para a classe e funções
  • Realize revisões de código para garantir que estão solucionando o problema, não apenas trabalhando para que ele apareça mais tarde.
  • Seja legal. Quando alguém estiver começando na sua base de código sem documentação, não peça apenas para ler o código-fonte. Forneça uma visão geral resumida de alto nível da função em questão. Ou, melhor ainda, comece a escrever a documentação :)
  • Seja humilde. Não se preocupe com o problema. Se você não souber, diga que não e ajude-os a procurar. Muitas vezes, apenas conhecer o domínio o suficiente para saber quais palavras-chave procurar é ajuda suficiente para você fornecê-las.

9
+1 em "Não digite o código para eles" ao qual eu acrescentaria: manipule o teclado para que pressionar Ctrl-V produza um choque elétrico cuja força seja proporcional ao número de linhas na área de transferência. :)
Ingo

Uau. Eu não esperava conseguir isso muitas upvotes lol
Earlz

2
Eu acho que isso é a coisa mais importante: "Muitas vezes, apenas conhecer o domínio o suficiente para saber quais palavras-chave procurar é ajuda suficiente para você dar a elas". - sido há (como júnior)
JCasso

"Ensine-os a aprender por conta própria.", Eu definitivamente concordo.
Steven Mou

+1 Para o uso de SO. Além de obter opiniões variadas, a resposta também é registrada para revisão posterior. Acho que nem todos mantêm o conhecimento de uma solução também.
31412 Chris

27

Método socrático, ou seja, faça perguntas que os levem a pensar em uma direção positiva

[isso é útil mesmo quando você não sabe qual é o problema, muito menos a solução]


3
+1 para fazer perguntas. Esta é surpreendentemente uma maneira incrível de ensinar. Não me lembro onde está o artigo, mas em algum lugar um professor ensinou um monte de adição e subtração binárias da 1ª série fazendo apenas perguntas.
Earlz

-1 por não responder diretamente a pergunta ... 100 para fornecer uma excelente resposta para a questão subjacente de mentoring: -) ...
Newtopian

@Earlz, se você o encontrar, adicione o link.


22

Eu aprendi a ajudá-los a arquitetar e parar por aí. Escolha as ferramentas certas, elabore um projeto geral para um ou dois problemas complexos e deixe-os seguir em frente. Se eles voltarem e pedirem conselhos, dê-os em pequenos pedaços. Se não, deixe-os.

Você está totalmente certo sobre o "queimado e frustrado". Eles serão exatamente isso se você administrar de forma micro ou escolher um nit. Por fim, ajuda muito a estabelecer uma relação de trabalho amigável com seus colegas de trabalho. O tempo gasto em ganhar confiança e respeito mútuo se pagará 10 vezes mais.


11
Por outro lado, uma vez eu trabalhei com alguém tão preguiçoso que toda vez que eles precisavam se lembrar dos parâmetros de uma API, eles me perguntavam, em vez de procurar por eles mesmos. Me deixou louco: eles poderiam procurar memcpy tão bem quanto qualquer outra pessoa - se quisessem. Naqueles dias, tínhamos cópias impressas de páginas de manual. Acabei entregando o livro e dizendo "para os chrisakes, procure você mesmo!".
quickly_now

11
@ rapidamente, ou "eu vou ajudá-lo com essa coisa simples quando tiver tempo" e depois voltar a ela ... mais tarde ...!

10

Ajudo-os quando realmente preciso que as coisas sejam concluídas rapidamente, quando fica claro que elas atingiram uma parede de tijolos e quando é claramente irracional esperar que descubram sem ajuda. Se, no entanto, eles não tiverem tempo para algo, é melhor que tentem primeiro.

Quanto a pegar o "peixe" em vez do "ensinar a pescar", a melhor maneira de fazer isso é não resolver os problemas das pessoas . Dê-lhes ideias e deixe-as seguir em frente. Se eles correm com ele e falham, então ajude-os mais. Se eles tiverem sucesso, melhor ainda.


6

Se eles são um bom programador, devem encontrar uma maneira de fazê-lo. Agora, em uma situação em que é quase impossível encontrar informações ou uma solução para um determinado problema, dar uma mãozinha parece estar dentro da razão, desde que você a mantenha dentro da razão. Não dê a eles a resposta.

Talvez como exemplo, eu tenha 18 anos e tenha aprendido sozinho há anos e tenha escrito algumas coisas loucas, incluindo meu próprio compilador e sou autodidata. Eu só busco ajuda com as coisas em que realmente estou preso (como eu tenho pesquisado e experimentado por pelo menos um dia, mas sem sucesso). Eu também gostaria de fornecer um contra-exemplo: uma vez, em uma aula de programação, um aluno me pediu para depurar o código que ele nem havia compilado!

Essencialmente, um bom programador, mesmo um iniciante, deve ser capaz de experimentar e pesquisar soluções para a maioria dos problemas.


9
Dar ideias às pessoas no início de seu trabalho costuma ser um sério impulso à produtividade, mesmo que sejam pessoas mais velhas. Na minha experiência, em um ambiente de negócios, é melhor pedir ajuda depois de uma ou duas horas, e não depois de um ou dois dias, porque oito horas do tempo de alguém são muito dinheiro para uma pergunta que outra pessoa já saiba a resposta.
jprete

5
Mas lembre-se, é o seu cliente que está pagando pelo seu tempo! Eles ficariam felizes em você passar um dia pesquisando uma solução, que poderia ser resolvida em 15 minutos, perguntando a um desenvolvedor sênior?
26611 Adam Harte

3
Em um ambiente de negócios, suponho que você precisaria racionar seu tempo de acordo. Um dia simplesmente não daria certo. No entanto, ainda acho que resolver os problemas por si mesmo o beneficiará, pois suas habilidades em resolução de problemas devem aumentar. No final, você pode pagar por isso agora ou mais tarde.

11
@ Adam, a pergunta é se o desenvolvedor sênior deve ser perguntado ou se perguntar. Afinal, este é um processo de aprendizado.

3

Vou orientar, mas vou embora se eles querem que eu faça o trabalho deles. Normalmente, apenas alguns conselhos sobre como resolver um problema ou reformular a descrição da tarefa podem percorrer um longo caminho. Mesmo apenas dizendo a eles as palavras que eles devem usar no google pode ser ajuda suficiente. 2 minutos no máximo.


3

Recentemente, comecei a usar a técnica pomodoro . Como resultado, se não consigo responder a uma pergunta sem interromper minha linha de raciocínio sobre a tarefa atual, comecei a perguntar se posso adiar uma resposta até o final do pomodoro, uma média de 15 minutos de atraso. Um efeito colateral interessante que eu descobri é que, quando passo pela mesa deles para responder à pergunta, eles já a resolvem por conta própria. Caso contrário, estou muito mais preparado para dar-lhes toda a atenção.

Isto não é escola. Não é trapaça se você fornecer rapidamente um fato que eles poderão encontrar por conta própria. Pelo contrário, faz sentido para os negócios poupar tempo e, na minha experiência, as habilidades são muito pouco aprimoradas por tentativa e erro, em comparação com um mentor, dando a você pequenos empurrões frequentes na direção certa. Prefiro que aprendam 10 maneiras certas de fazer as coisas com a minha ajuda do que 9 maneiras erradas e uma por conta própria.

Se algo puder ser facilmente pesquisado, ensine-os a fazê-lo. Por outro lado, se é algo que você só pode saber por experiência própria, como quais arquivos investigar para detectar certos sintomas de bugs, não vejo absolutamente nada de errado em apenas dar uma resposta inexplicável.

Por outro lado, coisas mais subjetivas, como orientação de arquitetura, sempre devem ser acompanhadas do raciocínio por trás disso. Por um lado, o desenvolvedor júnior pensou muito mais profundamente sobre sua tarefa específica do que você. Falar sobre isso garante que você não esteja tirando conclusões precipitadas. Por outro lado, impede-os de aplicar cegamente regras a situações futuras em que elas podem não se aplicar.

Só consigo pensar em um caso em que me recusei a continuar ajudando um colega de trabalho, e foi depois de passar algumas horas explicando algo várias vezes e passando por vários exemplos, depois do qual ela literalmente ainda não sabia a próxima declaração para digitar. algumas dicas muito importantes. Naquele momento, ela tinha pouca esperança de manter o emprego sem uma séria reaprendizagem dos fundamentos, e com certeza ela durou apenas alguns meses.


1

Paro de ajudá-los quando eles voltam com a mesma pergunta pela terceira vez.

Eu digo a eles que ficaria feliz em ajudá-los, mas apenas se eles se ajudarem primeiro. De lá, eles vão procurar outro lago para pescar comida de graça; nesse caso, eles geralmente são demitidos pouco tempo depois. Ou eles trabalham nisso e ganham o jackpot quando voltam para obter mais ... isso é mais coisas para aprender do que mais do mesmo!


1

Eu acho que o contexto é importante.

Se estamos lidando com um problema crítico de suporte à produção em que o tempo de resposta é importante, na verdade eu daria muita ajuda e muitas explicações para que eles pudessem aprender o problema.

Se o prazo final for menos sensível, a complexidade se tornará o driver. É claro que você pode ajudar muito os novatos apenas atribuindo tarefas apropriadas no nível de habilidade, mas se for algo que possa ser resolvido por meio de pesquisas, concordo com os outros pôsteres que os guiam sem dar a resposta exata é uma ótima abordagem .

Se eles fazem perguntas que são facilmente respondidas, procurando em outro lugar, eu as aconselho a fazer seu próprio trabalho. Nesse sentido, se existe um processo ou solução bastante rotineiro e há pouco valor em torná-los escravos, então tenha vergonha de você, se você não tiver um wiki à mão para verificar.

Quando se trata de transferir conhecimentos de domínio personalizados para os negócios, não medo palavras. Faça uma palestra direta o mais rápido possível. Iniciantes precisam disso para ajudar com tudo o que vem depois. Não existe algo como ser educado sobre os negócios com muita rapidez ou facilidade. Certa vez, eu tinha um chefe que fazia todos os tipos de truques por uma hora tentando me levar a uma resposta. Eu era novo em folha, ainda não sabia nada sobre o aplicativo ou o negócio e estava lidando com um problema de suporte à produção. Eu queria gritar: "Por que você está jogando # @ & (* $%! Jogos? Usuários que tentam obter faturas estão esperando por uma resposta!"


1

Eu acho que a primeira coisa que você deve perguntar a eles antes de ajudá-los é que você investigou isso? se sim, pergunte a eles o que descobriram e aponte-os na direção certa. Investigá-lo geralmente é subestimado, mas é uma das melhores práticas que aprendi. Encontrar informações sobre o que você precisa dá a você o poder de aprender por si mesmo; também ficará claro que eles devem tentar primeiro.

Se o problema for mais complexo, tente não dizer a eles o que fazer, mas compartilhe algumas idéias, pergunte-lhes como eles acham que poderiam abordar o problema.

Se eles não têm idéia, tente decompô-lo em um nível muito básico, onde você não fornece todos os detalhes, mas descreve a solução o suficiente para que eles tentem, existem ferramentas muito úteis para isso, como algoritmos ou fluxogramas .

Em conclusão, tente guiá-los sem interferir no processo de aprendizado, sempre ajudando-os a depender de você para todas as tarefas então designadas, que levarão seu tempo e serão contraproducentes.


1

Evito ajudar em coisas simples, como sintaxe, que eles devem saber ou, se não sabem, devem entender por si mesmos. Se é algo mais complexo, não me importo de explicar uma vez.

Quando se trata de explicar o processo, ou os padrões de codificação da nossa organização / projetos, etc., eu uso a regra das três advertências. Eu realmente acho que uma pessoa é manca se precisar explicar as coisas três vezes. De fato, esse também é um dos critérios em nossa avaliação.

Depende muito do aluno. Eu espero que eles consigam algumas coisas por conta própria. Se eles aparecerem: "Enfrentei esse problema, tentei os métodos A, B e C, mas não consegui resolver o problema", eu os ajudarei. Se eles simplesmente sugerirem "Estou enfrentando esse problema" e não tiverem feito nada, pedirei que voltem aos livros e procurem uma solução.


1

Como programador iniciante (9 meses no meu trabalho atual usando principalmente Perl e SQL e com a) nenhum conhecimento de Perl eb) alguns meses de mexer com o SQL antes deste trabalho), ao fazer perguntas de programação, tento mostrar o que fiz até agora, ou no caso de algo não funcionar (e ser difícil de depurar), onde acho que o bug pode estar. Sempre que possível, procurei aprender a pescar.


1

Paro de ajudar nas seguintes circunstâncias:

  • Se estou sendo usado para canalizar o Google / Stack
  • Se eu forneci documentação e comentários adequados, e eles estão atalhos para o estágio RTFM
  • Se eles são sujos, sem comentários, "Vou invadir isso agora e voltar mais tarde" & & £>! $

Se eu não forneci documentos adequados ou eles estão trabalhando com uma ferramenta / classe que eu criei, é minha responsabilidade ajudá-los

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.