Como determinar o número de programadores necessários para um projeto

18

Como você sabe quantos programadores um projeto específico precisa para ter sucesso?

A empresa em que trabalho atende a pedidos de empresas clientes. Escrevemos um sistema interno de gerenciamento de armazém que lida com gerenciamento de estoque baseado em localização, processamento de pedidos, geração de conhecimento de embarque, faturamento, auditoria e relatórios de frete (provavelmente 50 relatórios). Ele também possui funções de leitura de código de barras e um portal do cliente, além de dezenas de outros recursos menores. Ele também inclui um relógio de ponto completo para funcionários. Ele se integra ao Quickbooks, UPS e FedEx. Ele lida com o trabalho para pelo menos 50 clientes, todos com diferenças um pouco em sua funcionalidade. Por exemplo, importamos pedidos de arquivos que os clientes enviam, mas cada cliente envia um formato de arquivo diferente (csv, excel, arquivo simples e serviços da web), para que tenhamos mais de uma dúzia de configurações de métodos de conversão de pedidos. As exportações são a mesma história.

O projeto é complexo e cresce em complexidade todos os dias, com mais de um quarto de milhão de linhas de código. São cerca de 250.000 linhas de código VB.NET, 6.200 linhas de código Ruby e talvez 5.000 linhas de PHP. Ele também possui um banco de dados MySQL com cerca de 200 tabelas.

Devido aos requisitos em constante mudança e às diferentes necessidades de dezenas de clientes, o código em si varia muito na qualidade, do código extremamente ruim ao código relativamente bom.

Atualmente, este projeto tem apenas um programador - eu mesmo. Atualmente, também presto todo o suporte ao produto para nossa empresa de 75 pessoas ou mais. Isso inclui solucionar problemas e configurar novos clientes e quaisquer novos recursos necessários. Além disso, estamos tentando reescrever tudo para ser 100% baseado em Ruby on Rails. E gostaríamos de comercializar todo o sistema no próximo ano para ser usado por outras empresas.

Atualmente, temos apenas a mim mesmo como programador, mas não acredito que seja suficiente. Alguém tem alguma recomendação para quantos programadores um projeto dessa magnitude deve ter ou como devemos determinar a resposta a essa pergunta? Especialmente considerando o fato de que a gerência gostaria que o produto fosse de qualidade comercial até o próximo ano?

kstevens715
fonte
11
Eu estava esperando por uma piada sobre lâmpadas :(
Oded
lol ... pesquise no google e provavelmente encontrará alguns. Quando eu estava pesquisando no Google, eu encontrei um monte desses acidentalmente, lol.
precisa saber é o seguinte
8
Se os requisitos continuarem mudando, nenhum número de mãos extras enviará este produto e sairá da porta. Você precisa definir primeiro os requisitos.
Oded
Isso é definitivamente verdade no meu caso. Eu sei que a pergunta que estou fazendo provavelmente não é muito responsável. Mas se eu pudesse comparar em quais tipos de projetos as outras pessoas estão trabalhando e quantas pessoas estão envolvidas em tempo integral nesses projetos, talvez isso ajude.
precisa saber é o seguinte
Esta questão parece ser muito semelhante a esta pergunta . Talvez você também encontre algumas respostas úteis.
S.Robins

Respostas:

3

Eu diria pelo menos 5 pessoas. Um para teste, outro para especificações, suporte e documentação e 3devs. Há muitas coisas a serem testadas no seu caso, portanto, um testador dedicado a 50% não deve ser irracional. Uma pessoa anotando os requisitos e tendo o suporte ao cliente configurando sua infra-estrutura para testes etc. devem estar lá. Sinto que três desenvolvedores são bastante baixos para um projeto como este. Um grande back-end integrado a muitos sistemas de terceiros e um front-end completo com muitos relatórios personalizados. Eu gostaria de ter.

  1. Um bom desenvolvedor de back-end (camada de persistência / negócios)
  2. Um bom desenvolvedor intermediário / front-end que cria classes de ação e JavaScript CSS Design.
  3. Um bom desenvolvedor de arquitetura interino, mas também cria código em todas as camadas com a ajuda de especialistas das outras duas. Esse desenvolvedor também pode fazer coisas como configurar a ramificação Maven Jenkins Git da estrutura JUnit e assim por diante.

O que acontece se você sair, ficar doente, tirar férias etc. Uma pessoa por projeto nunca é inteligente. Também não é bom ficar sozinho, pois você não evolui profissionalmente sem colegas de trabalho. Eu trabalho muitas vezes sozinho, configurando novas arquiteturas e assim por diante, geralmente em equipes de, digamos, 5 desenvolvedores, mas nunca evoluo tanto quanto quando digo a um colega de trabalho que permite montar isso juntos e nos trancamos uma semana conversando, discutindo e escolhendo estruturas. A programação em pares é extremamente flexível e não pode ser feita com um desenvolvedor, e quem fará análises de código se você não tiver certeza? Se você ficar preso, quem o ajudará? Eu só realizaria um projeto de uma pessoa se fizesse parte de um escopo maior e pudesse obter recursos especializados, se necessário.

Farmor
fonte
1
Tirei umas férias de dois dias no verão passado e alguém teve que invadir minha casa para pegar meu laptop ... sim. Eu sempre falo sobre trabalhar no vácuo porque não tenho muitos outros desenvolvedores para interagir. E morando em uma cidade pequena, não há nenhum grupo de usuários ou algo para participar. Nós (eu?) Começamos a escrever código de teste recentemente, na verdade, quando começamos a transição para o Rails. Eu já não consigo imaginar o desenvolvimento sem testes. Adoro a ideia de ter um testador dedicado a 50%.
precisa saber é o seguinte
1
Pelo menos um desenvolvedor deve ser um sepcialista de banco de dados.
HLGEM
8

Bem-vindo ao mundo muitas vezes difícil dos recursos !

O problema não é tamanho do projeto x tamanho da equipe. Esse é um equívoco muito comum que muitas vezes oculta outros problemas que geralmente estão relacionados ao gerenciamento. A questão é toda sobre o escopo . Você precisa decidir o que pode alcançar com seus recursos atuais - também conhecido como você. Em seguida, você precisa decidir se sua capacidade de lidar com a carga de trabalho é suficiente para lidar com a tarefa dentro dos prazos alocados. Portanto, as necessidades do seu projeto devem ser identificadas e com escopo definido.

  • Deseja gastar tempo limpando a base de código existente?
  • Este é um requisito fundamental para garantir o sucesso do projeto?
  • Você tem novos recursos para adicionar ao sistema? Quais são os aspectos mais importantes do seu projeto que devem ser tratados e quais são os itens menores que estão na lista de desejos?
  • Algum dos requisitos pode ser abandonado ou pelo menos adiado até a próxima versão de manutenção?

Quando você tem uma idéia do escopo de seus requisitos, pode determinar com mais facilidade a carga de trabalho necessária para obter um resultado dentro de um determinado período de tempo. Se é provável que seus recursos sejam superutilizados, você precisará de mais funcionários. Se é provável que seus recursos sejam subutilizados, você poderá se aproximar do prazo final ou aumentar o escopo do seu projeto.

Se o seu instinto lhe disser que você não tem pessoal suficiente para gerenciar o projeto, você pode estar correto, mas precisa entender por que é que você está dizendo isso. Não basta apenas ter um pressentimento. Em vez disso, você precisa ser capaz de examinar cientificamente o problema, a fim de fornecer provas para apoiar seus instintos, e precisa estar preparado para enfrentar a possibilidade de que seus instintos possam estar errados. Depois de reunir suas evidências - ou seja: escopo do projeto, você realmente precisa sentar-se com sua gerência e defender a redução do escopo do projeto ou aumentar os recursos disponíveis para garantir o sucesso do projeto, com base na evidência em questão.

S.Robins
fonte
O escopo parece ser a reescrita completa de um sistema SLOC de 250K em algo com qualidade de embalagem retrátil (ou pelo menos qualidade de material de consultoria). A vantagem é que a coleta de requisitos e o design geral provavelmente já estão concluídos. Isso não é pequeno, e não é algo para um desenvolvedor que tem outras responsabilidades.
precisa saber é o seguinte
@ DavidThornley Isso depende muito do escopo dos deveres dos desenvolvedores, dos prazos, da carga de trabalho e de como a empresa já está comercializando o produto. Eu já vi muitos projetos complexos sendo trabalhados por uma equipe de 1-2 pessoas que tiveram muito sucesso porque foram bem gerenciados ... e muitos outros que falharam. Concordo, no entanto, que a tarefa é grande e que, por si só, já é um sinal de alerta em termos de recursos. O problema é que não vale a pena contratar muitas pessoas sem ter feito um pouco da lição de casa primeiro, o que é realmente o ponto da minha resposta. :-)
S.Robins
O escopo é algo que venho trazendo bastante nos últimos meses. 20% do projeto tem 80% do impacto na empresa. É nisso que estou tentando me concentrar. Infelizmente, os 80% que têm 20% do impacto é o que é empurrado para a frente da linha, enquanto tentamos lidar com "emergências", lançando mais código e recursos nele. Certa vez, solicitei um congelamento de recursos para que eu pudesse corrigir alguns problemas principais. Eles me deram 5 dias. Escusado será dizer que são 5 anos depois e muitas das questões centrais permanecem. Obrigado pelo seu post, porém, muito útil.
precisa saber é o seguinte
6

O sucesso do produto / projeto dependerá do comprometimento da empresa que pagou por ele. Se eles vão contratar mais programadores / equipe de suporte, haverá uma diminuição inerente da produtividade de um programador, que sabe treinar, ensinar, gerenciar, etc. não que seja uma coisa ruim. haverá uma redução antes que qualquer aumento seja realizado. também há a necessidade de analistas de negócios, gerentes, vendas e suporte ao produto, uma vez disponível comercialmente.

Hospedar um aplicativo comercial é muito mais do que apenas criar uma plataforma sólida. há requisitos de suporte, suporte técnico, correção de bugs, treinamento de usuários, etc.

você tem algum bom procedimento de análise / especificação / estimativa em vigor? caso contrário, comece agora , você pode fazer isso sozinho.

você está trabalhando bem agora? Nesse caso, esteja preparado para trabalhar duas vezes mais, caso se espere que você gerencie esse processo e continue desenvolvendo (aumento devido?) ..

e aqui está a resposta da minha experiência anterior em uma situação semelhante nos preços da região sul da Califórnia:

5-6 pessoas && ~ 500k

  • 1 Desenvolvedor / gerente líder de todos os chapéus (~ 100k - 120k)

  • 2 programadores Sr. (muito capazes, autodirigidos) com boa compreensão e habilidades de banco de dados (2x ~ 80 - 100k)

  • 1 Gerente de projeto para fazer interface com o gerenciamento ($$?) Essa pessoa também deve ser capaz de entender as necessidades do aplicativo e comunicar essas necessidades diretamente aos programadores

  • 1? Desenvolvedor (HTML / UI)? com habilidades em javascript (eu odeio programar UI / código de marcação)

  • 1? Pessoa do banco de dados? no entanto, a maioria dos bons programadores não tem problemas para criar estruturas de dados escaláveis; no entanto, se você se interessar por questões de otimização, precisará pelo menos ter um consultor

hanzolo
fonte
1
+1 Gostei muito da sua repartição! OT completo, os salários que você cita me parece deprimente, já que pensei em trabalhar no SoCal, mas eles não são muito mais altos que a Europa Ocidental, se o pessoal da Sr é como MSc + 5 anos trabalhando.
Farmor
1
Concordo, exceto que também recomendo a um programador de nível básico que assuma as tarefas de suporte (configuração do cliente e aprimoramentos menores) e faça um trabalho geral. A combinação de algumas funções pode funcionar dependendo dos níveis de habilidade envolvidos.
Jfrankcarr
Uau, você pode obter desenvolvedores seniores no So Cal por 80-100K? Isso parece bastante baixo, dado o custo de vida. Talvez tenhamos idéias diferentes de 'sênior'; os desenvolvedores seniores que conheço em Dallas estão ficando consideravelmente mais do que isso.
kevin Cline
Provavelmente também temos idéias diferentes de que sabor é bom. Contratei 2 .Net Sr., que eram jovens e talentosos, com muita experiência nos últimos 10 anos, dispostos a trabalhar dentro desse intervalo. Usamos o Microsoft Stack mais recente (TFS, .NET 4, C #, EF 4.1, MSSQL 2008 R2, blá, blá ..) e não tivemos nenhum problema em fornecer um bom código limpo. Éramos uma equipe pequena, e o problema que encontramos ao tentar contratar alguns senhores foi que eles eram resistentes ao aprendizado e tinham muitas opiniões e carregavam muita bagagem (também não tínhamos muita janela de contratação)
hanzolo 31/01
2

Um programador em uma grande base de código com toda a responsabilidade de configurar, testar, comunicar, dar suporte, documentar e corrigir bugs não terá muito tempo para escrever novo código ou adicionar recursos (ou mesmo refatorar código antigo).

Divida sua semana pela porcentagem dessas tarefas obrigatórias que não expandem os negócios e você ficará surpreso com a rapidez com que o gerenciamento contrata ajuda extra.

Projetos grandes têm uma certa quantidade de sobrecarga associada que não desaparece (especialmente se implementar / testar com novos clientes o tempo todo como você parece). Esta é a razão pela qual você tem rotações de suporte e suporte em geral; para que alguns membros da equipe tenham tempo para trabalhar em novos recursos.

Você também pode pesquisar livros sobre estimativa de software. Esses livros podem não parecer muito a dizer, mas contêm estudos de caso interessantes de uma variedade de campos e apoiam suas alegações com evidências.

Brian
fonte
95% do meu tempo é gasto em uma dessas tarefas. Eu gosto da ideia de rotações de apoio. Isso pode ser algo a considerar se contratarmos alguém com quem eu possa rodar com gargalhadas. Hoje, por exemplo, eu estava começando a trabalhar em algum código básico e fui interrompido porque alguém precisava de uma bateria.
precisa saber é o seguinte
@ kstevens715 - Parece que você precisa de ajuda, mesmo que seja técnico de alguém. Suponho que você esteja recebendo pelo menos uma renda de 5 dígitos, se me dissessem para comprar uma bateria, custaria cerca de US $ 10 para meu empregador (35% do meu salário por hora).
Ramhound 31/01