Como iniciar um projeto de desenvolvimento quando há muitas partes interessadas em potencial

15

Acabei de assumir um novo emprego em uma faculdade como (o único) desenvolvedor de aplicativos da Web.

A faculdade possui vários sistemas legados díspares, mas todos muito mal codificados. Principalmente construído em PHP, eles lidam com assuntos como presença, resultados de exames, marcação etc.

Meu primeiro trabalho é criar um sistema que incorpore muitos desses dados, que atualmente estão em vários bancos de dados sem qualquer tipo de API amigável para retirá-los (os sistemas existentes são codificados em PHP baunilha, sem separação de dados e exibição) com uma nova plataforma para registrar informações pastorais sobre os alunos e apresentá-las aos tutores e funcionários seniores de uma maneira útil para que eles possam reagir rapidamente aos problemas dos alunos.

Em nossa primeira reunião, havia 18 pessoas! Não havia líder ou voz clara que representasse a maioria. Nenhum cliente identificável . A reunião passou de idéias de implementação detalhadas sobre recursos menores, de chefes de faculdade a discussões sobre se devemos usar planilhas do Excel ou não para entrada de dados!

Como você pode imaginar, minha cabeça estava girando no final. Na verdade, eu tinha muitas boas idéias, mas não consegui ouvi-las. Esse é um papel muito novo para mim, antes de fazer parte de uma equipe de desenvolvimento em uma agência de marketing. Tínhamos papéis muito bem definidos: Gerente de Projeto, Cliente, Designer, Desenvolvedor.

Gostaria de saber se algum desenvolvedor ou gerente experiente pode me dar algumas dicas sobre como eu posso transformar meus colegas em algo que se assemelha a uma equipe de projeto. O ágil é o caminho a seguir? Como você abordaria lidar com todas as vozes díspares? É claro que algum processo precisa ser implementado muito rapidamente, só não tenho certeza do que é isso.

Matt Harrison
fonte
8
Se você é o único desenvolvedor, quem foram os outros 17 na reunião?
PDR
1
Boa pergunta. O diretor da escola, vários membros do corpo docente (até o professor de educação física estava lá) e muitas pessoas com nomes acronímicos.
Matt Harrison
1
@ MattHarrison: mas o que eles têm em comum com seu aplicativo da web? Eles são usuários em potencial? Eles mantêm o sistema legado que você mencionou? Você deve esclarecer isso para ter certeza de que sabe quem solicitará os requisitos e quem poderá ignorar.
Doc Brown
1
@DocBrown Me desculpe, talvez eu tenha sido um pouco claro. Todos eles serão futuros usuários do sistema. O aplicativo será inter-universitário e usado por mais de 3000 pessoas. Acho que o que aconteceu aqui são pessoas convidando pessoas e a reunião se tornou um circo. O que farei é enfatizar a necessidade de um envolvimento menor das partes interessadas.
Matt Harrison
5
@Para o downvoter anônimo / mais próximo: isso pode parecer muito localizado à primeira vista. Mas acho que a verdadeira questão é uma questão de desenvolvimento de interesse geral: "como iniciar um projeto de desenvolvimento quando há muitas partes interessadas em potencial", e esse tipo de pergunta está no tópico do IMHO aqui.
Doc Brown)

Respostas:

26

Eu não esperaria nenhum "processo de desenvolvimento ágil" aqui como uma solução para o seu problema atual. A primeira coisa para você deve ser: limpe sua missão . Que significa:

  • esclareça quais são suas próprias responsabilidades
  • esclarecer quais são as responsabilidades das outras partes interessadas
  • identificar quem é responsável por cada um dos sistemas legados
  • se ainda não houver um cliente para o seu aplicativo da Web, encontre um que o usará no futuro e peça permissão para incorporá-lo como um usuário representativo do seu sistema (uma pessoa com quem você pode discutir os requisitos)
  • se houver diferentes partes interessadas com objetivos diferentes, colete seus requisitos (por exemplo, entrevistando-os um a um, e não 18 pessoas no total em uma sala). Escreva os resultados em uma lista. Depois, comece a priorizar.
  • escreva um roteiro (o quadro geral) e uma pequena especificação para a versão 0.1 e faça seu chefe e o cliente representante concordarem formalmente
  • EDIT: veja o comentário do GlenH7

Isso pode demorar um pouco, você provavelmente não escreverá muito código nesta fase do projeto. Em tal situação, você deve fazer algumas "engenharia de requisitos" primeiro. Mas comece pequeno, pense grande. Depois de desenvolver seu primeiro release, você terá algo para mostrar, discutir os requisitos novamente com as partes interessadas etc.

Doc Brown
fonte
Conselho brilhante. Obrigado! Posso apenas esclarecer; quando você diz "limpe suas responsabilidades", você quer esclarecê-las ou limpá-las como se livrar delas? Desculpe, eu sou britânico, então talvez seja algo em inglês dos EUA.
Matt Harrison
1
@MattHarrison: espero que a minha edição torna isso mais claro - embora às vezes ele também pode ser uma boa idéia para se livrar de algumas responsabilidades ;-)
Doc Brown
4
Excelente resposta. O único item que eu acrescentaria é identificar uma parte interessada principal ou executiva. Essa pessoa tem a autoridade final para determinar a priorização e o escopo do recurso. Existem diferentes maneiras de chegar lá, mas alguém tem uma responsabilidade final no projeto. E sim, sinta-se à vontade para roubar esse comentário e adicionar sua resposta, se desejar. :-)
6

Separe os que realmente querem que esse projeto funcione do rebanho.

Devido a muita política, alguém reuniu essa reunião com uma lista de participantes em que a associação era determinada por quem ficaria mais chateado se eu não os convidas. Acontece. Esse objetivo foi atingido, mas, como desenvolvedor, você descobriu que nada foi decidido. Ninguém foi designado para o que fazer. Se você tiver sorte, eles conseguiram agendar a próxima reunião ou, se Deus não permitir, eles marcaram uma reunião recorrente na 3ª terça-feira de cada mês.

Em seguida virá a formação de comitês, subcomitês e forças-tarefa. É melhor, mas você encontrará todos igualmente inúteis.

Finalmente, você descobrirá quem realmente se importa com esse projeto. Quem realmente quer dedicar tempo para fazer o que é certo. Felizmente, essas pessoas terão um supervisor que lhes dará tempo para fazer isso e não apenas o tornará outro item em sua já extensa lista de tarefas. Encontre essas pessoas o mais rápido possível! Ajude-os a gerenciar as expectativas de seus chefes e a obter uma quantidade acordada de compromisso.

Consiga algo na frente de tantas pessoas no grupo original que se incomodarão em voltar. Todos podem ser pessoas inteligentes e / ou educadas, mas não vão ler muitas especificações. Eles vão gostar de algumas coisas, odeiam outros e querem mais. Não faz mal escrever sugestões, mas tente fazer com que a parte acompanhe com um pouco de pele no jogo. Não prometa fazer tudo. Basta abordar o que pode ser feito em um futuro próximo.

Se você acaba tendo que lidar com mais de cinco pessoas regularmente, é porque algum gerente fez com que várias pessoas se envolvessem e que realmente não queriam estar lá.

JeffO
fonte
1
+1 por destacar os aspectos políticos de tal situação.
Doc Brown
4

Crie uma lista de idéias que você acha que solidificariam / melhorariam os sistemas existentes com base em suas observações e suas "necessidades" e garantam que você se concentre em onde pode obter ganhos visíveis reais. Inclua nessa lista todas as ideias que julgar úteis, bem como qualquer sugestão "razoável" destacada dos não-desenvolvedores.

Crie uma lista de recursos que devem ser incluídos em seus esforços de desenvolvimento. Dê a cada membro o poder de "votar", talvez na forma de "estrelas pegajosas" e descubra o que o todo realmente quer que cada membro coloque estrelas ao lado do que eles acham importante. Algumas pessoas podem acabar com mais estrelas se assinarem o cheque, darem a última palavra, etc. depois traduza em um roteiro

1) Pesquise a equipe - Descubra o que cada membro considera importante / necessário / prioritário

2) Divulgue algo rapidamente - Não tente resolver todos os problemas de uma só vez, obtenha a funcionalidade "mínimo" disponível e peça a aprovação deles e, em seguida, avance coletivamente com base nos comentários dos usuários.

3) Use o feedback deles e o de outros usuários para orientar o processo de desenvolvimento

(Compilar, Avaliar Feedback, Compilar, Avaliar Feedback) Enxágue e repita.

Além disso, considere colocar "pontos de esforço" ou horas estimadas para concluir. Isso também pode ajudar na priorização.

hanzolo
fonte
1
+1, essa é a maneira de conduzir o carro uma vez que você conseguiu ao movimento :-)
Doc Brown
1
+1 para este, embora eu ainda torne mais explícito que você precisa ter cuidado com um "sistema ruim" que realmente faz o que precisa. Priorize de uma maneira que você não conserte coisas que não estão quebradas, concentre-se em onde você pode obter ganhos visíveis reais.
Joris Timmermans
@MadKeithV, concordou .. "Concentre-se em onde você pode obter ganhos reais visíveis", comentário atualizado para incluir essa declaração.
hanzolo
2

Seu primeiro desafio é identificar a necessidade desse projeto. Realize outra reunião com todas essas pessoas e peça que anotem os problemas que precisam ser resolvidos. Não deixe que eles falem sobre as várias maneiras pelas quais este projeto será a solução. Force-os a identificar verdadeiramente as necessidades / problemas.

Uma maneira de fazer isso é pedir a cada um individualmente para documentar essas necessidades em notas adesivas - uma idéia por mensagem adesiva. Em seguida, execute um diagrama de afinidade para ajudá-los a agrupar essas idéias diferentes em necessidades específicas. Por fim, faça-os votar ( Voto Múltiplo ) para que você possa ver as maiores necessidades.

O Agile nos lembra de abordar o recurso que tem mais valor para o cliente primeiro. Comece com a maior necessidade e continue dividindo esse item até encontrar o primeiro pedaço pequeno que você pode fazer em um curto período de tempo.

lsievert
fonte
0

BEIJO - Faça um itinerário. Obrigado a todos por terem vindo, reveja, faça. O rastreamento lateral ficará mais lento se você abordá-lo, compartilhando sua preocupação e pedindo que permaneçam APÓS a reunião. Tome decisões por votação onde houver controvérsia para se manter mais feliz. A motivação para participar de qualquer sistema está diretamente relacionada à crença dos indivíduos em seus métodos.

Steven
fonte