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

36

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?

Flot2011
fonte
4
Escreva em algum lugar que seja quase impossível tomar a decisão em dois dias. Em seguida, tente tomar uma decisão não muito ruim e documente que sua decisão não é a melhor. Em outras palavras, cubra sua bunda. Qt5 pode ser considerado. Ou fazer o seu produto uma aplicação web HTML5 (possivelmente usando alguma biblioteca servidor HTTP por exemplo libonion ou FastCGI)
Basile Starynkevitch
2
@gnat Eu não concordo, que é uma pergunta subjetiva, mesmo se houver mais de uma resposta possível, ainda assim todos nós podemos obter com a experiência de outras pessoas.
precisa saber é o seguinte
9
Não há 'melhor opção' em muitos casos, você pode escrevê-lo como um webapp PHP e funcionaria. Ou você poderia escrevê-lo como um programa Qt e funcionaria. Pode ser uma interface do usuário da interface do jogo openGL. Todas essas são escolhas aceitáveis, o truque é escolher uma e depois começar a fazê-la funcionar. Não se paralise com dúvidas depois de escolher alguma coisa.
Gbjbaanb
5
Exemplo muito ruim, porque no caso do exemplo, existe uma tecnologia que é uma escolha óbvia para isso - o Xamarin. Mantenha o código de back-end do .NET, basta substituir a interface do usuário por algo. Lida com todos os casos. Portanto, este é mais um caso de "Não sei nada sobre sistemas de plataforma cruzada para .NET".
TomTom
7
Dizer que 2 dias não é suficiente não é muito construtivo. 3 dias serão suficientes? Ou você realmente quer gastar 2 meses nisso? E quão melhor é sua decisão? ~~~~ Se você diz que precisa de uma semana e está confiante de que isso economizará facilmente centenas de horas de tempo de desenvolvimento, não deixe de mencionar isso. Pode não ajudar, mas sempre há a chance de que as partes interessadas gostem do seu caso de negócios.
Dennis Jaheruddin

Respostas:

48

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:

  1. 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.

  2. 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.

gbjbaanb
fonte
10
+1 em "não tenha medo de tomar a decisão errada" Às vezes, ficar preso na "paralisia da análise" é pior do que não tomar nenhuma decisão. Somos todos humanos. Faça o seu melhor e continue com a vida.
Semaj
1
vacilar: alternar ou vacilar entre diferentes opiniões ou ações; seja indeciso.
precisa saber é o seguinte
10
+1 para "cobrir-se por surgir com arquiteturas que são mais dissociado e, portanto, mais fácil de mudança"
Darth Egrégio
2
@emodendroket Windows Workflow Foundation.
MetaFight 21/01
2
Se o seu problema não for mainstream, não espere que as soluções mainstream funcionem bem. É aqui que a dissociação e a flexibilidade são cruciais . Procure estruturas / bibliotecas que tornem mais fácil fazer suas próprias coisas, em vez de fazer você calçar algo em suas expectativas quando elas parecem não antecipar o que você precisa fazer.
Jpmc26
19

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:

Andrew Stanton falou em seguida. Andrew gosta de dizer que as pessoas precisam estar erradas o mais rápido possível. Em uma batalha, se você se depara com duas colinas e não tem certeza de qual delas atacar, diz ele, o curso de ação certo é se apressar e escolher. Se você descobrir que é a colina errada, vire-se e ataque a outra. Nesse cenário, o único curso de ação inaceitável é executado entre as colinas.

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.

Michal
fonte
12
Embora eu concorde com você em nível global, às vezes, avançar em um campo de guerra é bastante suicida.
precisa saber é o seguinte
Ninguém mencionou apressando embora. Eu nunca disse para ir até o chefe hoje e dizer - "Aqui está a solução. Aqui e agora.". Em vez disso, estou propondo escolher um na cabeça e tentar executá-lo e mexer nele. Simplesmente ler e discutir com outra pessoa não fará o truque. Acredito que seguir em frente e testá-lo levará a uma escolha de qualidade muito mais alta.
Michal
6
@ Flot2011, porém, se você tiver um MBA, fique onde está e envie todas as suas tropas para lutar contra qualquer colina. Se todos eles morrerem, bem, você recebe mais tropas e continua, mas desta vez dizendo que sua experiência como general o torna muito mais ... merecedor de um salário monstruosamente mais.
Gbjbaanb
1
"Escolher um o mais rápido possível, depois o protótipo" me parece um péssimo conselho nessa situação. Sim, a prototipagem é importante, mas também demorada. Problemas não triviais geralmente têm mais de 2 soluções possíveis e 2 dias não são suficientes para prototipar várias tecnologias.
meriton - em greve
@meriton Sinto o que você quer dizer - concordo que a prototipagem consome tempo. Eu não declarei explicitamente "fazer prototipagem" - é por isso que escolhi cuidadosamente a palavra consertar - explore a plataforma, escreva um pouco de código, abra alguns arquivos básicos de implementação, veja como ela funciona por dentro. As chances são de que o tomador de decisão não consiga todos os detalhes corretamente, mas por tentativa e erro, ele / ela pode definitivamente melhorar a qualidade da decisão.
Michal
10

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:

  1. 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.

  2. 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.

  3. 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 :)

MetaFight
fonte
17
Re: # 1. Ninguém gosta de um perdedor chorão, então apenas destaque que você fez o melhor possível em circunstâncias impossíveis, então você parece um vencedor proativo que joga em equipe e joga em equipe! A gerência gosta desse tipo de coisa. Aliás, existem muitas razões pelas quais a grande reescrita não funciona, a escolha de uma tecnologia em detrimento de outra é geralmente o menor problema.
Gbjbaanb
Sim, eu percebi que era um pouco chorosa, então eu a modifiquei.
MetaFight
Pessoalmente, eu seria mais específico do que "não ideal", pois não especifica a gravidade da incerteza. Um gerente com uma mentalidade "não precisa ser perfeita, apenas o suficiente" ignora alegremente esse aviso, sem saber que você quis dizer que a tecnologia pode não ser boa o suficiente.
meriton - em greve
3
Em vez disso, eu identificaria riscos concretos e os encaminharia para o gerenciamento. Por exemplo: "Com base em nosso conhecimento atual, achamos que a tecnologia A é a melhor escolha. No entanto, devido ao curto prazo, não conseguimos verificar se essa abordagem pode lidar com a carga de trabalho esperada para este sistema". A gerência pode aceitar o risco ou reduzi-lo solicitando análises adicionais.
meriton - em greve
+1 para o ponto n ° 2. Procure uma solução que tenha uma comunidade madura e bem desenvolvida por trás. Se você multa mais de uma dessas soluções, sempre pode navegar em fóruns online, blogs, postar perguntas etc. e descobrir qual combina com você. melhor
Arnab Bhagabati
5

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:

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

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.

Robbie Dee
fonte
Embora se a tecnologia X for boa o suficiente e Fred estiver disposto a educar os outros desenvolvedores, isso pode ser uma boa maneira de iniciar a equipe.
um CVn
Com certeza - se carrapatos as outras caixas ...
Robbie Dee
4

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,

  1. Quais são as plataformas de destino
  2. Quais são os componentes personalizados / de terceiros usados ​​no aplicativo atual, onde pode exigir um esforço considerável para a porta. por exemplo: componentes do gráfico, componentes da grade, componentes do relatório, etc.
  3. Como o aplicativo atual está se conectando ao mundo e como a segurança é tratada (conexões com o 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 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.

Pelicano-voador baixo
fonte
4

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.

Ando
fonte
2

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.

HLGEM
fonte
O que você descreveu é chamado de "Processo de hierarquia analítica". É a técnica mais comum que já vi usada para realizar estudos de comércio. Seu ponto forte é que ajuda a decidir a melhor opção de maneira bastante objetiva e leva em consideração todas as opiniões das partes interessadas. Fiquei surpreso ao ver o quão complicado os sites fazem essa técnica parecer. Não deixe a aparente complexidade mostrada pelos sites influenciar você, é realmente muito fácil de usar. De qualquer forma, como não consegui encontrar um bom exemplo, suponho que a Wikipedia seja um ponto de partida tão bom quanto qualquer outro en.wikipedia.org/wiki/Analytic_hierarchy_process .
Dunk
1
Demora menos de dez minutos para configurar a estrutura em uma planilha (a parte mais complicada é decidir quais os fatores que você quiser comparar prioridades diante) e então é fácil tapear para preencher.
HLGEM
É realmente fácil. Também fazemos pesquisas em que todos atribuem um valor a cada categoria para determinar o que todos acham mais importante, para que possamos aplicar pesos a cada categoria. Afinal, a equipe de software acha que a velocidade e a memória do processador são sempre a principal prioridade, mas o pessoal do hardware parece ter opiniões opostas porque a duração da bateria é importante para eles. Obviamente, o cliente normalmente conta com pelo menos metade dos pesos de classificação e não se importa com problemas de software ou hardware. As descrições online parecem realmente complicadas quando não são.
Dunk