O que fazer se o chefe sempre adiar as principais decisões sobre requisitos e design geral?

12

Ao iniciar um novo projeto, meu chefe sempre evita tomar decisões fixas. Ele costuma dizer: ok, comece a escrever algo e seja o mais genérico possível. Quando você termina, olhamos como continuamos. Seu argumento é basicamente que você nunca sabe e "desenvolvimento ágil".

Para manter a pergunta o mais genérica possível: o que você faz se seu chefe não gosta de tomar decisões?

Basta cumpri-lo e escrever um código que possa sofrer refatoração pesada e reescrita parcial algumas semanas depois? Ou continue discutindo até que o chefe tome pelo menos algumas decisões? Esta é mais ou menos a minha estratégia atual. Porque é como uma lei da física, em algum momento algo precisa ser entregue. Ou porque o chefe do chefe quer ver resultados ou porque as coisas estão se tornando ridículas em algum momento.

Também observo que meu chefe está criticando quase tudo. Até sugestões baseadas em seus próprios ...

Jimbo
fonte
1
Por palestras do SICP, comece a escrever código no LISP :)
Job
@Job - O LISP foi projetado para este fluxo de trabalho? ;)
Jimbo 4/11
Lisp (mas eu recomendaria o Clojure) permite fazer mudanças drásticas no design. Quando usado corretamente, permite construir camadas sobre camadas de abstração e mudar de idéia, adicionar recursos etc. paulgraham.com/avg.html
Job

Respostas:

12

Construa protótipos

Basta começar a desenhar telas que não fazem nada a princípio (presumivelmente você tem o suficiente para fazer isso?)

Você deve torná-lo parcialmente funcional lentamente e, eventualmente, refatorar parte do código incorreto quando ficar mais claro o que você está tentando fazer.

É um problema comum que eles não saibam o que querem até ver algo e perceberem que não é isso que querem. Descobri que quando alguém quer que você comece a criar 'uma estrutura' ou algo 'genérico' como o que ele está dizendo, você só terá problemas se tentar. As estruturas já estão escritas, você não precisa fazer isso.

Jay
fonte
Isso soa realmente familiar: 'uma estrutura'. Provavelmente, devo esperar para definir as coisas depois de mostrar pelo menos duas ou três demos / protótipos.
perfil completo de Jimbo
4
+1 Ninguém sabe o que quer. Todo mundo sabe o que não quer. É fácil obter críticas e pode ser informativo.
JohnFx
4

Reuni vários problemas com a sua mensagem: 0-Não é seu trabalho gerenciar o projeto e não é seu trabalho reunir os requisitos do usuário final. 1-O chefe não conhece os requisitos exatos 2-O chefe não fala com os usuários finais sobre os requisitos 3-O chefe está lançando uma terminologia que ele realmente não entende ágil 4-Você está trabalhando em uma solução que escrito várias vezes e você não está feliz com isso

Quanto aos pontos 1,2 e 3, pouco se pode fazer a respeito, se você não for idoso. No entanto, o seguinte pode ser feito:

A - Peça a ele para compartilhar com você o plano do projeto. Ele pode ter um ou criará um mostrando as tarefas e os prazos. Um deles deve ser sobre análise e coleta de requisitos. Se não sugerir.

B - Prepare algumas referências sobre a importância dos requisitos para o sucesso do projeto de software

C - Prepare para ele uma página do que o Agile é e não é.

D - Prepare uma lista de entradas típicas para o estágio de design e convença-o do valor de cada uma.

E - Sugira a adição de um analista de negócios e / ou modelador de dados à equipe. Essas funções terão que ser sentidas com o usuário final e você obterá as informações necessárias ou pelo menos uma boa parte delas.

F - Veja como outros desenvolvedores cooperaram com esse cara.

Quanto ao item 4, você pode sugerir que ele use uma abordagem de prototipagem ou um gerador de código que o ajude, você e o usuário a se decidirem sobre os aspectos funcionais do aplicativo. A maioria das ferramentas não gera GUI perfeita, mas pelo menos você pode capturar a funcionalidade necessária.

Em todos os casos, certifique-se de documentar claramente cada uma das iterações e enviar a ele um email sobre quais contribuições você recebeu, o que fez (em alguns detalhes) e qual é o resultado. Certifique-se de atribuir os resultados à causa apropriada, como (falta de requisitos etc.).

Infelizmente, algumas pessoas não aceitam conselhos. Portanto, tenha cuidado como você se comunica com ele.

Isso não está indo bem!

Boa sorte.

NoChance
fonte
Obrigado pela sua resposta detalhada! Minha posição atual é entre junior e senior, pelo menos foi assim que me descrevi durante o A: Ele não tem ninguém que não esteja interessado em nenhuma percepção empírica. B, C: Agora não ;-) Pelo menos sobre o projeto atual, ele sabe muito sobre os problemas do dia a dia. E é uma boa ideia. Hoje eu escrevi uma pequena demonstração, estávamos discutindo muito hoje. Embora eu estivesse impressionado com quantos pontos ele estava insatisfeito. Você pode explicar o que você quer dizer com D?
perfil completo de Jimbo
O design requer entradas. Por exemplo, Modelo de Dados (criado na análise), Regras de Negócios, Requisitos de Segurança, Casos de Uso, Arquitetura Essencial (é uma web, formulários do Windows ou o que). As entradas diferem pelo nome da mehtodologia, no entanto, todas elas levam o desenvolvedor a saber como deve ser o design.
precisa saber é o seguinte
4

Eu costumava ter um chefe assim - na verdade, brincaria que seu lema era "indecisão é a chave da flexibilidade".

Qualquer que seja o trabalho de desenvolvimento que você realiza, provavelmente você está em uma posição melhor para resolver o problema do cliente do que seu chefe. Se você não sabe qual é o problema que o cliente está tentando resolver (o que não é a mesma coisa que uma especificação), alguém não está cumprindo corretamente os requisitos.

Esboce alguns layouts de página ou crie um protótipo não / semi-funcional. Mas faça alguma coisa. Não está claro em sua postagem se você está criando um software para cliente completo ou aplicativos da web, mas a beleza desse último é que você pode lançar cedo, com freqüência. Comece com o esqueleto e trabalhe a partir daí. Um início falso não faz mal se houver algum diálogo fluindo e algumas decisões tomadas.

Temos um ditado em torno de $ WORK (aplicativos da Web internos) para nossos clientes: "Vou lhe dar uma coisa para que você possa me dizer o que deseja". Esteja preparado para jogar fora o primeiro rascunho, mas você pode se surpreender com a raridade que precisa.

RET
fonte
3

Saliente para ele que os livros do Agile sugerem o adiamento de decisões, contanto que você possa, mas não mais do que isso . Toda decisão tem um ponto em que deve ser tomada, e talvez você esteja lá agora.

Por outro lado, também se questione. Você realmente precisa decidir qual camada de persistência você usará para este aplicativo? Ou você pode começar a gravá-lo em um CSV e mantê-lo abstrato o suficiente para tomar essa decisão posteriormente?

pdr
fonte
As decisões técnicas são mais ou menos claras para mim: linguagens de programação, como escolher bibliotecas ou camadas de persistência. Ele tem opiniões fortes sobre isso e, para ser sincero, eu realmente não me importo se essas escolhas são sensatas. É mais sobre coisas como: como será a tela? Que tipo de coisas o usuário poderá fazer e como? Eu já percebi que é muito do meu trabalho ter idéias. Mas dificilmente é possível propor idéias abstratas e perguntar se ele concorda com uma ideia.
perfil completo de Jimbo
3

Escreva seu próprio documento de especificações e faça uma revisão onde você o explique e ele assine. Então você se tornará chefe, e seu chefe passará a mais questões de gerenciamento interpessoal do que a questões técnicas.

Jonathan Cline IEEE
fonte
2

Participe de conversas de 'gerenciamento ascendente' com seu chefe e clientes, descubra algumas soluções, escolha a melhor para sua equipe implementar, encontre falhas nas outras e 'gerencie' seu gerente para tomar a decisão 'certa'.

E, claro, verifique se ele acha que foi tudo idéia dele / dela. (especialmente quando tudo dá errado!)

NWS
fonte
Quando os engenheiros de software transformar engenheiros sociais .. :)
MattDavey
1
Sério, a maioria dos problemas de software é solucionável, é a comunicação com outras bolsas de água semi-sencientes que costumam ser um pouco problemáticas ...
NWS
1

Você precisa projetar e implementar algo. Como seu chefe não toma decisões, faça você mesmo. Reserve um tempo extra para documentar suas decisões e suposições antes de implementá-las. Envie para quem quiser, incluindo seu chefe. Felizmente, essa lista inclui mais do que o seu chefe, pois isso o pressionará para tomar algumas decisões, pois ele sabe que os outros sabem que você está pronto para prosseguir. Você ficará surpreso com a rapidez com que obtém feedback quando toma decisões por escrito, especialmente se tomar decisões com as quais outras pessoas não concordam. Enquanto isso, continuarei com as decisões que você tomou até que seja informado o contrário.

Se você acabou de perder tempo implementando o que seu chefe não queria, é por ele e não por você, pois ele sabia o caminho que você seguiria.

Além disso, algumas pessoas têm dificuldade em começar, mas depois que veem algo tangível, a mente entra em ação. Talvez o seu chefe seja assim e você esteja dizendo a ele o que você planeja fazer por escrito fará com que a mente dele funcione.

Dunk
fonte
0

Faça você mesmo as decisões e comece a codificar. É claro que desenvolver de maneira flexível ajudará (leia Padrões, princípios e práticas ágeis de Robert C Martin, se você ainda não o fez), mas toda a flexibilidade do mundo não ajudará se nenhuma decisão for tomada. Você pode achar que precisa apenas desenvolver o que pensaé necessário e modifique-o conforme necessário. Frequentemente, os clientes / chefes não sabem o que querem até vê-lo ou até verem algo que não querem. Isso provavelmente o levará para fora do escopo de ser um desenvolvedor, mas é a vida. Costumo descobrir que eu e meus colegas estamos efetivamente tomando decisões comerciais. Às vezes, isso não é questionado, e as decisões que tomei começam a conduzir os negócios, simplesmente porque ninguém mais tomaria a decisão. Certifique-se de listar TODAS as suas suposições e decisões (sem exceções) e apresentá-las ao seu chefe.

Paul T Davies
fonte