Come prendere decisioni tecniche significative date pochissimo tempo

36

Ho 2 giorni per prendere una decisione molto seria sugli strumenti e le piattaforme che la mia azienda utilizzerà per portare la sua applicazione WPF su Linux / Android / iOS.

Ovviamente posso indicare ai miei senior che 2 giorni è appena sufficiente per leggere tutte le possibili opzioni, e che dire provare, realizzare prototipi, ecc. Posso dirlo, non mi aiuterà un po ', ne ho 2 giorni e dopo 2 giorni verrà presa la decisione. Periodo.

Da un lato sono frustrato, dall'altro lato penso che ci sia un granello di verità in questo approccio, altrimenti posso facilmente trovarmi sepolto sotto dozzine di SDK, framework, API, articoli del blog ecc. ecc. , eseguendo campioni e dimenticando nel processo a cosa serviva tutto.

Tuttavia temo che una decisione sbagliata possa costare caro alla compagnia. Quindi cosa pensi sia un processo "ideale" per prendere tali decisioni?

    
posta Flot2011 20.01.2015 - 12:17
fonte

7 risposte

48

Se tutto quello che hai sono 2 giorni e non c'è tempo per prototipare o anche leggere su tutte le alternative allora ci sono davvero solo 2 opzioni:

  1. chiedi a qualcuno che conosce e segui i loro consigli. Questo potrebbe non significare necessariamente chiedere a un individuo, ma passare i 2 giorni a cercare tra blog e articoli per raccogliere informazioni sufficienti a prendere una decisione leggermente migliore del non-disinformato.

  2. Fai una piccola ricerca su tutte le opzioni tradizionali e sceglierne una. A volte la leadership significa non aver paura di prendere una decisione sbagliata, è spesso più importante prendere una decisione ferma che vacillare.

Puoi coprirti presentando architetture più disaccoppiate e quindi più facili da modificare, ad esempio un modello client / server ti consentirà di sostituire la tecnologia dell'interfaccia utente con un'altra con interruzioni minime.

    
risposta data 20.01.2015 - 12:27
fonte
19

Potrebbe sembrare che io stia andando contro il flusso, ma di recente ho letto il libro Creativity, Inc. di Ed Catmull e c'è stato un paragrafo davvero interessante questa situazione:

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.

Sono sicuro che possa essere applicato anche per la tua situazione. Forse oggi puoi prendere una decisione scegliendone una e iniziando a lavorarci. Se funziona, allora avrai qualcosa di pronto in quei due giorni e dirai: "Ho scelto questo, e posso mostrarti cosa possiamo fare con esso perché ho eseguito alcuni test ...". Se notate in un giorno che la soluzione scelta non ne vale la pena, potete sceglierne una diversa e lavorarci il giorno successivo. Lo scenario peggiore è che utilizzerai entrambi i giorni per testare due piattaforme, scoprendo che nessuno di loro funziona, ma che in definitiva è la risposta giusta, no? Prendi l'erba, sbarazzati delle scelte sbagliate possibili, quindi ogni decisione successiva sarà molto meglio della precedente. Lo scenario migliore è quello che sceglierai quello giusto subito e avrà qualcosa da mostrare dopo due giorni.

Ovviamente non sarai padrone di nessuna piattaforma in due giorni, ma sceglierne uno al più presto ti offrirà una prospettiva migliore su come funziona (molto più di una semplice lettura) e ti condurrà a una risposta migliore.

    
risposta data 20.01.2015 - 15:16
fonte
10

gbjbaanb rende alcuni punti molto validi. Ho solo pensato di aggiungere un po '.

È ovvio che non hai abbastanza tempo per prendere una decisione perfettamente informata. La tua unica opzione è provare e prendere una decisione che minimizzi il dolore futuro. Suggerirei:

  1. Documenta chiaramente la natura della situazione: invia una e-mail al / i tuo / i gestore / i e i relativi responsabili e gli stakeholder. Spiega che il problema che ti è stato assegnato è complicato ma che sei disposto a dare il massimo. Tuttavia, tieni presente che, dati i rigidi vincoli temporali, non puoi garantire che i tuoi risultati siano ottimali.

  2. Trova un framework / piattaforma con una community online ampia e attiva. L'ultima cosa che vuoi è essere bloccata nel debug di un quadro oscuro da solo.

  3. Come accennato in precedenza da gbjbaanb, attenuate i vostri dolori e rischi di porting usando un'architettura liberamente accoppiata. Se tutto è a forma di pera con una delle tue scelte tecnologiche, sarà più facile sostituirlo.

Sono stato nella tua situazione prima e alla fine si è trasformato in un incubo politico. Quando il sistema non ha funzionato magicamente, le persone hanno cominciato a puntare le dita e le cose sono diventate brutte. Ecco perché la mia raccomandazione numero 1 è quella di documentare chiaramente che hai fatto del tuo meglio contro le probabilità impossibili .

Buona fortuna:)

    
risposta data 20.01.2015 - 12:37
fonte
5

Dato che ti hanno effettivamente dato poco tempo per fare di più che scegliere i candidati da un cappello, adotterei il seguente approccio.

Seleziona tecnologie che:

  • Ha una vasta base di utenti
  • Avere supporto attivo (tramite qualsiasi canale)
  • Sono attivamente sviluppati

Per definizione, ciò escluderebbe qualsiasi tecnologia all'avanguardia, per quanto buona possa essere.

Inoltre, resisti all'impulso di andare con la tecnologia X senza ulteriori analisi semplicemente perché Fred lo sviluppatore lo ha usato in passato. È improbabile che si adatti perfettamente, e se Fred passa ai pascoli più verdi, ecco che arriva il tuo esperto di dominio.

    
risposta data 20.01.2015 - 14:08
fonte
4

Per quanto mi piaccia apprendere e sperimentare cose nuove, sotto vincoli temporali l'opzione migliore è sempre quella di scegliere ciò che è o sembra più comodo con cui lavorare. Rimani fedele a ciò che conosci.

Anche se a lungo termine diventa chiaro che non hai scelto l'opzione migliore, tutto ciò che hai sviluppato nel frattempo continua ad essere prezioso e avvolge una sorta di conoscenza sul campo che è ancora completamente utilizzabile e portabile. E questo è esattamente perché il contesto, gli strumenti, la piattaforma che hai scelto di usare ti fanno stare fuori strada e ti fanno vedere ciò che conta davvero.

    
risposta data 21.01.2015 - 09:20
fonte
3

2 giorni sono un periodo molto breve per prendere quel tipo di decisione, ma dal momento che devi farlo nell'elenco di 2 giorni che segue,

  1. Quali sono le piattaforme di destinazione
  2. Quali sono i componenti personalizzati / di terze parti utilizzati nell'app corrente in cui potrebbe richiedere uno sforzo considerevole per la porta. ad esempio: componenti del grafico, componenti della griglia, componenti di reporting, ecc.
  3. In che modo l'app corrente si collega al mondo e come viene gestita la sicurezza (connessioni al database / servizi web / etc ...)
  4. Come viene distribuito e in che modo vengono forniti gli aggiornamenti

Ora hai bisogno di trovare alternative che puoi usare per tutti gli ambienti di destinazione

Per ogni alternativa, trova il supporto per ognuno di utilizzare la connettività / sicurezza che sta utilizzando l'app corrente.

quindi, per ogni componente personalizzato / di terze parti, scopri se ci sono alternative facili da usare per ciascuna.

E poi pensa a come la distribuzione può essere fatta per ogni alternativa che hai trovato.

Penso che per 2 giorni questo dovrebbe essere lo scopo che dovresti essere in grado di coprire e in base ai risultati puoi fornire una soluzione.

    
risposta data 20.01.2015 - 12:54
fonte
2

Fai una lista dei fattori che dovrebbero scegliere, cose come: Prestazione sicurezza costo facilità d'uso capacità di fare X capacità di fare Y familiarità con gli sviluppatori time to market ecc.

Questo dovrebbe richiedere meno di un'ora (in realtà dovrebbe richiedere meno di 15 minuti), quindi sedersi con la gestione e avere loro la priorità di tali fattori. (Le probabilità che le loro priorità e le tue siano le stesse sono remote, sebbene tu possa guidare la loro scelta in qualche modo con suggerimenti sulle priorità.) Ora sai cosa valutare della tecnologia.

Scegli tre o quattro soluzioni comuni al tuo problema in base a una ricerca su Internet.

Poi leggi abbastanza per fare una buona ipotesi su quanto bene ciascuna delle scelte si adatti alle loro priorità 3-4 principali. Assegna un valore numerico a ciascuna scelta. Fai i calcoli moltiplicando la valutazione di ciascun tempo di priorità come valore impostato su quella priorità (10 per il numero 1, 8 per il numero 2, 6 per il numero 3 4 per il numero 4 o il numero sempre numerico che ti piace). Ora hai un punteggio numerico per ogni possibilità. Generalmente sarà ovvio quale sia il modo migliore di soddisfare le priorità assegnate. Ancora meglio ora hai qualcosa di analitico da portare a loro per dimostrare la tua scelta. Solitamente si comprano sulla tua scelta perché hai i numeri per supportarlo. Se i numeri non lo supportano, è necessario chiedersi perché preferisci l'altro e scegliere il migliore numericamente o rivisitare i numeri assegnati.

Concentrandoti su quali sono i veri vantaggi della scelta, puoi dedicare molto tempo alla ricerca. Probabilmente puoi fare una supposizione in un giorno e poi avere un giorno libero per prendere le 2 migliori possibilità e scaricare le versioni di prova se necessario e giocare un po 'con loro.

    
risposta data 20.01.2015 - 20:39
fonte

Leggi altre domande sui tag