Quais papeis fundamentais em um projeto de software?

Estou postando este tópico com o objetivo de descobrir a base de profissionais para um projeto
ter sucesso. Em um equipe, quais são os papéis necessários?

-Gerente de Projeto - aloca recursos, ajusta as prioridades, coordena interações com clientes e usuários e geralmente mantém a equipe do projeto concentrada na meta certa. O gerente de projeto também estabelece um conjunto de práticas que garantem a integridade e a qualidade dos artefatos do projeto.

-Arquiteto de Software - foco de resolver problemas relacionados ao negócio da empresa com uma visão estratégica.
Interação sistêmica
Arquitetos lidam com fronteiras, interfaces e interações sistêmicas.

Design
O arquiteto faz várias escolhas de design de alto nível (e algumas vezes de baixo nível).
Além disso, o arquiteto deve ditar os vários tipos de padrões, incluindo padrões de código, ferramentas e plataformas. A razão para essas medidas é mais para ajudar a atingir o objetivo estratégico do que arbitrariamente restringir as escolhas feitas pelos desenvolvedores.

-Analista - é a atividade que tem como finalidade a realização de estudos de processos a fim de encontrar o melhor caminho racional para que a informação possa ser processada.
O analista de sistemas ou atualmente mais conhecido como sistematizador de informações, é aquele que tem como finalidade realizar estudos de processos computacionais para encontrar o melhor e mais racional caminho para que a informação virtual possa ser processada. Este profissional estuda os diversos sistemas existentes entre hardwares (equipamento) e softwares (programas) e o usuário final, incluindo seus comportamentos e aplicações

-Teste
O teste do software é a investigação do software a fim de fornecer informações sobre sua qualidade em relação ao contexto em que ele deve operar. Isso inclui o processo de utilizar o produto para encontrar seus defeitos.

-Algo mais?

Fiz uma busca rapida sobre essas funções. Mas quais as funções básicas para formação de uma boa equipe, pelo que vi, o gerente, arquiteto e analista compartilham conhecimento. Qual a real necessidade? Será q um projeto precisa conter todas esses papéis??

DBA & Arquiteto de Banco de Dados

E o programador?

AD (muito importante caso tenha varios projetos de equipes diferentes)
Web Designer (caso projetos Web)

Programador pra que né…

Ok, Sei que programadores também precisa, é o peão da obra.
Um DBA não acredito ser necessário, logo que será um único
projeto.

É que estou montando uma equipe para desenvolver um ERP
e estou estudando o gerenciamento da equipe, para isso levantei
esta pergunta no GUJ.

Quais seriam na opnião de vcs os papéis necessários?

[quote]Um DBA não acredito ser necessário, logo que será um único
projeto. [/quote]

Eu discordo totalmente, sem uma estrutura de banco de dados bem adequada o projeto fica péssimo, ja peguei
banco de dados com trocentas tabelas que nao eram necessarias que fazia vinculação demasiada apenas pra dificultar
a interação com o software.

Um banco bem estruturado vai dar menos dor de cabeça no futuro, falo isso pq a gente pensa que no começo do projeto
que ele vai ser pequeno, e dpois acaba crescendo, e vai ficando gambiarra atras de gambiarra no banco.

Uma dica, eu nao sou DBA trabalho com programação java e analise, só tive dor de cabeça com softwares grandes com
banco mal estruturado.

Eu penso da seguinte forma, o banco é coração, e o software é o cerebro, pois ele que vai conter toda informação e o software
que vai manipular elas.

Gerentes as vezes atrapalham, o ideal é o time ser auto gerenciavel. A nao ser que o gerente seja uma pessoa que nao interfira diretamente no dia a dia e só cuide da parte burocratica.

Arquitetos puros tambem as vezes atrapalha, o ideal é todos os desenvolvedores mais experientes contribuirem na arquitetura, por projeto e sem ditaduras.

Se vc pensa assim não precisa saber os papeis… não lhe serão uteis.

[quote=LucianoTulio]Estou postando este tópico com o objetivo de descobrir a base de profissionais para um projeto
ter sucesso. Em um equipe, quais são os papéis necessários?
[/quote]

Papeis necessários. Ora está ai uma coisa que nunca havia pensado … na “necessidade” dos papeis.

Vc ficaria melhor servido perguntando as responsabilidades envolvidas.

Escola clássica

Responsabilidade Perante os Stakholders - ou seja, se o produto for mal aceite pelos clientes quem roda ? : Gerente de Produto
Responsabilidade por alcançar objetivos num determinado tempo com um determinado orçamento ?: Gerente de Projeto. Um produto pode ter mais de um projeto e os projetos podem ser paralelos.
Responsabilidade por levantar os requisitos e documentar os requisitos : Analista De Negocio ( é subalterno do Gerente de Produto)
Responsabilidade por traduzir corretamente os conceitos de negocio para conceitos de software : Analista Funcional
Responsabilidade por ter a visão do todo, organizar os elementos de software e atender os requisitos não funcionais: Arquiteto.
Responsabilidade por digitar o código da melhor maneia possível, obedecendo a um design : Programador
Responsabilidade de verificar que o software se comporta como especificado : Testador de Qualidade (QA)
Responsabilidade de verificar que o software atende o que o cliente espera : Gerente de Produto.

Escola Moderna

Responsabilidade Perante os Stakholders - ou seja, se o produto for mal aceite pelos clientes quem roda ? : Gerente de Produto, aka Dono do Produto, aka Product Owner (PO)
Responsabilidade por alcançar objetivos num determinado tempo com um determinado orçamento ? :Todos
Responsabilidade por levantar os requisitos e documentar os requisitos : PO e sua equipe. A equipe do PO são pessoas com capacidades variadas que o auxiliam ( que seriam os analistas funcionais no modelo classico)
Responsabilidade por traduzir corretamente os conceitos de negocio para conceitos de software : Equipe. Não é responsabilidade isolada de uma pessoa. A equipe de todos os tecnicos tem esta responsabilidade.
Responsabilidade por ter a visão do todo, organizar os elementos de software e atender os requisitos não funcionais : Equipe . O mesmo que antes.
Responsabilidade por digitar o código da melhor maneia possível, obedecendo a um design : Equipe. O mesmo que antes.
Responsabilidade de verificar que o software se comporta como especificado : Equipe e PO ( o PO pode delegar para pessoas da sua equipe especializadas em testes. Isto seria o QA classico)
Responsabilidade de verificar que o software atende o que o cliente espera : PO

Veja que na escola moderna não ha muitos papeis: apenas dois , basicamente : PO e Equipe. E um PO pode usar várias equipes em paralelo.

Falemos agora dos skills da equipe.
Realmente apenas pessoas que sabem escrever código não é suficiente. É preciso pessoas que tenham visão e saibam organizar as coisas para os porgramadores. É necessário que alguem tenha skils de arquitetura e design.
Na escola moderna todos são testes do seu codigo e do codigo de outros, portanto não ha ninguém especifico para testes. ou seja, na escola moderna, bugs são encontrados e mortos antes que o PO sequer os veja.
Mas o PO vai usar o software, experimentá-lo ( tarefa que pode ser delegada). Durante esta incursões no software ele pode encontrar coisas que precisam ser mudadas. Isto são Defeitos. Defeitos não são apenas coisas que não funcionam ( como erros inexperados e coisas assim) mas também coisas simples como a ordem dos botões ou a posilção dos botões, a distancia entre os campos, o logotipo , ou a falta de um , etc… qualquer coisa. Coisas que já foram realizadas mas precisam ser modificadas.

Quando se fala em Equipe está subentendido que é a Equipe de Construção. ou seja, aquela que realmente poe a mão no código. Mas o PO pode ter outras equipes (e deve ter outras equipes) e se relaciona com os liders de outras equipes. As equipes clássicas são UX ( user experience) e Marketing além das pessoas que trabaha diretamente com o PO auxiliando no levantamento de requisitos e nas incursões pelo software já pronto.

Se o seu objetivo é montar uma equipe é bom que tenha alguem com capacidade de arquiteto, design ( não é design gráfico, é design de código) , programadores e analistas. Lembre-se que são capaciades. Então existem pessoas com todas, e pessoas com nenhuma e pessoas com algumas. O preço do serviços delas varia em conformidade.

Uma vez pronta a especificação qualquer digitador é capaz de implementar.

[quote=charleston10][quote]Um DBA não acredito ser necessário, logo que será um único
projeto. [/quote]

Eu discordo totalmente, sem uma estrutura de banco de dados bem adequada o projeto fica péssimo
[/quote]

Concordo que uma estrutura de BD ruim é horrivel, mas não que precise de um DBA para fazer uma estrutura correta.
O DBA é um conecito de advém da ideia do BD ser o servidor do sistema. Mas hoje em dia o BD é apenas um comodity, e ter um DBA é como ter alguem preocupado em manter seu file system organizado. é legal, pode ser relevante, mas na enorme maioria dos casos é irrelevante tem uma pessoa que só faz isso.

Pessoas com capacidade de DBA mas que têm outras como arquiteto ou programador, é melhor. Pois o design do BD acontece cedo na vida da aplicação. Se é preciso um DBA para manter a aplicação funcionando, ela não foi bem feita.

Não estou falando de pessoas de manutenção responsáveis por backups e essas coisas. Isso não é desenvolvimento.

[quote]
Eu penso da seguinte forma, o banco é coração, e o software é o cerebro, pois ele que vai conter toda informação e o software
que vai manipular elas.[/quote]

O banco não é o coração. É apenas a memória do cérebro.

Uma vez pronta a especificação qualquer digitador é capaz de implementar.[/quote]
É isso aí, vamos acabar com os cursos de linguagens e voltar com os cursos de datilografia.

Uma vez pronta a especificação qualquer digitador é capaz de implementar.[/quote]
É isso aí, vamos acabar com os cursos de linguagens e voltar com os cursos de datilografia.[/quote]

Ta certo então, cada coisa que eu leio aqui viu.

Concordo.

Legal essa visão de todos, claro q existe uns comentários que seriam melhores serem guardados para eles próprios, mas no geral me retornou varias informações valiosas. Pessoas são condicionadas a defenderem suas ideias, não aceitam o que o outro tem a contribuir. Entendo com a metodologia de desenvolvimento ágil precisa de profissionais mais flexíveis, mas para realizar um projeto de sucesso precisa de pessoas com habilidades e empenhadas a alcançar o objetivo do projeto. Acredito que um digitador como o amigo aee sugeriu não tem o conhecimento necessário para desenvolver e opinar no projeto, logo que, a equipe precisa de pessoas habilidosas. Minha questão foi apenas sobre papéis os quais os próprios desenvolvedores poderiam ficar responsáveis em adquirir maior conhecimento para compartilhar a equipe, logo que ninguém é o FODAO em tudo.

Uma vez pronta a especificação qualquer digitador é capaz de implementar.[/quote]
É isso aí, vamos acabar com os cursos de linguagens e voltar com os cursos de datilografia.[/quote]

Ta certo então, cada coisa que eu leio aqui viu.[/quote]
hehehehe, não tenho certeza, mas acho que assim como você e eu, o msato estava sendo irônico.

[quote=LucianoTulio]Estou postando este tópico com o objetivo de descobrir a base de profissionais para um projeto
ter sucesso. Em um equipe, quais são os papéis necessários?

-[b]Gerente de Projeto/b
-[b]Arquiteto de Software /b
[b]-Analista /b
[b]-Teste /b
-Algo mais?
[/quote]

Seu post original da a entender que uma pessoa vai exercer apenas um papel no projeto. Eu sugiro evitar esse tipo de associacao a todo custo.

Nos projetos bem-sucedidos que participei o que acontecia era justamente o contrario: a maioria dos envolvidos exerciam mais de um papel e o nivel de colaboracao era altissimo. Desenvolvedores ajudavam a planejar e sabiam de arquitetura e testes. Analistas ajudavam desenvolvedores com testes e entendiam muito do negocio. Testadores sabiam programar e ajudavam a automatizar o maximo possivel. E por ai vai…

Quanto a sua lista, poderia adicionar outros papeis que notei serem uteis nesses ultimos anos:

  • User Experience designer
  • Sysadmin
  • Build/Release Manager
  • Support engineer

Novamente, vale observar que me refiro a papeis, nao profissionais. Eu mesmo ja exerci a maioria desses papeis, e nao me vejo limitado a apenas um deles.

[duplicado]

Uma vez pronta a especificação qualquer digitador é capaz de implementar.[/quote]
É isso aí, vamos acabar com os cursos de linguagens e voltar com os cursos de datilografia.[/quote]

Ta certo então, cada coisa que eu leio aqui viu.[/quote]
hehehehe, não tenho certeza, mas acho que assim como você e eu, o msato estava sendo irônico.[/quote]

sim haha