Cosa succede se non riesci a risolvere un problema? [chiuso]

58

Sono a un anno dall'università e non vedo l'ora di risolvere problemi pratici. Soprattutto quelli non banali che richiedono un po 'di ricerca e molto pensiero.

Ma allo stesso tempo, questa è anche la mia più grande paura - trovarmi di fronte a un problema che non sono in grado di risolvere, non importa quanto ci provi. E con la pressione di consegnare il codice alle scadenze imminenti proprio dietro l'angolo, sembra un po 'spaventoso guardarlo dai parchi giochi sicuri di uni (dove la cosa peggiore che può succedere è che devi rifare un corso o un esame). / p>

Quindi, per coloro che sono stati nel settore per un periodo di tempo più lungo, cosa accadrebbe se ti venisse detto di risolvere un problema che non potresti? È successo, e se è così, cosa è successo? Hanno appena lasciato cadere e ha detto "Oh bene, suppongo che possiamo accontentarci di qualcos'altro"? Ci sono state conseguenze? Sei stato rimproverato o addirittura licenziato?

    
posta gablin 28.08.2012 - 02:57
fonte

22 risposte

56

Prima di tutto, la tua paura è molto sana e normale. Ecco le mie riflessioni dopo circa 15 anni nel settore del software.
Ecco alcune domande da porsi:

  1. capisci il problema?
  2. Sai che il problema è irrisolvibile (entro i limiti di tempo / budget)?
  3. Non sai come risolvere il problema?
  4. Il tuo cliente / capo chiede l'impossibile.
  5. Ne vale la pena? (ROI)
  6. È un REAL problema?

1) Prima di tutto, assicurati di aver compreso il problema. Non esistono domande stupide. Comprendi ciò che il tuo cliente / capo ti sta chiedendo contro ciò di cui hanno bisogno?

2) Questo accadrà. "Costruisci un ponte entro domani" . Assicurati di sapere per certo che un problema è irrisolvibile nei tuoi limiti. Il tuo cliente / capo potrebbe essere flessibile sul tempo / budget e questi possono essere modificati per darti più tempo / budget.

3) Se il problema è comprensibile e i vincoli sono entro limiti ragionevoli, e c'è una tecnologia che può risolvere il problema, ma non ne sai abbastanza ... questo è ciò che StackOverflow e Internet sono per. Assicurati di fare prima la tua ricerca. Prova a fare domande esplicite che hanno risposte quantificabili. Chiedi ai tuoi pari. Avere una sessione di progettazione.

4) Questa è una variante della risposta numero 2. sembra come se il tuo cliente / capo stia chiedendo l'impossibile. Fare qualche ricerca. Non dire mai che il problema è irrisolvibile, a meno che tu non sappia esattamente perché e tu possa chiarirlo.

5) ROI sta per Return on Investment. Questo si riferisce a un investimento nel tempo. Il tuo tempo!. Il problema è abbastanza importante da risolvere per garantire il tempo necessario per la ricerca e la risoluzione del problema. Discutere di questo con il tuo cliente / capo

6) È un vero problema. I clienti, spesso le volte, capiscono quello che vogliono, ma non necessariamente capiscono di cosa hanno bisogno. Cerca di capire di cosa ha realmente bisogno il tuo cliente / capo e discuti con loro.

Spero che queste linee guida ti aiutino.

    
risposta data 07.12.2010 - 17:16
fonte
57

Due cose da ricordare se sei bloccato con un problema apparentemente irrisolvibile:

  • Fai sapere agli altri che sei bloccato il prima possibile. Li aiuterà a regolare la stima in tempo prima che sia troppo tardi.

  • Se vedi che un modo per risolvere un problema non funziona, rilascialo prima che tu abbia perso troppo tempo. Chiedi aiuto o prova un approccio diverso. Non si tratta di dimostrarti duro e intelligente, ma di fare qualcosa.

risposta data 07.12.2010 - 15:59
fonte
26

Vado a StackOverflow ;)

Ma a parte gli scherzi, non temere l'ignoto. Tutta la tua carriera sarà di fronte all'ignoto, perché se lo hai già risolto, non sarà un problema la prossima volta.

    
risposta data 23.05.2017 - 14:40
fonte
10

Dovrò andare con una risposta semplice: chiedo aiuto. Proprio come gli altri a volte mi chiedono aiuto quando sono bloccati a cercare una soluzione per qualcosa.

Modifica: devo menzionare il fatto che spesso trovo la soluzione solo descrivendo il problema a un collega o, talvolta, anche quando inizio a pubblicare una domanda su siti come StackOverflow.

    
risposta data 07.12.2010 - 16:20
fonte
9

Guarda da diverse angolazioni

Mi sono imbattuto in questo molte volte, di solito quello che succede è:

  • You have a problem, initially you have an idea in your head how you would solve it.
  • When it comes to actually implementing your solution, it turns out that is doesn't work (probably due to the weak model of the actual problem).
  • After struggling to solve the problem, be it more research or asking others. None of it works, the pure frustration!

Finalmente scegli ciò che non vuoi fare - >

"The Dirty Hack"

Funziona, ma ti senti sporco ...

    
risposta data 07.12.2010 - 16:00
fonte
5

Di solito, ottengo qualcuno più intelligente di me per sistemarlo. Lo fa e lui è il mio capo. Mi sento stupido. Andiamo avanti.

    
risposta data 07.12.2010 - 20:38
fonte
5

Dipende dal motivo per cui non riesci ...

  • logicamente impossibile: discutine con chi ha scritto i requisiti, forse c'è un equivoco. Esempio: ad un certo punto, la specifica dice che l'applicazione deve apparire e sentirsi nativa su tutte le piattaforme (Windows / Linux / Mac), e in un altro punto, dice che il programma deve apparire esattamente identico su tutte le piattaforme

  • tecnicamente impossibile: rivalutare gli strumenti con i quali stai lavorando, forse non sono appropriati. Discuti il problema con i tuoi colleghi e il project manager. Esempio: requisiti hard realtime in un ambiente in cui la garbage collection può interrompere l'esecuzione per un tempo indeterminato

  • prestazioni insufficienti: forse stai utilizzando l'algoritmo sbagliato, o forse il problema è troppo difficile (ad esempio NP-difficile) e i requisiti non ne tengono conto. Rivaluta l'algoritmo che stai utilizzando, forse c'è un modo più veloce. Discuti il problema con i tuoi colleghi e il project manager. Considera di passare a un'euristica abbastanza buona anziché a un risultato perfetto. Esempio: ottimizzazione del percorso con dozzine o anche centinaia di nodi

  • semplicemente non sai come farlo: chiedi ai tuoi colleghi, chiedi stackoverflow, cerca su internet. Contatta il supporto dello strumento / lib che stai utilizzando. Discutilo con il project manager.

  • dovrebbe funzionare, ma non funziona, e non hai idea del perché: Riforma il programma per renderlo più testabile. Considerare le condizioni di gara, sono spesso la causa di bug difficili da trovare. Chiedi aiuto ai pari, quattro occhi ne vedono più di due. Controlla su internet i bug conosciuti negli strumenti / librerie che stai utilizzando.

risposta data 08.12.2010 - 10:55
fonte
4

Penso che le altre persone sottolineano bene come affrontarlo in modo professionale. Vorrei dire come affrontare il sentimento personale come la frustrazione, la paura.

In conclusione, sarai FINE anche se non risolvi i problemi in modo tempestivo. La vita va avanti.

A volte, il programma sarebbe stato spinto. Il progetto avrebbe avuto esito positivo o fallito. Potresti essere licenziato e poi avere un ottimo lavoro. Non si sa mai.

Non fraintendermi. Non significa che sia OK lasciare che il problema sia lì. Tutto ciò che possiamo fare è fare del mio meglio e lasciarlo andare.

A volte, penso che la frustrazione, la paura di non risolvere il problema sia la mia vita come sviluppatore medio.

    
risposta data 07.12.2010 - 18:36
fonte
2

Non sono sicuro di dire che non avrei potuto risolvere un problema, ma ci sono stati casi in cui ho rinunciato a provare a risolvere un problema. Dopo aver passato molte ore nel tentativo di correggere un bug o implementare alcune funzionalità che non ho idea di come farlo, potrei dire a qualcuno della mia squadra, capo squadra o manager, "Sono bloccato su questo. vuoi che faccia? " in modo che sappiano dove sono. Potevano dire: "Continua così, pensiamo che ce la farai" o "Passa a qualcos'altro che non è così importante" o qualche altra cosa e poi saprò cosa dovrei fare.

Ho riscontrato bug che non ho risolto e alcune funzionalità che non sono state completate, certo. Mentre posso provare a fare qualcosa, non tutto è in mio potere per risolvere in un tempo ragionevole. Un punto chiave in questo è avere una comunicazione in modo che i tuoi superiori sappiano dove ti trovi.

Detto questo, ho avuto un paio di volte in cui mi sono imbattuto in circostanze piuttosto particolari:

  1. Mentre lavoravo in una grande banca canadese a Toronto, mi sarebbe stato chiesto di fare ogni genere di roba che non sapevo come fare quando mi è stato affidato il compito. Ad esempio, mi è stato chiesto di testare questo metodo per la protezione dei laptop in cui i tasti "Esc" e "Enter" sono stati scambiati all'avvio e con la sequenza di tasti corretta il laptop sarebbe stato nuovamente utilizzabile che è sembrato bizzarro cercare di capire fuori, "Funzionerebbe? Come faccio a sapere che questo sarebbe o non andrebbe bene con gli utenti?" C'erano altri compiti che o non avevo l'hardware o altre risorse per farlo. Allo stesso tempo è stato piuttosto educativo in quanto mi ha dato molte cose da notare su qualsiasi situazione lavorativa futura per evitare problemi. Cose come assicurarmi quando sono pagato, come viene monitorato il mio tempo e qui sono stati illustrati con grande dettaglio altri problemi di comunicazione che non ho davvero dimenticato.

  2. Mentre lavoravo presso un fornitore di servizi applicativi a Calgary, mi è stato dato questo progetto di provare a creare una copia di un altro sito web all'interno della nostra applicazione interna che abbiamo venduto come servizio. Un punto chiave qui è che non mi è stata data una linea temporale o suggerimenti su quale parte fare per prima, solo una ricerca generale e un mese dopo mi è stata chiesta una demo proprio mentre stavo avendo una brutta reazione ad alcuni antidolorifici. Quella reazione è durata una settimana che ho improvvisamente smesso di lavorare e poi la settimana successiva sono andato a un evento Microsoft che è stato l'ultima goccia quando sono stato licenziato il giorno successivo. Qualcosa da notare qui è come ho avuto un rapporto piuttosto scadente con il mio capo, perché ogni volta che si avvicinava alla mia zona il mio pensiero immediato era: "Ora cosa c'è che non va?" che tendeva a non essere una cosa abbastanza salutare da avere come reazione a qualcuno molte volte.

risposta data 07.12.2010 - 16:21
fonte
2

Come altri hanno già detto, la comunicazione è fondamentale: far sapere alle persone (che saranno colpite) quando sei bloccato: il tuo capo, i membri del team, i clienti, ecc.

Un abile collaboratore una volta mi ha insegnato che il successo ha le sue radici in due cose:

  1. Rapporti
  2. Le aspettative

Avere una buona relazione, suppongo, è una funzione di buona comunicazione e di anticipare le aspettative.

    
risposta data 07.12.2010 - 19:55
fonte
2

Seguo il princinple Polya:

"If there is a problem you can't solve, then there is an easier problem you can't solve: find it."

George Polya

La bellezza del principio è che ad un certo punto ci sarà un problema abbastanza piccolo e che sarai in grado di risolvere il problema, sperando che se hai fatto le cose a posto, ti permetterà di avviare una soluzione al problema originale . Questo principio non mi ha ancora deluso.

    
risposta data 08.12.2010 - 06:21
fonte
1

Il " cerca aiuto "Le risposte sono decisamente corrette. È altamente improbabile che tu sia la prima persona ad aver mai incontrato un particolare problema.

Ma come un esperimento, se non c'è aiuto? Cosa succede se devi risolvere il problema da solo? La più importante capacità di problem solving è la capacità di identificare e sfidare le proprie ipotesi . Se riesci a enumerare le tue ipotesi su un problema uno per uno ed eliminarne uno a turno, alla fine ti imbatterai nell'ipotesi errata e di conseguenza si apriranno nuove possibilità per una soluzione.

(A proposito, questo è anche l'approccio migliore quando non riesci a vedere una risposta a un problema che ottieni in un colloquio di lavoro. Elenca in modo verbale le tue ipotesi e determina quale è sbagliato e poi riattacca il problema Quasi tutte le "domande sui trucchi" si basano su supposizioni naturali ma errate).

    
risposta data 12.04.2017 - 09:31
fonte
1

Chiedere aiuto è davvero la risposta migliore, ma ecco un po 'più che può essere utile.

So for those who have been in industry for any longer length of time, what would happen if you were told to solve a problem that you couldn't? Has it happened, and if so, what did happen? Did they just drop it and said "Oh well, guess we can make do with something else"? Were there consequences? Were you reprimanded, or even fired?

Sì, è successo a me, e no, non sono mai stato rimproverato o licenziato per questo, perché ...

Nel settore industriale, si tratta di risolvere i problemi nei tempi e nel budget e i responsabili decenti capiscono che non è sempre possibile.

Quello che succede veramente è che il tuo manager dice: "Mi piacerebbe che tu facessi X, cosa pensi che ci vorrà?" E puoi dare molte risposte. Quelli buoni includono:

  • Ho fatto qualcosa di molto simile a questo, quindi penso che ci vorranno tre settimane e un valore di $ 3.000 per testare l'hardware.
  • Ho qualcosa in genere simile a questo. Quindi fammi pensare e tornare da te questo pomeriggio.
  • Non ho mai fatto nulla di simile. Quindi permettimi di effettuare una ricerca e ti ricontatteremo domani.
  • Nessuno sul pianeta lo ha mai fatto. Se vuoi esaminarlo, mi occorreranno due settimane per fare abbastanza esperimenti per fare una stima.

È compito del manager decidere se e come procedere. Se scelgono di procedere, è il tuo lavoro soddisfare le tue stime, o far sapere al manager se c'è un impedimento. Finché lo fai, in un'azienda ragionevole non ci saranno conseguenze negative.

Naturalmente, ci sono anche aziende irragionevoli che non ti danno il tempo o le risorse per portare a termine il tuo lavoro. Ho lavorato in alcuni di questi e a tutti sono stati consegnati problemi che non potevano essere risolti nei limiti dell'azienda. Uno di loro ha licenziato circa il 98% del personale programmatore entro otto mesi, e questa è stata certamente una conseguenza, ma non è stata diretta personalmente da me, e continuo a considerare il mio capo e il suo capo da lì buoni amici.

    
risposta data 07.12.2010 - 22:33
fonte
1

Ci sono un sacco di diversi tipi di problemi su cui verrai confuso e molti hanno diversi modi per gestirli.

Un tipo di problema è l'implementazione di qualcosa che non hai mai visto prima, come una strana API audio o qualcosa del genere. In questo caso, chiederei su SO, sul serio.

Un altro è un problema molto grande da risolvere. Questo tipo di problema può essere affrontato in modo iterativo. Ti dicono "Implement Humongous". Lo guardi e scrivi tutti i passaggi che riesci a capire. Quindi abbatti i passaggi complicati in piccoli passi. Quando sei costretto a pensare a passi più piccoli, diventano più chiari. Se incontri difficoltà tecniche, prova un'implementazione di prova e chiedi qui se necessario.

Uno dei problemi più fastidiosi sono le richieste scarsamente specificate. Vogliono solo una cosa che fa "x" e non ti dicono come dovrebbe essere fatto. Per questi un buon approccio è prototipare un'interfaccia (tipicamente una GUI) e permettere a qualcuno di giocarci.

Poi ci sono vincoli temporali che non possono essere soddisfatti. Ciò comporta spesso la modifica delle aspettative e la fornitura di prototipi funzionali.

In generale, in un modo o nell'altro troverai le tue idee. È spaventoso, ma una volta che ci sei dentro puoi quasi sempre trovare un modo.

La soluzione migliore potrebbe essere dipingere semplicemente le parole "Non lasciarti prendere dal panico" all'esterno del tuo laptop. E non dimenticare il tuo asciugamano.

    
risposta data 08.12.2010 - 00:44
fonte
1

La mia sequenza di risoluzione dei problemi (ogni spet successivo viene eseguita solo se il precedente non ha funzionato):

  1. Prova su google
  2. Chiedi a qualcuno
  3. Cerca SO direttamente (bypassando Google)
  4. Pensate
  5. Fumo (== elimina la testa)
  6. Fai una domanda su SO
  7. Attendi fino al mattino (== cancella la testa ancora di più)
  8. Usa quel trucco sporco e sentiti male con me stesso: (

Problemi gravi vengono risolti nei passaggi 5-6.

Di solito i problemi veramente brutti di solito hanno bisogno di un po 'di tempo (il passo 7 è la soluzione alla maggior parte dei problemi "sembra-che-non-posso-fare-qualsiasi cosa"). E intendo: passare a un'altra attività per il resto della giornata e cercare di risolvere il problema per prima cosa al mattino. Questo fa miracoli.

E solo allora arriva il punto 8.

    
risposta data 08.12.2010 - 13:48
fonte
0

Non ho sentito nulla di simile a questo. Prima di tutto non ti viene mai dato un problema che non può essere risolto affatto. Il problema potrebbe essere difficile e potrebbe richiedere del tempo per risolverlo. Quando viene dato un problema, dovrai dire che questo è il tempo che richiedo. Se nella tua ricerca pensi che questo problema non possa essere risolto, devi alzare una bandiera e dire al tuo manager che questo problema richiederà più tempo, o è davvero difficile da risolvere. È tutto sul programma. Se prometti qualcosa e non sarai in grado di consegnare, allora è un problema. Ma se continui a raccontare il tuo stato e le tue preoccupazioni, è responsabilità del manager prendersene cura. Dovrebbe reindirizzarti verso una persona appropriata che può aiutare o modificare il programma.

    
risposta data 07.12.2010 - 16:02
fonte
0

C'è un ottimo consiglio qui! Il mio valore di due centesimi è; Non lasciatevi travolgere dal GRANDE problema, non dimenticate che la parte eccitante e stimolante della risoluzione di un problema è scomposizione in una serie di sotto-problemi gestibili e più comprensibili, che a loro volta si dividono sempre più in piccoli sotto-problemi. Ogni buon programmatore lo farà tipicamente minuto per minuto mentre sta creando codice (usando funzioni, metodi, sotto-routine ecc. Per aiutare a ridurre la complessità complessiva di una sezione di codice) e questa metodologia si applica in genere a qualsiasi GRANDE problema che tu faccia nella vita (non solo al lavoro).

    
risposta data 07.12.2010 - 22:33
fonte
0

Dipende da quale sia il problema specifico, ovviamente. Ma la risposta può essere una delle seguenti:

  1. Trova una soluzione alternativa / sostituzione
  2. Compra una soluzione commerciale che corrisponda a ciò che desideri
  3. Non mollare e continua a lavorarci finché è necessario finché non ci riesci .

Il numero 3 potrebbe richiedere del tempo libero dal problema e di rivederlo settimane o mesi dopo. Questo spesso aiuta.

    
risposta data 07.12.2010 - 22:36
fonte
0

Nella mia esperienza, a volte c'è un problema che non puoi risolvere, almeno in termini di limiti di tempo. Quindi, cercando aiuto il prima possibile, dopo alcuni tentativi di risoluzione non sei riuscito .

Ricorda la regola generale: guarda sempre il motivo per cui il capo ti ingaggia. Fai tutto ciò che pensi di poter fare per il miglior risultato di lavoro, e a volte è un rapporto di errore precoce (molto meglio di uno in ritardo).

In breve, se pensi di poter trovare la soluzione, sentiti libero di provare, ma dai la stima del tuo capo circa il rischio e il costo del tempo. È il loro problema ora.

    
risposta data 08.12.2010 - 09:09
fonte
0

Se progetti di centinaia di milioni di dollari possono fallire anche con persone esperte, non dovresti preoccuparti del tuo fallimento, dato che sei ancora uno studente. Ho avuto un problema su cui lavorare e ho scoperto che se è qualcosa su cui ti trovi bloccato, devi registrare ogni tentativo che hai fatto per risolverlo.

Questo aiuta:

  1. Prova dei tentativi fatti per risolvere un problema.
  2. Registrare questo tipo di errore è importante in modo da imparare da esso e non farlo di nuovo pochi giorni dopo pensando che funzionerà.
risposta data 08.12.2010 - 10:31
fonte
0

La mia esperienza è che un neolaureato non viene gettato nel profondo. Invece, farai parte di una squadra che include anche sviluppatori esperti.

Il mio consiglio sarebbe: usarli. Quando non sei sicuro su come affrontare un problema, o se vuoi sapere se la tua soluzione sta andando nella giusta direzione, discuta con loro. E se senti di essere bloccato da qualche parte, prendi uno dei ragazzi esperti e spiega il tuo problema e chiedi aiuto.

Molto spesso, solo spiegando il tuo problema si rivelerà una soluzione e spiegando che la tua soluzione potrebbe rivelare ugualmente difetti in essa.

    
risposta data 08.12.2010 - 12:28
fonte
0

Spesso questo accade perché non hai definito il problema in modo corretto e accurato. Forse stai cercando di risolvere una soluzione preconcetta invece del vero problema.

Il problema è solo ciò che osservi, non ciò che immagini.

"La mia auto insanguinata non si avvia" è un problema. "La batteria è scarica." è una soluzione preconcetta al problema di partenza dell'automobile. Anche testare la batteria non dimostra che sia l'unica causa del problema. A meno che tu non abbia effettivamente ricaricato o sostituito la batteria e abbia avviato la macchina con successo, non hai prove che la batteria sia la causa del problema.

Semplifica e continua a semplificare. Scomporlo in piccole parti. Se non riesci a risolvere quelle parti, distruggerle. Ti sentirai meglio. Quindi scomporlo in diverse piccole parti. Ciascuna di queste parti deve essere un fenomeno osservabile.

    
risposta data 19.12.2010 - 07:38
fonte

Leggi altre domande sui tag