Como você decide se deve fazer um projeto?

11

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.

J Lundberg
fonte
10
Esta é uma decisão difícil? Você não gosta das especificações e não acredita nelas. Por que você gostaria de levar este projeto?
Vitor Py
2
Este é um exemplo real que eu tenho agora, mas achei que seria útil, em geral, abrir uma discussão sobre como você escolhe projetos, porque não há perguntas semelhantes.
precisa
@J Lundberg: Atualizei minha resposta em resposta à sua atualização.
FrustratedWithFormsDesigner
3
Se ele não conhece nenhuma programação, por que ele está insistindo no VB.NET? Ele obviamente não estará trabalhando no projeto com você. Não há razão para usá-lo em C # no .NET. Você pode compilar o VB.NET existente e usá-lo como uma biblioteca no seu código C # ou vice-versa.
Jonathan Henson
"precisa de ajuda" - isso é pago ou não?

Respostas:

11

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

Jonathan Henson
fonte
5
+1 em "nunca trabalhe para a família". A menos que nenhuma das partes tenha investido muito nela e a veja como pura diversão, e mesmo assim, deve-se tomar cuidado.
Ethel Evans
11

Como desenvolvedores experientes tomam a decisão de aceitar ou não o projeto?

Preciso do emprego? Nesse caso, eu "pego" o projeto.

Quais são algumas boas métricas para facilitar a decisão?

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.

S.Lott
fonte
3
+1: você acha que haveria mais do que isso, mas é basicamente o que se resume a isso toda vez.
Ryan Hayes
@ S.Lott- Tenho certeza de que você frequentemente tem a oportunidade de trabalhar em vários projetos. Parece improvável que você esteja em situações do tipo "faça ou morra" com muita frequência. Eu posso estar assumindo demais, mas isso parece um pouco complicado, já que alguém com sua experiência certamente optou por recusar um projeto aqui e ali e provavelmente também aceitou projetos antes, quando você não precisava sentido "sem dinheiro".
Morgan Herlocker
1
@ironcode: "Eu posso estar assumindo demais". Verdade. Nunca tive a oportunidade de recusar um projeto devido ao estresse.
21711 S.Lott
@ S.Lott Quero dizer estresse no sentido de que eu já tenho um emprego e fazer algo assim pode me deixar com tempo zero para minha família.
precisa
@J Lundberg: Atualize sua pergunta para incluir todos os fatos.
21711 S.Lott
5

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).

FrustratedWithFormsDesigner
fonte
3
A friend of my family

Pessoalmente, se esta frase estiver envolvida, não aceito o projeto.


fonte
2

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ê.

user281377
fonte
1

Faço programação freelancer há mais de vinte anos. Para que um projeto seja realmente bem-sucedido, é necessário pelo menos o seguinte:

  1. Alguém que conhece as tecnologias de programação, software e hardware usadas para implantação - ou tecnologias semelhantes o suficiente para aprender as tecnologias de implantação muito rapidamente
  2. Alguém que conhece o domínio do problema e é capaz e disposto a traduzir isso em especificações que o programador pode usar. (Se o programador também for o especialista em domínio e o projeto for simples o suficiente, as especificações poderão estar na cabeça ou em notas informais.)
  3. Alguém que seja capaz, disposto e experiente em gerenciar bem as tarefas do projeto, a linha do tempo, etc., e conheça os tipos de armadilhas que você pode enfrentar com coisas como estimar e como evitá-las.
  4. Alguém para gerenciar as comunicações e os relacionamentos entre todas as partes interessadas no projeto, incluindo o (s) programador (es) e cliente (s)
  5. Pessoas de ambos os lados, consultor e cliente, com experiência em manter sólidos os assuntos comerciais em andamento, incluindo contratos e dinheiro. Se você não tiver essa experiência, poderá conviver com um consultor experiente até o momento.
  6. Um relacionamento de negócios onde, se você precisar tomar uma decisão comercial difícil, não terá problemas fora do trabalho
  7. Uma equipe grande o suficiente, com a combinação certa de conhecimentos, ferramentas e recursos, para fornecer um produto de qualidade dentro do cronograma necessário

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.

Bob Murphy
fonte
0

Deseja trabalhar com as outras pessoas envolvidas?

O projeto é apenas uma desculpa para conhecer e se associar com as pessoas.

bmike
fonte
Eu gosto desse ponto de vista. Deveríamos trabalhar juntos em um projeto.
Jonathan Henson
Isso me serviu muito bem. Os detalhes do projeto podem mudar como areias em uma tempestade. As pessoas ainda podem surpreendê-lo, mas mudam mais lentamente.
bmike
0

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 .

JB King
fonte