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 outros enfeites do Linux / Android / iOS.
Obviamente, posso apontar para meus idosos que 2 dias dificilmente são suficientes para ler sobre todas as opções possíveis, e que tal tentar, fazer protótipos etc. após 2 dias a decisão seria tomada. Período.
De um lado, estou frustrado; do outro lado, acho que há uma certa verdade nessa abordagem; caso contrário, posso facilmente me encontrar enterrado sob dezenas de SDKs, estruturas, APIs, artigos de blog, etc. baixados, fazendo trabalhos de bancada, executando amostras e esquecendo no processo para que tudo isso era.
Ainda tenho medo de que uma decisão errada custe muito a empresa. Então, o que você acha que é um processo "ideal" para tomar essas decisões?
fonte
Respostas:
Se tudo o que você tem são 2 dias e não há tempo para prototipar ou mesmo ler todas as alternativas, existem apenas duas opções:
pergunte a alguém que conhece e segue seus conselhos. Isso pode não significar necessariamente pedir a um indivíduo, mas passar os 2 dias pesquisando em blogs e artigos para coletar informações suficientes para tomar uma decisão um pouco melhor do que desinformada.
Faça uma pequena pesquisa em todas as opções principais e escolha uma. Às vezes, liderança significa não ter medo de tomar a decisão errada, geralmente é mais importante tomar uma decisão firme do que vacilar.
Você pode se cobrir criando arquiteturas mais dissociadas e, portanto, mais fáceis de mudar - por exemplo, um modelo de cliente / servidor permitirá que você substitua sua tecnologia de interface do usuário por outra com uma interrupção mínima.
fonte
Pode parecer que estou indo contra a corrente, mas recentemente li o livro Creativity, Inc., de Ed Catmull, e havia um parágrafo muito bom abordando essa situação:
Estou certo de que também pode ser aplicado à sua situação. Talvez você possa tomar a decisão hoje escolhendo uma e começar a trabalhar nela. Se funcionar, você terá algo pronto nesses dois dias e dirá: "Eu escolhi isso e posso mostrar o que podemos fazer com isso, porque fiz alguns testes ...". Se você perceber em um dia que a solução escolhida não vale totalmente a pena, poderá escolher outra 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, livre-se de possíveis escolhas erradas, para que qualquer próxima decisão seja muito melhor que a anterior. O melhor cenário é que você
Obviamente, você não dominará nenhuma plataforma em dois dias, mas escolher uma o mais rápido possível dará uma melhor perspectiva de como ela funciona (muito mais do que apenas ler sobre ela) e levará você a uma resposta melhor.
fonte
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 sugiro:
Documente claramente a natureza da situação: envie um email ao (s) seu (s) gerente (s) e controle os gerentes e as 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 rigorosas restrições de tempo, você não pode garantir que suas descobertas sejam ótimas.
Encontre uma estrutura / plataforma com uma comunidade on-line grande e ativa. A última coisa que você quer é ficar parado depurando apenas uma estrutura obscura.
Conforme mencionado anteriormente pelo gbjbaanb, atenue suas dores e riscos de portabilidade usando uma arquitetura fracamente acoplada. Se tudo der errado com uma de suas opções de tecnologia, isso facilitará a troca.
Eu já estive na sua situação antes e acabou se transformando 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 seu melhor com probabilidades impossíveis .
Boa sorte :)
fonte
Uma vez que eles efetivamente lhe deram pouco tempo para fazer mais do que escolher candidatos rapidamente, eu adotaria a seguinte abordagem.
Selecione tecnologias que:
Por definição, isso excluiria qualquer tecnologia de ponta, por melhor que seja.
Além disso, resista ao desejo 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 seguir para pastagens mais verdes, lá será o seu especialista em domínio.
fonte
2 dias é um período muito curto para tomar esse tipo de decisão, mas como você deve fazê-lo na lista de 2 dias a seguir,
Agora você precisa encontrar alternativas que possam ser usadas para todos os ambientes de destino
Para cada alternativa, encontre 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 existem alternativas fáceis de usar para cada um.
E então pense em como a distribuição pode ser feita para cada alternativa encontrada.
Eu acho que por 2 dias esse deve ser o escopo que você deve cobrir e com base nos resultados que você pode fornecer uma solução.
fonte
Por mais que eu goste de aprender e experimentar coisas novas, com restrições de tempo, a melhor opção é sempre escolher o que é ou se sente mais confortável para trabalhar. Atenha-se ao que você sabe.
Mesmo que, a longo prazo, fique claro que você não escolheu a melhor opção, qualquer coisa que você tenha desenvolvido continuará sendo valiosa e envolva um tipo de conhecimento de campo que ainda é completamente utilizável e portátil. E isso é exatamente porque o contexto confortável, as ferramentas e a plataforma que você escolheu usar permanecem fora do caminho e fazem você ver o que realmente importa.
fonte
Faça uma lista dos fatores que devem ser escolhidos, como: Custo de segurança de desempenho facilidade de uso capacidade de executar X capacidade de executar Y tempo de familiarização do desenvolvedor no mercado etc.
Isso deve levar menos de uma hora (na verdade, deve levar menos de 15 minutos). Depois, sente-se com a gerência e faça com que eles priorizem esses fatores. (As chances de as prioridades deles e as suas serem as mesmas são remotas, embora você possa guiar sua escolha com sugestões de 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.
Depois, leia o suficiente para adivinhar o quão bem cada uma das opções se encaixa em suas principais prioridades 3-4. Atribua um valor numérico a cada escolha. Faça as contas multiplicando a classificação de cada prioridade vezes como o 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 número que desejar). Agora você tem uma pontuação numérica para cada possibilidade. Geralmente será óbvio o que melhor atende às prioridades atribuídas. Ainda melhor, agora você tem algo analítico para levá-los a provar sua escolha. Eles geralmente compram na sua escolha, porque você tem os números para apoiá-lo. Se os números não o suportam, você deve se perguntar por que prefere o outro e escolher o melhor numericamente ou revisitar os números atribuídos.
Concentrando-se em quais são os priroites reais da escolha, você pode reduzir muito tempo de pesquisa. Provavelmente, você pode adivinhar em um dia e ainda ter um dia para aproveitar as duas principais possibilidades e baixar versões de teste, se necessário, e brincar um pouco com elas.
fonte