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?
fonte
Respostas:
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.
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.
fonte
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.
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.
fonte
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
fonte
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.
fonte