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.
Respostas:
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
fonte
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:
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
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.
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 :)
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.
fonte
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í.
fonte
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.
fonte
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.
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.
fonte
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á.
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.
fonte