Come prendere decisioni tecniche significative con 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 anziani che 2 giorni non sono abbastanza per leggere su tutte le possibili opzioni e che dire di provare, realizzare prototipi ecc. Posso dirlo, non mi aiuterà un po ', ho 2 giorni e dopo 2 giorni la decisione sarebbe stata presa. Periodo.

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

Temo comunque che una decisione sbagliata costerà cara alla compagnia. Quindi quale pensi sia un processo "ideale" per prendere tali decisioni?


4
Scrivi da qualche parte che la decisione è quasi impossibile da prendere in due giorni. Quindi prova a prendere una decisione non troppo negativa e documenta che la tua decisione non è la migliore. In altre parole, copriti il ​​culo. Qt5 potrebbe essere considerato. Oppure trasforma il tuo prodotto in un'applicazione Web HTML5 (possibilmente utilizzando una libreria di server HTTP, ad esempio libonion o FastCGI)
Basile Starynkevitch

2
@gnat Non sono d'accordo sul fatto che si tratti di una domanda soggettiva, anche se c'è più di una possibile risposta che tutti noi possiamo ottenere dall'esperienza degli altri.
Flot2011,

9
In molti casi non esiste una "migliore opzione", potresti scriverla come una webapp PHP e funzionerebbe. Oppure potresti scriverlo come un programma Qt e funzionerebbe. Potrebbe essere un'interfaccia utente di interfaccia di gioco openGL. Tutte queste sono scelte accettabili, il trucco è sceglierne una e poi iniziare a farlo funzionare. Non paralizzarti con i dubbi una volta che hai scelto qualcosa.
gbjbaanb,

5
Pessimo esempio perché nel caso dell'esempio esiste una tecnologia che è una scelta ovvia per questo: Xamarin. Mantenere il codice back-end .NET, basta sostituire l'interfaccia utente con qualcosa. Gestisce tutti i casi indicati. Quindi, questo è più un caso di "Non so nulla di sistemi multipiattaforma per .NET".
TomTom,

7
Dire che 2 giorni non è abbastanza non è molto costruttivo. 3 giorni saranno sufficienti? O vuoi davvero spendere 2 mesi su di esso? E quanto è meglio la tua decisione? ~~~~ Se dici che hai bisogno di una settimana e sei sicuro che questo farà risparmiare centinaia di ore di tempo di sviluppo lungo la linea, assicurati di menzionarlo. Potrebbe non essere d'aiuto, ma c'è sempre la possibilità che le parti interessate apprezzino il tuo caso aziendale.
Dennis Jaheruddin,

Risposte:


48

Se tutto ciò che hai è di 2 giorni e non hai tempo per prototipare o persino leggere tutte le alternative, ci sono davvero solo 2 opzioni:

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

  2. Fai una piccola ricerca su tutte le opzioni tradizionali e poi scegline 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 inventando architetture che sono più disaccoppiate e quindi più facili da cambiare - ad esempio un modello client / server ti permetterà di sostituire la tua tecnologia UI con un'altra con un'interruzione minima.


10
+1 per "non abbiate paura di prendere una decisione sbagliata" A volte farsi prendere dalla "paralisi dell'analisi" è peggio che non prendere alcuna decisione. Siamo tutti umani. Fai del tuo meglio e vai avanti con la vita.
Semaj,

1
vacillare: alternare o vacillare tra opinioni o azioni diverse; essere indecisi.
TankorSmash,

10
+1 per "
copriti inventando

2
@emodendroket Windows Workflow Foundation.
MetaFight,

2
Se il tuo problema non è mainstream, non aspettarti che le soluzioni mainstream funzionino bene. È qui che il disaccoppiamento e la flessibilità sono cruciali . Cerca framework / librerie che ti consentano di fare facilmente le tue cose invece di farti diventare un calzolaio qualcosa nelle loro aspettative quando non sembrano anticipare ciò che devi fare.
jpmc26,

19

Può sembrare che stia andando controcorrente, ma di recente ho letto il libro Creativity, Inc. di Ed Catmull e c'era un bel paragrafo che affrontava questa situazione:

Interviene Andrew Stanton. Ad Andrew piace dire che le persone devono sbagliarsi il più velocemente possibile. In una battaglia, se ti trovi di fronte a due colline e non sei sicuro di quale attaccare, dice, la scelta giusta è sbrigarsi e scegliere. Se scopri che è la collina sbagliata, girati e attacca l'altro. In quello scenario, l'unica via inaccettabile è correre tra le colline.

Sono sicuro che può essere applicato anche per la tua situazione. Forse oggi puoi prendere la decisione scegliendone una e iniziare a lavorarci su. Se funziona, allora avrai qualcosa di pronto in quei due giorni e dirai: "Ho scelto questo e posso mostrarti cosa possiamo farci perché ho eseguito alcuni test ...". Se noti in un giorno che la soluzione scelta non ne vale assolutamente la pena, puoi sceglierne una diversa e lavorarci su il giorno successivo. Lo scenario peggiore è che utilizzerai entrambi i giorni per testare due piattaforme, scoprendo che nessuna di esse funziona, ma alla fine è la risposta giusta, vero? Elimina l'erba, elimina le possibili scelte sbagliate, quindi qualsiasi decisione successiva sarà molto migliore della precedente. Lo scenario migliore è che tu '

Ovviamente non padroneggerai nessuna piattaforma in due giorni, ma sceglierne una al più presto ti darà sicuramente una prospettiva migliore su come funziona (molto più che leggerlo) e ti porterà a una risposta migliore.


12
Anche se sono d'accordo con te a livello globale, a volte correre in avanti su un campo di guerra è piuttosto suicida.
Flot2011,

Nessuno ha parlato di fretta però. Non ho mai detto di andare dal capo oggi e dire: "Ecco la soluzione. Proprio qui e proprio ora". Invece sto proponendo di prenderne uno in testa e provare a eseguirlo e armeggiare con esso. Semplicemente leggerlo e discuterne con qualcun altro non farà il trucco. Credo che andare avanti e provarlo porterà a una scelta di qualità molto più elevata.
Michal,

6
@ Flot2011 anche se hai un MBA, rimani dove sei e manda tutte le tue truppe a combattere una collina. Se muoiono tutti, oh beh, ottieni più truppe e continua, ma questa volta dicendo che la tua esperienza come generale ti rende molto più ... meritevole di uno stipendio mostruosamente maggiore.
gbjbaanb,

1
"Scegliere un APPENA POSSIBILE, quindi prototipo" mi sembra un pessimo consiglio in questa situazione. Sì, la prototipazione è importante, ma richiede anche tempo. I problemi non banali hanno spesso più di 2 possibili soluzioni e 2 giorni non sono sufficienti per prototipare diverse tecnologie.
meriton - in sciopero il

@meriton Sento quello che vuoi dire - sono d'accordo, la prototipazione richiede molto tempo. Non ho dichiarato esplicitamente "fare prototipazione" - ecco perché ho scelto con cura la parola armeggiare - esplorare la piattaforma, scrivere un po 'di codice, aprire alcuni file di implementazione di base, vedere come funziona all'interno. È probabile che il decisore non ottenga tutti i dettagli giusti, ma per tentativi ed errori può sicuramente migliorare la qualità della decisione.
Michal,

10

gbjbaanb fa alcuni punti molto buoni. Ho solo pensato di aggiungere un po '.

È ovvio che non hai abbastanza tempo per prendere una decisione perfettamente informata. L'unica opzione è cercare di prendere una decisione che riduca al minimo il dolore futuro. Suggerirei:

  1. Documentare chiaramente la natura della situazione: inviare un'e-mail al / ai proprio / i dirigente / i e ai propri dirigenti e parti interessate Spiega che il problema che ti è stato assegnato è difficile ma che sei disposto a dare il massimo. Tuttavia, tenuto conto dei rigorosi vincoli temporali, non è possibile garantire che i risultati ottenuti siano ottimali.

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

  3. Come accennato in precedenza da gbjbaanb, mitiga i tuoi problemi di porting e rischi utilizzando un'architettura liberamente accoppiata. Se tutto va a forma di pera con una delle tue scelte tecnologiche, questo renderà più semplice lo scambio.

Sono stato nella tua situazione prima e alla fine si è trasformato in un incubo politico. Quando il sistema non funzionava magicamente la gente iniziava a puntare le dita e le cose si facevano brutte. Ecco perché la mia raccomandazione n. 1 è di documentare chiaramente che hai fatto del tuo meglio contro probabilità impossibili .

In bocca al lupo :)


17
Ri: # 1. A nessuno piace un perdente piagnucoloso, quindi evidenzia che hai fatto del tuo meglio contro circostanze impossibili, quindi sembri un vincitore proattivo che gioca a squadre! Alla direzione piace quel genere di cose. Per inciso, ci sono molte ragioni per cui la grande riscrittura non funziona, la scelta di una tecnologia piuttosto che di un'altra è di solito il minimo problema.
gbjbaanb,

Sì, ho capito che era un po 'lamentoso, quindi l'ho modificato.
MetaFight,

Personalmente, sarei più specifico di "non ottimale", in quanto non specifica la gravità dell'incertezza. Un manager con una mentalità "non deve essere perfetta, ma abbastanza buona" ignorerà allegramente questo avvertimento, ignaro del fatto che intendevi dire che la tecnologia potrebbe non essere abbastanza buona.
meriton - in sciopero il

3
Invece, vorrei identificare i rischi concreti e li inoltrerei alla direzione. Ad esempio: "In base alle nostre attuali conoscenze, riteniamo che la tecnologia A sia la scelta migliore. Tuttavia, a causa della breve scadenza, non siamo stati in grado di verificare che questo approccio sia in grado di gestire il carico di lavoro previsto da questo sistema". Il management può quindi accettare il rischio o ridurlo ordinando ulteriori analisi.
meriton - in sciopero il

+1 per il punto n. 2. Scegli una soluzione che abbia una comunità matura e ben sviluppata. Se stai bene più di una di queste soluzioni, puoi sempre consultare forum, blog, post, domande online ecc. E scoprire quale si adatta a te meglio
Arnab Bhagabati il

5

Dal momento che ti hanno effettivamente concesso poco tempo per fare qualcosa di più che scegliere i candidati da un cappello, adotterò il seguente approccio.

Seleziona tecnologie che:

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

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

Inoltre, resisti all'impulso di utilizzare la tecnologia X senza ulteriori analisi semplicemente perché Fred lo sviluppatore l'ha usato in passato. È improbabile che si adatti perfettamente, e se Fred passa a pascoli più verdi, ci sarà il tuo esperto di dominio.


Anche se la tecnologia X è abbastanza adatta e Fred è disposto a educare gli altri sviluppatori, farlo potrebbe essere un buon modo per dare il via al team.
un CVn

Di sicuro - se spunta le altre caselle ...
Robbie Dee il

4

2 giorni sono un periodo molto breve per prendere quel tipo di decisione, ma dal momento che devi farlo nella seguente lista di 2 giorni,

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

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

Per ogni alternativa scopri 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 ciascuno.

E poi pensa a come si può fare la distribuzione 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.


4

Per quanto mi piaccia imparare e sperimentare nuove cose, sotto vincoli di tempo l'opzione migliore è sempre quella di cercare qualunque cosa sia o si senta più a proprio agio lavorare. Attieniti a ciò che sai.

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


2

Fai un elenco dei fattori che dovrebbero essere scelti, cose come: sicurezza delle prestazioni costo facilità d'uso capacità di fare X capacità di fare familiarità con gli sviluppatori Y time to market ecc.

Questo dovrebbe richiedere meno di un'ora (in realtà dovrebbe richiedere meno di 15 minuti), quindi siediti con la direzione e fai in modo che diano la priorità a questi fattori. (Le possibilità che le loro priorità e le tue siano le stesse sono remote anche se puoi guidare la loro scelta in qualche modo con suggerimenti sulle priorità.) Ora sai cosa valutare sulla tecnologia.

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

Quindi leggi abbastanza per fare una buona ipotesi su come ciascuna delle scelte si adatta alle loro 3-4 priorità 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 qualsiasi cosa numerica ti piaccia). Ora hai un punteggio numerico per ogni possibilità. Generalmente sarà ovvio quale soddisfa meglio le priorità assegnate. Ancora meglio, ora hai qualcosa di analitico da prendere per dimostrare la tua scelta. Di solito compreranno a tua scelta perché hai i numeri per supportarlo. Se i numeri non lo supportano, allora devi chiederti perché preferisci l'altro e andare con il migliore numericamente o rivisitare i numeri assegnati.

Concentrandoti su quali sono le vere priroiti della scelta, puoi dedicare molto tempo alla ricerca. Probabilmente puoi avere un'ipotesi entro un giorno e poi avere un giorno rimanente per prendere le prime 2 possibilità e scaricare le versioni di prova, se necessario, e giocare un po 'con loro.


Quello che hai descritto è chiamato "processo di gerarchia analitica". È la tecnica più comune che ho visto utilizzata per eseguire studi commerciali. Il suo punto di forza è che aiuta a decidere l'opzione migliore in modo abbastanza obiettivo e tiene conto di tutte le opinioni degli stakeholder. Sono stato sorpreso di vedere quanto complicati i siti web facciano sembrare questa tecnica. Non lasciarti influenzare dall'apparente complessità mostrata dai siti Web, è davvero molto facile da usare. Comunque, dato che non sono riuscito a trovare un buon esempio, suppongo che Wikipedia sia un buon punto di partenza come qualsiasi en.wikipedia.org/wiki/Analytic_hierarchy_process .
Dunk,

1
Ci vogliono meno di dieci minuti per impostare la struttura in un foglio di calcolo (la parte più complicata è decidere su quali fattori vuoi confrontare le priorità) e quindi è facile riempire.
HLGEM

È davvero così facile. Facciamo anche sondaggi in cui tutti assegnano un valore a ciascuna categoria per determinare ciò che tutti pensano sia più importante in modo da poter applicare pesi a ciascuna categoria. Dopotutto, il team del software ritiene che la velocità e la memoria del processore siano sempre la massima priorità, ma i ragazzi dell'hardware sembrano avere opinioni opposte perché la durata della batteria è importante per loro. Naturalmente, il cliente conta in genere almeno la metà dei pesi di valutazione e non si preoccupa delle preoccupazioni relative a software o hardware. Le descrizioni online sembrano davvero complicate quando non lo sono.
Dunk,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.