Eu sou um desenvolvedor relativamente novo. Profissionalmente, tenho programado em C # por dois anos como estagiário e 6 meses como desenvolvedor júnior. Um amigo da minha família precisa de ajuda com um projeto escrito em VB.net. Eu nunca usei o VB.net, então estou um pouco preocupado lá.
Mas, a verdadeira questão vem do fato de que, depois de examinar os documentos do projeto, tenho a sensação de que nada de bom virá dele. Tenho a sensação de que isso causará mais estresse do que gostaria de ter na minha vida atualmente.
Como desenvolvedores experientes tomam a decisão de aceitar ou não o projeto? Quais são algumas boas métricas para facilitar a decisão?
Editar
Na verdade, isso parece um ERP muito grande no qual ele gostaria que eu trabalhasse e eu não acredito que ele saiba alguma coisa sobre programação, então eu não acho que o fato de eu ser muito júnior tenha sequer passado pela cabeça dele.
Respostas:
Da minha experiência: nunca trabalhe com dinheiro para familiares com quem você precisa passar férias ou amigos que deseja manter. Uma das partes envolvidas sempre sentirá que a outra parte está cobrando muito ou não está pagando o suficiente e que fez um favor à outra parte. Quando o prazo chega, eles geralmente são menos compreensivos e geralmente são idiotas durante o teste beta, porque se você tiver um bug - o que você deseja - eles não entenderão. É sempre uma bagunça.
Eu costumava ser idealista e pensar que todo mundo só precisava de melhores habilidades com as pessoas, mas não, é assim que as coisas são. Pessoas que não entendem o processo de desenvolvimento de software SEMPRE surtarão quando algo não atender às suas expectativas no primeiro momento em que o virem. Isso ocorre tanto nos negócios com gerentes de projeto quanto nos membros da família. O problema é que você precisa manter um relacionamento com a família e os amigos, e as coisas nunca são estritamente comerciais.
Dito isto, se o projeto vai aumentar seus níveis de estresse e você não precisa do dinheiro, por que aceitá-lo? Especialmente se você já tem um trabalho de desenvolvimento de software no qual deseja se destacar, eu diria que você deve dedicar tanto do seu esforço para ser excelente em seu trabalho diário, porque é aí que você será recompensado por um trabalho de qualidade.
Se você precisa do dinheiro e está de acordo com a possível perda de um amigo da família, aceite o trabalho. A pior coisa que poderia acontecer - além das coisas que mencionei antes - é que você aprende o que é e não é bom, ou aprende que você morde mais do que pode mastigar, fazendo com que o projeto seja ruim. dor de cabeça devido à sua inexperiência. Fiz isso duas vezes com o meu trabalho atual - felizmente tenho empregadores muito compreensivos. Embora fosse uma miséria enquanto eu estava me sentindo morto na água, eu emergi um programador muito melhor com um conjunto de habilidades muito mais amplo do que antes.
Não há cálculo para determinar quais empregos deixar e manter, apenas a experiência e a sua personalidade. Você só precisa decidir o que valoriza e persegui-lo. Coisas a considerar:
É um projeto em que gostarei de trabalhar? A equipe é uma equipe com a qual gostarei de trabalhar?
Que tipo de pagamento eles estarão oferecendo? Se não houver, que desenvolvimento profissional estarei recebendo? Eles oferecem algum tipo de risco compartilhado (por exemplo, opções de ações, porcentagem de lucros)? Este é um grande persuasor para mim.
De qualquer forma, esses são apenas princípios a serem usados na sua tomada de decisão. Tudo depende do que você valoriza. Por exemplo, eu valorizo os desafios intelectuais e o tempo com minha família, por isso geralmente coloco uma alta prioridade no que é o projeto e nas habilidades que aprenderei ao fazê-lo. No entanto, também certifico-me de que estou trabalhando apenas 2 ou 3 noites por semana para poder passar um tempo com minha esposa e filhos, pois já trabalho o dia todo. Eu ajusto o prazo para atender a essa demanda. Se eles não gostam disso, então eu não aceito o emprego.
Faça o que fizer, certifique-se de indicar claramente o que você fará ou não, e certifique-se de que elas expressem claramente suas expectativas antes de você aceitar o trabalho. A pior coisa que pode acontecer é que o cliente tenha expectativas não declaradas e que você subestimou essas expectativas.
PS: Eu realmente gostaria de ter lido este artigo no início da minha carreira. Isso se aplica ao meu último parágrafo. http://www.joelonsoftware.com/articles/fog0000000356.html
fonte
Preciso do emprego? Nesse caso, eu "pego" o projeto.
Quantas opções eu tenho? Mais de 1? Eu posso escolher entre as alternativas.
Apenas 1? Bem. É isso aí então.
A questão do "estresse na minha vida" é discutível; falha em assumir um projeto significa falha em manter o emprego; que tem consequências desastrosas.
Se você tem o tipo de liberdade financeira em que o "estresse" é um fator decisivo, isso é realmente ótimo.
fonte
O que você ganhará com este projeto? Dinheiro? Experiência? Algo mais?
Dinheiro: É de um membro da família (eu tento não fazer negócios com a família, mas é uma discussão totalmente diferente), é pequeno (para que você faça parecer), você é razoavelmente júnior, então não espere muito dinheiro com isso (com base nas minhas experiências).
Experiência: você começa a aprender um novo idioma! Isso pode ser valioso no futuro, pode oferecer uma pequena vantagem sobre os desenvolvedores .NET que conhecem apenas C #.
Mas seu instinto diz que esse projeto será ruim . Por que é que? Parece que você poderia pelo menos obter alguma experiência com isso.
A maioria dos contratados começaria analisando quanto dinheiro eles conseguiriam para decidir contratar um projeto. Idealmente, projetos mais difíceis levam a mais dinheiro. Se isso for difícil, deve pagar bem, mas não sei os detalhes para saber se você realmente será bem pago ...
Em resposta aos detalhes da sua atualização: Diga a ele que isso está muito além do escopo de um único programador júnior. Você poderá fazer alguns minutos de pesquisa e verificar se existe um produto existente que possa fazer o que ele deseja e se a página "Recursos" fala sobre personalização / plugins / extensibilidade. Ele também pode querer conversar com uma loja de software personalizado se não houver nenhum produto existente ou se for necessário fazer um extenso trabalho de programação de plug-ins. Não há nada errado em admitir que um projeto é muito grande para você lidar - é muito melhor do que assumir e falhar completamente (especialmente se for um membro da família - as funções da família podem ser difíceis e desgastantes por anos).
fonte
Pessoalmente, se esta frase estiver envolvida, não aceito o projeto.
fonte
Como freelancer, só aceito projetos em que estou confiante em poder concluí-lo a tempo, no orçamento e na boa qualidade. Recusar um projeto não significa desemprego - pelo menos não para sempre. Aceitar um projeto que você não pode entregar custa tudo - dinheiro, reputação, saúde.
Às vezes é um pouco mais difícil quando um bom cliente precisa de ajuda para um novo projeto que simplesmente não se encaixa nas minhas habilidades; mas, mesmo assim, é melhor ser honesto e deixar que outra pessoa o faça.
No seu caso, você pode e deve negar o projeto - você não tem experiência suficiente, não conhece o idioma, é grande demais para você.
fonte
Faço programação freelancer há mais de vinte anos. Para que um projeto seja realmente bem-sucedido, é necessário pelo menos o seguinte:
Você descreve um amigo da família que não sabe nada sobre programação, que deseja que você - um programador inexperiente - construa um sistema ERP usando uma tecnologia que você não conhece.
Parece-me que essa situação definitivamente perde os números 1, 3, 6 e 7, e talvez todos eles. Como Adam diz no Mythbusters, "Esta é uma receita para o desastre".
Caramba, eu não tocaria nessa com uma vara de três metros. Eu poderia continuar falando sobre as outras bandeiras vermelhas que vejo aqui, mas, basicamente, meu conselho para você é seguir com seu instinto, porque você está certo: "nada realmente bom virá disso".
Como esse é um amigo da família, se eu fosse você, diria: "Você tem um ótimo projeto e precisa de alguém realmente bom, e eu sou inexperiente demais para fornecer os resultados que você deveria ter" e deixe assim.
Também descobri que quando você tem um cliente que é um problema em uma área, é provável que ele seja um problema em outras. Um cliente em potencial que até consideraria ter um sistema ERP projetado e implementado por um programador júnior é tão ignorante que pode ser um perigo para si e para os outros, ou ridiculamente barato, e qualquer um deles os colocaria na minha lista de "ficar longe" .
FWIW, como consultora / freelancer, acabo preenchendo os papéis do meu lado, com conselhos de minha esposa. Nós descobrimos o que todos esses itens são ao ver os projetos falharem devido à falta deles - às vezes, são nossos próprios projetos. E, mesmo depois de vinte anos, e apesar de verificar esses critérios, continuo com um projeto ocasional que não dá certo - esse risco sempre faz parte dos negócios. Agora, só garanto que os projetos não falhem por causa de algo que eu fiz de errado e que os contratos sejam estruturados para que eu seja pago se o outro lado estragar.
fonte
Deseja trabalhar com as outras pessoas envolvidas?
O projeto é apenas uma desculpa para conhecer e se associar com as pessoas.
fonte
Minha opinião pessoal seria explorar um pouco o que ele está querendo, que linha do tempo, que tipo de custos ele está esperando etc. Se esse é realmente um ERP grande, a ajuda pode durar anos e ficar feia, possivelmente. Waste Management vs SAP seria um exemplo de quão caro isso poderia custar se você realmente quisesse dizer grande como nos orçamentos de projetos de 9 dígitos.
Meu objetivo ao explorar é traçar uma linha na areia, para que fique claro por que estou fazendo as perguntas e o que pretendo ter como resultado. "Quão viável eu vejo esse ser?" é a pergunta que eu teria ao questionar a metodologia, o orçamento e os cronogramas antecipadamente e, em seguida, fazer uma pequena pesquisa para ver se as coisas parecem ou não estar no mesmo nível ou isso é algo que pode acabar em algum site de humor em TI como The Daily WTF .
fonte