Programador antigo desapareceu. Prestes a contratar outro programador. Como abordar isso? [fechadas]

19

Depois de passar mais de um ano trabalhando em um projeto de rede social para mim usando o WordPress e o BuddyPress , meu programador desapareceu, mesmo sendo pago toda semana, durante todo o período. Sim, ele não está morto, pois usei um rastreador de e-mail para confirmar e ver que ele abre meus e-mails, mas ele não responde. Parece que ele conseguiu outro emprego. Eu me pergunto por que ele simplesmente não podia dizer isso. E até paguei a ele um salário adiantado pelo trabalho que ele não fez.

O problema é que nunca pedi documentação completa para a maioria das funções que ele codificou. E havia MUITAS funções para esse período de mais de um ano, e algumas delas possuem bugs que ele ainda não corrigiu. Agora parece tudo confuso.

Qual é a primeira coisa que devo fazer agora? Como eu prossigo?

Acho que a primeira coisa a fazer será contratar outro programador, mas quero começar com o pé direito, documentando todo o código atual para que qualquer programador possa trabalhar em todas as funções sem problemas.

Essa é a primeira coisa que devo fazer? Se sim, como faço para fazer isso?

Qual é o tipo de documentação padrão necessário para algo assim? Posso obter um programador que apenas faça a documentação de todos os códigos e corrija os bugs ou a documentação não é realmente importante?

Além disso, você acha que conseguir outro programador "individual" é melhor ou contratar uma empresa com programadores trabalhando para eles, para que, se o programador designado para o meu projeto desaparecer, outro possa substituí-lo, sem o meu envolvimento? Eu sinto que essa é a abordagem que eu deveria ter adotado no começo.

pocto
fonte
29
"E eu até paguei a ele salário antecipado pelo trabalho que ele não fez." - isso pode ser um motivo para processá-lo, você deve confirmar um advogado.
Doc Brown
você pode nos dar alguns detalhes de quão proficiente você é na compreensão do código-fonte que resta?
Maru
10
A primeira e mais importante pergunta: você tem um contrato?
Radu Murzea 11/10
5
Se eu fosse o programador substituto, a documentação que eu desejaria seria do que ele trabalhava: escopo, marcos, descrições de problemas etc. Eu preferiria que o código dele fosse deixado como está e não seria útil se seu código foi "documentado" por alguém que provavelmente não poderia analisá-lo da melhor maneira possível.
user16764
15
A primeira coisa é alterar o login e a senha no seu servidor.
Michael Riley - AKA Gunny

Respostas:

17

Com base nessa interação que tivemos nos comentários, assumirei que você não afastou seu único desenvolvedor por causa de coisas pessoais. No entanto, com base nessa conversa, farei outro palpite de que esse revés ainda é principalmente sua responsabilidade como gerente de contratação. Como você mencionou, você não tem nenhuma experiência com os desenvolvedores, mas como você decide como contratar um?

Parece que você fez o seu melhor, mas você contratou alguém que simplesmente não conseguia lidar com a escala deste projeto, ele construiu uma base instável que se desintegrou sob ele e então simplesmente saiu. Infelizmente, a diferença entre desenvolvedores e empreendedores é que os primeiros são pagos por hora / salário, mas podem optar por ir e vir quando quiserem. Ele foi pago pelas horas em que trabalhou e saiu quando optou por não ser mais pago. Nada que você possa fazer sobre isso.

E agora? Parece que você começou a seguir o caminho de substituir as pessoas pelo processo. Se você tivesse documentação suficiente, as pessoas poderiam sair e outras poderiam continuar de onde pararam. OMI que não funciona e, se funcionar, ainda será muito mais caro do que ter uma equipe confiável de funcionários permanentes. A gerência de várias empresas nos últimos 30 anos tentou substituir as pessoas por documentação suficiente (incluindo meu último emprego) e sempre falhava. Foi por isso que decidi mudar de emprego, e agora eles ficam presos com documentos desatualizados e nunca precisos, enquanto estou passando o tempo da minha vida em uma nova startup.

O que eu faria se fosse você seria tentar encontrar a pessoa certa com habilidades e experiência suficientes para iniciar esse projeto e concluí-lo. Isso não inclui apenas habilidades de codificação, mas também design, arquitetura e gerenciamento básico de projetos. Não tente definir como ele faz seu trabalho ou quantos documentos ele precisa produzir. Apenas se concentre em encontrar a pessoa certa e esteja preparado para pagar em conformidade. Quando você o encontrar, verifique se o seu papel é apoiá-lo e remover obstáculos do caminho, não monitorar / microgerenciar. Não estou sugerindo que você fez isso antes, mas sei que muitos gerentes tendem a fazer isso e isso é apenas contraproducente.

Converse com outros empresários, possivelmente aqueles com mais experiência em engenharia de software. Leia esses fóruns e elabore um conjunto de perguntas para solicitar seu possível candidato. Apresente o problema e pergunte qual seria a abordagem. Se ele é o cara certo (e supondo que não tenha visto esta página), ele poderá sugerir muitas das coisas que outras pessoas já sugeriram em termos do que deve ser feito em sua empresa quando você começar a se recuperar. Peça a ele para definir um plano a partir do momento em que é contratado até quando a v1.0 será lançada. Como ele vai te levar até lá. Peça ajuda para entrevistar essa pessoa.

Apenas alguns dos meus pensamentos: o rastreamento de bugs é obrigatório (Jira custa US $ 10 para uma equipe de até 10 pessoas). O controle da fonte é essencial (o git é gratuito. Forçosamente custa amendoim para uma equipe de até 5 pessoas). Seu código é sua documentação. Não são seus documentos escritos por palavra. Ele deve revisar o código e manter o que é recuperável; jogue fora o resto e concentre-se em escrever códigos legíveis e de manutenção. Salve a documentação para alguns documentos de design de alto nível e poucas páginas. Ele deve conhecer a tecnologia em que você está trabalhando. Não contrate alguém com apenas boas intenções; você não pode permitir que eles aprendam no seu tempo. Pergunte a eles que outros projetos eles fizeram (infelizmente você ou alguém que você encontra pode precisar acompanhar o aspecto técnico das coisas). Você está procurando alguém com experiência suficiente, mas ao mesmo tempo não muito que essa centelha de excitação já se queime. Encontre alguém com fome para causar impacto. A metodologia que ele propõe ou segue deve permitir que você veja o trabalho regularmente (períodos de uma ou duas semanas) e forneça feedback instantâneo. Não contrate NINGUÉM que disser, ele estará pronto em exatamente 7,4 meses, eu avisarei quando terminar.

Boa sorte

DXM
fonte
1
@pocto: as pessoas estão lá fora, mas você precisa ser capaz de ... a) comprá-las b) encontrá-las (infelizmente não posso ajudá-lo lá, como nunca precisei procurar). Mas assim que você encontrar a pessoa certa, ele fará um balanço da situação atual, incluindo o site existente, e fará a ligação. É definitivamente importante corrigir os erros existentes e manter os clientes existentes. Certifique-se de que faz parte do plano dele daqui para frente. Outra coisa a considerar é que você realmente precisa encontrar alguém para transportar grande parte da sua empresa. Talvez em vez de olhar para apenas um empregado, olhar para ...
DXM
1
... um parceiro. Como parte do pacote de remuneração, ofereça uma parte da sua empresa (20 a 30%, talvez?). Se você for bem-sucedido, você ganha 20% menos, mas se não conseguir 20% a mais de 0, não fará nenhum bem. Esta ajuda força com incentivando o seu novo funcionário / parceiro para garantir que ele tem interesses semelhantes aos seus (ou seja, fazer o site ter sucesso, não apenas salário coleta semanal)
DXM
1
Pocto, algumas das opiniões apresentadas aqui não são universalmente aceitas. Por exemplo, ter sempre a mesma equipe de desenvolvimento simplifica muitas coisas, mas (como você descobriu) não pode garantir isso. Portanto, é necessária documentação e bom código para que outros possam obter um custo menor (mas ainda significativo). A "centelha de excitação não se esgotou" parece puro agismo para mim. Gerenciar o desenvolvimento de software é difícil - eu acho difícil distinguir bons programadores de maus.
Psr
@ psr: Vou pegar código bem escrito com boa estrutura / nomes e documentos de design de alto nível todos os dias sobre código ilegível com uma tonelada de ótimos documentos de design. E eu não pretendia ser ativista (sp?), Mas acredito que nossa profissão exige aprendizado e crescimento constantes e muito disso não pode ser feito apenas no trabalho, pois a tecnologia mudará sob você. No entanto, já vi muitas pessoas mais jovens e mais velhas que eu, que com o tempo parecem simplesmente dizer: "Eu aprendi o suficiente, agora vou apenas trabalhar". Eu também vi caras que são muito mais velhos que eu, mas eles fazem muito mais do que trabalhar 40 horas.
DXM
13

Essa é uma situação estranha e tenho certeza de que você não está contando a história toda. Eu trabalhei com muitas pessoas, algumas das quais saíram por várias razões (eu sendo sua colega), mas não tente nos dizer que tudo estava super bem e um dia apenas sem contato.

Mas isso não é problema. Pelo menos não mais; você deve aprender com seu erro e tentar não repeti-lo no futuro. E sim, estou fortemente sugerindo que 50% é sua culpa por ele ter saído.

Agora, sobre como resolver o problema atual:

  1. Tente entrar em contato com seu programador. Ele lê seu e-mail - ofereça-lhe dinheiro para documentação / correção dos bugs mais cruciais. Ninguém mais será capaz de consertar aqueles mais rápido que ele. Isso não funciona? Tente descobrir onde ele trabalha, entre em contato com essa empresa e conte sua história. Uma boa empresa não contratará uma pessoa que possa fazer o mesmo por ela. Pelo menos eles dirão para ele terminar a documentação para você.

    NOTA: você não quer essa pessoa de volta, apenas precisa de documentação finalizada

  2. Esteja preparado para que seu trabalho de um ano seja nulo. Ele pode ter fugido quando você pediu resultados e sabia que não poderia entregar. É possível que o código esteja cheio de hacks, implementação suja e baixa qualidade geral. Mesmo que ele volte - ele provavelmente não terá as habilidades nem tempo para fazer o que é certo.

  3. Procure outra pessoa. Ele precisa conhecer as mesmas tecnologias (linguagem de programação, frameworks, etc.). Se a qualidade do código for boa - ele poderá continuar, caso contrário, poderá refatorá-lo. Sim, a refatoração leva tempo sem a implementação de novos recursos, mas torna o código sustentável e é disso que você precisa. Além disso, uma pessoa que pode refatorar códigos incorretos é realmente um bom programador, se apegue a ela.

    NOTA: é bobagem pagar antecipadamente. Toda a idéia do salário é pagar pelo trabalho realizado. Não por uma promessa feita :)

  4. Faça listas. É do seu interesse ter um plano. Uma especificação técnica que, uma vez lida, permitirá ao novo programador entender o trabalho e os marcos. Tenha pelo menos três documentos importantes:

    • Descrição geral do projeto - um documento que permitirá que mesmo um não programador saiba sobre o que é o projeto.

    • Linha do tempo - que parte e quando você espera estar pronto? O que já está feito?

    • Especificação técnica - esta é longa. É o documento que um programador deseja ler. Separe-o em partes lógicas e descreva com o máximo de detalhes possível os recursos e o fluxo de trabalho dessa parte específica.

Trabalhar com empresas não é realmente tão bom; suas chances não vão melhorar. E você pagará em excesso 10 vezes se contratar apenas um programador. Se você tem uma equipe pequena, digamos de 3 a 5 pessoas, basta contratar um programador disposto a liderar a equipe. Ele fará um trabalho muito melhor gerenciando a equipe.

Magia criativa
fonte
15
Eu não recomendo entrar em contato com sua nova empresa e conversar com eles sobre ele. Verdade ou não, nos EUA, pelo menos, isso está criando o potencial para um processo por difamação.
precisa
3
Boa resposta, mas ... "A idéia do salário é pagar pelo trabalho realizado" .. em que país está? Acabamos de incluir um cara na nossa equipe, passar um mês nele e não modificar uma única linha de código (entre outros problemas). Pagamos um mês inteiro de salário, mas tivemos que soltá-lo porque não sabíamos quando ele seria produtivo. Na minha própria experiência (que se assemelha à de Dilbert), posso trabalhar e trabalhar sem parar ou passar o dia inteiro andando e conversando, e receberia exatamente o mesmo salário.
DXM 11/11
@ DXM, você está parcialmente certo: você receberá um salário por um mês, mesmo que seu trabalho não o mereça. Mas é um efeito da proteção do governo. É uma coisa boa, mas nem sempre é apenas. E como você disse - a pessoa preguiçosa não será capaz de manter sua posição por muito tempo. Mas concordo principalmente com a sua opinião.
Creative Magic
Eu tenho que -1 para entrar em contato com a nova empresa onde essa pessoa trabalha. Se eles perderem o emprego, podem processar você. Mais importante, qualquer documentação ou correção de código proveniente de uma pessoa amarga terá uma qualidade tão ruim que você provavelmente não a quer em primeiro lugar.
MrFox
8

Documentando o código posteriormente por outro programador? É apenas minha própria experiência e opinião dizer que você não deve seguir esse caminho.

Sem um conhecimento mais detalhado da qualidade dessa base de código, minha opinião é que sua melhor abordagem é contratar um novo programador para corrigir os erros, manter e possivelmente fazer as modificações necessárias.

Essa opinião tem o ponto principal de possíveis modificações (alteração ou adição), pois elas precisam de um requisito a ser cumprido. Isso significa que algum tipo de especificação de requisito deve ser escrito. Este é um documento.

O que leva a um ponto de manutenção de todo o projeto. Você não disse na sua pergunta se existem requisitos de programas atuais ou mesmo documentação funcional aproximada, mas é aí que você deve se concentrar agora.

Caso você não tenha nenhuma documentação, neste momento, é sua responsabilidade preencher esse vazio. Você não pode contratar um programador para fazer engenharia reversa de seu aplicativo e moldar milagrosamente a documentação a partir disso . Você deve "explicar" o que deseja que o programa faça (mesmo que isso signifique reexplicar o que já foi programado).

Quando você tiver esse documento escrito (seja na forma de requisitos ou especificações funcionais), obterá melhores resultados ao contratar um novo programador, pois poderá entregar a documentação e começar a trabalhar a partir daí.

Também existem muitos programas que produzem documentos fora do código-fonte, o que é uma boa maneira de produzir um esqueleto de explicar o código-fonte real (isso é na área de especificação técnica) que você só pode trabalhar no contexto de explicação dos aspectos técnicos do a funcionalidade especificada na especificação funcional, que especifica a funcionalidade dos requisitos especificados na especificação de requisitos.

Então, sim, minha opinião é contratar um programador para corrigir os erros. Depois que ele tiver corrigido os bugs que você concordou que deveriam ser corrigidos, você poderá discutir o aspecto da documentação como outro contrato. Com sorte, você contratou um programador que tem alguma experiência e pode contribuir para as etapas a serem seguidas a partir daí.

Raybarg
fonte
Essa é uma resposta MUITO abrangente e útil, Raybarg. Acho que o que você disse faz muito sentido - primeiro contratar outro programador para corrigir os erros existentes e depois discutir o aspecto da documentação como outro contrato. Espero até ter o programador a longo prazo, depois que ele corrigir o bug, para que isso funcione.
Pocto
@ Raybarg Sobre "depois de consertar o bug, comente as coisas": peço que você faça comentários enquanto corrige os bugs. Afinal, nessa fase, você reúne todo o conhecimento para documentar. Assim, por que não anotá-la imediatamente? Isso ajudará apenas a encontrar e corrigir mais erros mais rapidamente.
Marcel
@ Raybarg, você pode explicar mais sobre o que disse aqui sobre "programas que produzem documentos fora do código fonte". Verdade? Quais são esses programas e como eles funcionam?
Pocto
3

Aqui está como eu abordaria o problema:

  • Você tem o conhecimento do domínio. Você sabe quais recursos estão disponíveis no site agora, quais você gostaria de adicionar no futuro e provavelmente pode listar alguns bugs que também foram relatados pelos usuários.

  • Há essa pilha de códigos ali, deixada sozinha em um canto. Pode ser um bug, mas ainda agrega valor, já que o site possui usuários ativos. Uma reescrita completa seria, portanto, um erro da IMO.

A ponte entre sua experiência no domínio e o código foi quebrada quando o programador foi embora. Você precisa reconstruí-lo para que a base de código possa ser sincronizada com seus requisitos novamente e que futuras atualizações possam ser desenvolvidas.

O problema é que essa ponte não pode ser totalmente feita de documentação. O software é uma questão humana, tanto quanto técnica. Se você não explicar ao novo programador o que você espera em detalhes, ele ou ela terá dificuldade em deduzi-lo apenas a partir do código - ainda mais se o programador anterior escrever um código enigmático, mal documentado e mal testado. E se você não trabalhar em estreita colaboração com o novo programador para encontrar uma maneira automatizada e contínua de verificar se o código corresponde aos seus requisitos, ou seja, para tornar a ponte mais robusta, o problema está fadado a se repetir.

  • Sente-se regularmente (até virtualmente) com o novo programador para sessões de processamento de conhecimento de domínio. Durante cada uma dessas sessões, escreva as especificações de uma pequena parte do seu produto. Pode ser uma única página da web, pode ser um recurso. Torná-las especificações executáveis ​​(a la Behavior-Driven Development ) aumentará seu nível de confiança de que a ponte funciona, porque você pode executá-las continuamente e ser avisado quando houver algo errado. Isso também facilitará a vida do desenvolvedor.

    Após uma sessão, o desenvolvedor pode retornar ao seu trabalho e escrever testes de nível inferior que validam que o código atual está em conformidade com as especificações. Se não estiver em conformidade, o programador terá tudo o que precisa para corrigi-lo. Também é importante permanecer disponível para qualquer dúvida que ele possa ter.

  • Tente manter uma colaboração estreita e contínua entre você e os programadores do seu projeto e verifique se isso também é verdade entre eles. Isso é necessário se você deseja que a cultura funcional e técnica em torno do seu projeto viva, evitando problemas como o que você está tendo agora. É claro que isso requer não apenas mais de 2 desenvolvedores trabalhando em seu projeto, mas também que eles compartilhem entre si o conhecimento sobre tudo o que escrevem. Assim, um pode agir como um failover quando outro desaparecer. Técnicas como programação de pares e revisão de código são boas maneiras de conseguir isso.
guillaume31
fonte
1

Apenas adicionando ao que todos disseram,

Se você não conseguir que o programador antigo documente seu código nem por um preço, não espere que outra pessoa possa documentá-lo melhor. Então, aqui estão algumas opções sobre o que você pode fazer por enquanto para tornar o novo programador produtivo no primeiro dia.

  1. Obtenha um banco de dados de erros e comece a inserir todos os erros encontrados nele. Esta é a lista de tarefas pendentes do programador. Documente bem e coloque o máximo de detalhes possível (arquivo de origem / causa raiz, o que faz e o que deve fazer). Existem muitos softwares gratuitos de rastreamento de bugs, como o Bugzilla , Redmine e JIRA . Sinta-se livre para usar o que quiser.
  2. Crie uma folha de especificações para o seu projeto. Isso dará ao novo programador alguma orientação após a eliminação dos erros. Você pode conferir o guia de Joel sobre especificações de redação .
  3. Crie um cronograma ou uma linha do tempo para o seu projeto. Eles devem ter prazos e marcos nos quais são pagos pelo trabalho que renderam, em vez de pagar antecipadamente.

Agora que está fora do caminho, você pode começar a procurar um programador. E, como disse a Creative Magic, terceirizar o trabalho para as empresas pode levar a desastres ou aumentar o preço para o infinito e além.

Desta vez, comece a planejar adequadamente o fator de barramento ao contratar programadores. As pessoas vão e vêm e não há nada que você possa fazer sobre isso, então prepare-se para o pior dessa vez, convocando dois programadores ou, como Uooo disse, convide um programador e um testador.

Agora, uma vez que os programadores estão na sua loja, você pode começar a pedir que eles documentem seu código daqui para frente, em vez de pedir que documentem o código antigo, na verdade, esqueça isso.

Outras coisas a considerar ao adquirir um novo programador, verifique se ele conhece o controle de origem e os testes automatizados. Além disso, tente obter o máximo possível de verificações no teste Joel com a ajuda deles, você só pode fazer isso sozinho.

Maru
fonte
0

Portanto, seu único programador foi atropelado por um ônibus e você precisa de substituição agora.

Você pode tentar processar seu ex-programador, com base no seu contrato, ou descobrir o que há de errado com ele. Supondo que ele não volte, isso não ajudará.

  • Você deseja finalizar seu produto, procure um programador com experiência em manter e desenvolver sistemas existentes. Eu não focaria em dizer ao seu programador o que fazer em que ordem. Certifique-se de contratar alguém profissional, que grave documentação e testes de unidade sempre que necessário.
  • Do seu lado, você pode garantir que o novo programador tenha tudo o que é necessário para seu trabalho : especificações de requisitos, uma poderosa máquina de trabalho e assim por diante. Você quer um programador profissional, portanto, forneça a ele um ambiente de trabalho profissional.

Além disso, pense em contratar um segundo desenvolvedor para facilitar esse tipo de situações difíceis no futuro. Um testador também seria útil para garantir a qualidade.

Uooo
fonte
Muito obrigado, Uooo, por suas respostas. Eu particularmente gosto da parte de contratar um segundo desenvolvedor para facilitar esse tipo de situação no futuro. Mas qual seria o trabalho do segundo desenvolvedor?
Pocto
@pocto Manutenção e desenvolvimento de seu software. Como está escrito: Eu não focaria em dizer ao seu programador o que fazer em que ordem . Quando um bug precisa ser corrigido, isso deve ser feito. Quando um novo recurso e testes de unidade precisam ser implementados, a documentação precisa ser escrita, isso deve ser feito. Você não contrata um "Bugfixer" ou um "Gravador de documentação" ou um "Implementador de recursos", contrata um desenvolvedor de software. E o trabalho dele é fazer tudo isso.
Uooo 11/10