Como tomar decisões técnicas significativas dadas muito pouco tempo

36

Eu tenho dois dias para tomar uma decisão muito séria sobre as ferramentas e plataformas que minha empresa usará para portar seu aplicativo WPF para o Linux / Android / iOS.

Obviamente eu posso apontar para os meus alunos que 2 dias dificilmente são suficientes para ler sobre todas as opções possíveis, e sobre tentar, fazer protótipos etc. Eu posso dizer, não vai me ajudar um pouco, eu tenho 2 dias, e após 2 dias a decisão seria tomada. Período.

De um lado estou frustrado, do outro lado eu acho que há um grão de verdade nesta abordagem, caso contrário eu posso facilmente me encontrar enterrado sob dezenas de SDKs baixados, frameworks, APIs, artigos de blog etc etc fazendo bench-works , executando amostras e esquecendo no processo o que era tudo.

Ainda assim, receio que uma decisão errada possa custar caro à empresa. Então, o que você acha que é um processo "ideal" para tomar essas decisões?

    
por Flot2011 20.01.2015 / 12:17
fonte

7 respostas

48

Se tudo o que você tem são 2 dias e não há tempo para prototipar ou até mesmo ler sobre todas as alternativas, há apenas duas opções:

  1. pergunte a alguém que conhece e siga seus conselhos. Isso pode não significar necessariamente perguntar a um indivíduo, mas passar os dois dias procurando em blogs e artigos para coletar informações suficientes para tomar uma decisão um pouco melhor que a desinformada.

  2. Faça uma pequena pesquisa em todas as opções principais e depois escolha uma. Às vezes a liderança significa não ter medo de tomar a decisão errada, é mais importante tomar uma decisão firme do que vacilar.

Você pode se cobrir criando arquiteturas mais dissociadas e, portanto, mais fáceis de alterar - por exemplo, um modelo cliente / servidor permitirá que você substitua sua tecnologia de interface do usuário por outra com o mínimo de interrupção.

    
por 20.01.2015 / 12:27
fonte
19

Pode parecer que estou indo contra a corrente, mas recentemente li o livro Creativity, Inc. por Ed Catmull e houve um parágrafo muito legal abordando esta situação:

Andrew Stanton spoke next. Andrew is fond of saying that people need to be wrong as fast as they can. In a battle, if you're faced with two hills and you're unsure which one to attack, he says, the right course of action is to hurry up and choose. If you find out it's the wrong hill, turn around and attack the other one. In that scenario, the only unacceptable course of action is running between the hills.

Estou certo de que também pode ser aplicado à sua situação. Talvez você possa tomar a decisão hoje escolhendo um e comece a trabalhar nele. Se funcionar, então você terá algo pronto nesses dois dias e você dirá - "Eu escolhi isso, e posso mostrar a você o que podemos fazer com isso porque eu fiz alguns testes ...". Se você notar em um dia que a solução escolhida não vale totalmente a pena, você pode escolher uma diferente e trabalhar com ela no dia seguinte. O pior cenário é que você usará os dois dias para testar duas plataformas, descobrindo que nenhuma delas funciona - mas essa é a resposta certa, não é? Retire a erva daninha, livre-se das escolhas possíveis erradas, portanto, qualquer decisão seguinte será muito melhor que a anterior. Na melhor das hipóteses, você escolhe o caminho certo e terá algo pronto para mostrar depois de dois dias.

Obviamente você não dominará nenhuma plataforma em dois dias, mas escolher um ASAP definitivamente lhe dará uma perspectiva melhor sobre como ele funciona (muito mais do que apenas ler sobre isso) e o levará a uma melhor resposta.

    
por 20.01.2015 / 15:16
fonte
10

O gbjbaanb faz alguns pontos muito bons. Eu apenas pensei em adicionar um pouco.

É óbvio que você não tem tempo suficiente para tomar uma decisão perfeitamente informada. Sua única opção é tentar tomar uma decisão que minimize a dor futura. Eu sugeriria:

  1. Documente claramente a natureza da situação: Envie um email para o (s) seu (s) gerente (s) e para o CC de seus gerentes e partes interessadas. Explique que o problema que lhe foi atribuído é complicado, mas que você está disposto a dar tudo de si. Mas observe que, dadas as rígidas restrições de tempo, você não pode garantir que suas descobertas sejam ótimas.

  2. Encontre um framework / plataforma com uma comunidade on-line grande e ativa. A última coisa que você quer é ficar preso depurando um framework obscuro sozinho.

  3. Como mencionado anteriormente pelo gbjbaanb, mitigue seus riscos e portabilidade de portabilidade usando uma arquitetura fracamente acoplada. Se tudo der uma forma de pêra com uma de suas opções de tecnologia, isso facilitará a troca.

Eu já estive em sua situação antes e eventualmente se transformou em um pesadelo político. Quando o sistema não funcionava magicamente, as pessoas começaram a apontar os dedos e as coisas ficaram feias. É por isso que minha recomendação nº 1 é documentar claramente que você fez o melhor possível contra probabilidades impossíveis .

Boa sorte:)

    
por 20.01.2015 / 12:37
fonte
5

Como eles efetivamente deram a você pouco tempo para fazer mais do que escolher candidatos de uma cartola, eu adotaria a seguinte abordagem.

Selecione tecnologias que:

  • Tenha uma grande base de usuários
  • Tenha suporte ativo (via qualquer canal)
  • Estão sendo ativamente desenvolvidos

Por definição, isso excluiria qualquer tecnologia de ponta, por melhor que seja.

Além disso, resista à vontade de usar a tecnologia X sem uma análise mais aprofundada, simplesmente porque Fred, o desenvolvedor, a usou no passado. É improvável que seja um ajuste perfeito, e se Fred passar para pastos mais verdes, vai o seu especialista em domínio.

    
por 20.01.2015 / 14:08
fonte
4

Por mais que eu goste de aprender e experimentar coisas novas, sob restrições de tempo, a melhor opção é sempre ir para o que é ou se sente mais confortável para trabalhar. Atenha-se ao que você sabe.

Mesmo se, a longo prazo, ficar claro que você não escolheu a melhor opção, qualquer coisa que você tenha desenvolvido enquanto isso continua sendo valiosa e envolve um tipo de conhecimento de campo que ainda é completamente utilizável e portátil. E é exatamente por isso que o contexto confortável, as ferramentas e a plataforma que você escolheu para usar ficam fora do caminho e fazem você ver o que realmente importa.

    
por 21.01.2015 / 09:20
fonte
3

2 dias é um período muito curto para tomar esse tipo de decisão, mas como você tem que fazer isso em 2 dias após a lista,

  1. Quais são as plataformas de segmentação
  2. Quais são os componentes personalizados / de terceiros usados no aplicativo atual, onde pode ser necessário um esforço considerável para a porta. por exemplo: componentes de gráficos, componentes de grade, componentes de relatórios, etc.
  3. Como o aplicativo atual está se conectando ao mundo e como a segurança é tratada (conexões de banco de dados / serviços da Web / etc ...)
  4. Como é distribuído e como as atualizações são fornecidas

Agora você precisa encontrar alternativas que você possa usar para todos os ambientes de destino

Para cada alternativa, descubra o suporte de cada um para usar a conectividade / segurança que o aplicativo atual está usando.

em seguida, para cada componente personalizado / de terceiros, descubra se há alternativas fáceis de usar para cada um.

Depois, pense em como a distribuição pode ser feita para cada alternativa que você encontrou.

Acho que por dois dias esse deve ser o escopo que você deve ser capaz de cobrir e, com base nos resultados, você pode fornecer uma solução.

    
por 20.01.2015 / 12:54
fonte
2

Faça uma lista dos fatores que devem ser escolhidos, como: atuação segurança custo fácil de usar capacidade de fazer X capacidade de fazer Y familiaridade do desenvolvedor tempo para comercializar etc

Isso deve levar menos de uma hora (na verdade, deve levar menos de 15 minutos), depois sentar com a gerência e fazer com que priorizem esses fatores. (As chances de suas prioridades e as de vocês serem as mesmas são remotas, embora você possa orientar sua escolha com sugestões quanto a prioridades.) Agora você sabe o que avaliar sobre a tecnologia.

Escolha três ou quatro soluções comuns para o seu problema com base em uma pesquisa na Internet.

Em seguida, leia o suficiente para adivinhar o quão bem cada uma das escolhas se encaixa em suas principais prioridades 3-4. Atribuir um valor numérico para cada escolha. Faça as contas multiplicando a classificação de cada prioridade como valor definido nessa prioridade (10 para o número 1, 8 para o número 2, 6 para o número 3 4 para o número 4 ou o que você quiser numérico). Agora você tem uma pontuação numérica para cada possibilidade. Geralmente, será óbvio que melhor atende às prioridades atribuídas. Melhor ainda, agora você tem algo analítico para fazer com eles para provar sua escolha. Eles geralmente compram sua escolha porque você tem os números para suportá-la. Se os números não suportam, então você precisa se perguntar por que você prefere o outro e ir com o melhor numericamente ou revisitar os números atribuídos.

Concentrando-se no que os prirites reais da escolha são, você pode cortar muito tempo de pesquisa. Você provavelmente pode ter um palpite dentro de um dia e depois ter um dia deixado para aproveitar as duas principais possibilidades e baixar as versões de avaliação, se necessário, e brincar um pouco com elas.

    
por 20.01.2015 / 20:39
fonte