it-swarm.it

Come posso migliorare la mia capacità di problem solving?

Tutti dicono la stessa cosa: "un vero programmatore sa come gestire problemi reali". Ma dimenticano come hanno imparato questa capacità o dove: non viene insegnato nelle scuole.

Cosa posso fare per migliorare la mia capacità di affrontare problemi di programmazione complessi? Quali strategie hanno funzionato per te? Ci sono aree specifiche su cui dovrei concentrarmi, come algoritmi o schemi di progettazione?

50
user12278

Alcune tecniche che potrebbero funzionare o meno:

  • Guarda le soluzioni esistenti a problemi comuni, ad es. modelli di progettazione. Forse trovi qualcosa di simile che ricorda almeno in parte il tuo problema. Cercare in rete.
  • Agisci come se il problema fosse già stato risolto e traccia ciò che segue alla soluzione da realizzare. Ad esempio, invece di progettare l'API per una classe, basta scrivere il codice che utilizza la classe, con le chiamate di metodo come si desidera e quindi implementare tale API.
  • Fai qualcos'altro, ad es. naviga in rete o gioca al solitario e attendi che si verifichi l'ispirazione.
  • Pensa alla persona che ti piace di più e fai finta di voler stupire con le tue capacità di problem solving. Quale sarebbe una soluzione estremamente impressionante?
  • Controllare il problema per contraddizioni intrinseche o requisiti contrastanti e dichiarare esattamente quali sono e quali compromessi potrebbero essere fatti. Spesso, quando esistono tali conflitti, ma non si è consapevoli, si tende a scartare una possibile soluzione dopo l'altra perché non è possibile soddisfare perfettamente tutti i requisiti.
  • Se hai già una possibile soluzione, ma ti sembra "sporco" (copia-incolla, variabili globali, codice spaghetti ecc.), Usalo comunque e miglioralo in seguito
25
user281377

Usa il pensiero in R-mode o L-mode come richiesto

La modalità R è l'approccio creativo e non verbale che comunemente associamo al subconcio. L-mode è l'approccio lineare, logico e verbale associato alla tua "voce interiore".

Se un problema sembra intrattabile, probabilmente è perché stai tentando di risolverlo utilizzando la modalità di pensiero errata. Per i programmatori, la modalità di pensiero predefinita tende ad essere la modalità L, quindi potrebbe funzionare per spegnerla temporaneamente e accedere alla modalità R.

Come accedere al modo di pensare in R-mode

Ci sono molti modi, ma forse prova il metodo Poincare (dal nome del famoso matematico).

Scrivi tutto quello che sai sul problema. Risolvi immediatamente tutti gli aspetti semplici (se presenti). Scegli un singolo elemento dall'elenco dei "problemi difficili" e poi vai a fare una passeggiata dove non sarai disturbato o distratto.

Non cercare di analizzare il problema durante la passeggiata, lascia che la tua mente vaghi e osservi eventuali immagini o sensazioni interessanti che potrebbero essere correlate al problema. Lasciateli fondere. Se l'ispirazione colpisce immediatamente, fermati e torna a scrivere l'intuizione che hai acquisito.

Risciacqua e ripeti fino a quando tutti i problemi hanno approfondimenti. Quindi inizia ad esplorare le intuizioni.

Raccomandazione del libro

Anche leggere Pragmatic Thinking and Learning può aiutarti a diventare un risolutore di problemi migliore. (Mi sembra di fare molto riferimento a questo libro di recente ...)

20
Gary Rowe

Chiedi a qualcun altro...

No sul serio. La tua più grande risorsa può essere la persona seduta accanto a te. Non chiedere loro nemmeno la risposta al problema, chiedi loro di sedersi accanto a te e di farti spiegare il problema.

Spesso lo risolvi mentre lo verbalizzi.

A volte l'altra persona pone una domanda o indica un dettaglio che sbloccherà la porta mentale.

Alla fine imparerai a verbalizzare le cose nella tua testa senza l'uso di un burattino e a individuare più rapidamente i dettagli chiave nel problema.

E se tutto il resto fallisce, potrebbero essere in grado di mostrarti una tecnica che non avresti mai pensato di usare.

17
gingerbreadboy

In realtà la mia risposta breve è "risolvere più problemi". Ma il punto è: concentrati davvero sui problemi e non mollare. Non chiedere aiuto su StackOverflow o altro. (Leggere StackOverflow è ovviamente ovvio!) Provaci finché non ottieni una soluzione quasi funzionante, quindi quasi raggiungi il tuo obiettivo. E continua fino a quando non avrai una soluzione soddisfacente.

Per me la risoluzione dei problemi è due cose:

  • strategia di problem solving
  • tolleranza di persistenza e frustrazione

Il punto 2 è davvero cruciale secondo me perché ti costringe a cambiare il tuo pensiero più a lungo rimani bloccato con un problema. Ti consente inoltre di dedicare più tempo alla risoluzione dei problemi, consentendoti di migliorare ancora di più le tue abilità. ;-)

A proposito, ti consiglio di leggere Edward de Bono. Sebbene abbia acquisito le mie capacità di problem solving principalmente studiando Fisica, la sua scrittura è davvero interessante.

Bene e il mio toolkit di risoluzione dei problemi è questo:

  • prova a caso qualcosa
  • leggere articoli/blog/post casuali sull'argomento di cui mi occupo (o un argomento strettamente connesso)
  • fare un bel disegno
  • dividere il problema in più problemi ma più semplici
  • fai qualcos'altro
  • Google qualcosa che è in qualche modo correlato al problema
  • parlare con gli altri del problema
  • fare un elenco TODO
  • annota le cose che conosci sull'effetto del problema in modo da poter trovare più facilmente gli schemi

Si noti che la maggior parte di questi strumenti può essere applicata in modo ricorsivo.

E il mio algoritmo è questo:

  1. Quale strumento del mio toolkit di risoluzione dei problemi ha più senso al momento?
  2. Problema non risolto? Continua con 1. ;-)

Il passaggio 1. è una decisione difficile, ma prendi decisioni migliori più ti alleni.

Oh e quasi dimentico l'ingrediente più importante:

Pensa positivamente all'intero processo. Non pensare "Spero che XYZ ora risolva il problema." Piuttosto pensa: "Se XYZ non funziona, allora so che YZX non può essere la fonte del problema e controllerò se ZYX funziona". La risoluzione dei problemi può essere divertente a volte in particolare se il processo di ricerca di un problema finisce per essere elegante e informativo.

9
Philip

Inizia a lavorare anche sull'abilità di identificare i problemi. A volte devi riconoscere che c'è un problema prima di poterlo risolvere. A scuola richiedono troppe risposte e non abbastanza domande da parte degli studenti.

Trova persone intorno a te che risolvano i problemi e chiedi loro come vanno.

Preparati a sbagliare. Non migliorerai se li tieni tutti per te e non sarai di alcuna utilità.

7
JeffO

Il vantaggio principale di una formazione informatica per ingegneri del software è la capacità di creare e comprendere astrazioni. Le astrazioni vengono utilizzate per incapsulare funzionalità comuni, come i metodi della classe String, in pacchetti stretti e riutilizzabili che ci consentono di concentrarci sul problema più grande.

Impara a riconoscere e creare astrazioni:

Ma soprattutto, le astrazioni ci insegnano come scomporre un problema in blocchi più piccoli e più gestibili. Se combinato con un background scientifico, la combinazione di tali abilità può creare un ingegnere in grado di tagliare il rumore e arrivare al nocciolo del problema.

Impara a risolvere i problemi usando il metodo scientifico:

Durante la risoluzione dei problemi di un'applicazione di produzione in cui esiste un problema difficile da trovare, a volte aiuta effettivamente a rompere ulteriormente l'applicazione (in un ambiente non di produzione) al fine di eliminare diverse variabili per isolarne ed eliminarne una.

In sintesi, il metodo scientifico, appreso dall'assunzione di tutti gli elettivi di Fisica e altri elettivi di scienza richiesti per una laurea in informatica, aiuta a risolvere questi problemi come se stessimo provando un placebo e un nuovo studio farmacologico su una serie di volontari. Come gli scienziati che a volte devono peggiorare qualcosa per renderlo migliore, a volte noi ingegneri dobbiamo fare lo stesso.

Pensare scientificamente in questo modo - in generale - può derivare solo dall'esperienza in un contesto scientifico. A volte risolvere un problema non può essere percepito come un percorso lineare da A a B.

In breve, studia informatica, studia altri campi scientifici, impara la programmazione funzionale. Questi ti aiuteranno a pensare come uno scienziato e a pensare fuori dagli schemi.

4
jmort253

Penso che quello che stai cercando sia l'euristica informatica.

Quando si tratta di ciò che il 99% di noi fa nelle trincee, non c'è davvero nulla di nuovo sotto il Sole. Quindi potresti vedere un problema e riconoscerlo come un problema DP o un altro come un problema che potrebbe trarre vantaggio dalla memoizzazione, ecc ...

Come acquisisci questa conoscenza? Un buon livello CS è un buon punto di partenza ... Non ingegneria del software o sistemi di informazione, ma quella roba che la maggior parte degli studenti si lamenta del "non essere pratico".

Puoi farlo da solo, ma probabilmente sarà più difficile. Vorrei iniziare con questi due corsi:

Introduzione agli algoritmi

Grandi idee in CS teorico

3
red-dirt

Dipende tutto dal tipo di problemi che stai cercando di risolvere, ma imparare a pensare logicamente se non lo fai già è una buona cosa.

Tutto sommato, e mi odierai per averlo detto, ma la pratica rende perfetti. Non sono stato tirato fuori dall'utero di mia madre sapendo come essere un buon risolutore di problemi e nessun altro l'ha fatto. Devi esercitarti e imparare a fare le cose da solo. Se sei ancora a scuola e non hai lezioni di programmazione/informatica, la matematica e la scienza sono anche abbastanza buone per favorire lo sviluppo di queste abilità.

3
user7007

Le mie risposte riguardano specificamente la codifica ma possono essere applicate a qualsiasi cosa.

  1. Allontanati dalla tastiera. Parla a piedi, corri, parla con un collega davanti a un caffè
  2. Diventa 10 anni più vecchio! La mia esperienza mi ha aiutato enormemente.
  3. Usa il taglio binario. Dividi il problema in due e restringilo: ripeti.
  4. Ricorda Sherlock Holmes: quando hai eliminato il possibile, qualsiasi cosa rimanga (non importa quanto strana) sia la risposta
  5. Controlla i tuoi dati di test. Ben oltre la metà dei miei problemi davvero difficili sono stati causati da dati errati e non da codici o algoritmi difettosi.
2
Fortyrunner

In termini di pratica, posso dirti cosa faccio. Sono più interessato alla matematica applicata, che alla programmazione, ma la matematica applicata applicata all'informatica è una sorta di programmazione. Vedo problemi e soluzioni in giro. Prima (o talvolta dopo, se dico che il mio lavoro richiede una soluzione tempestiva), collegandomi a una soluzione nota o a una libreria di codici esistente, mi chiedo: "Se questo fosse un problema vergine, non sarai in grado di trovare una soluzione in scatola, come procederesti? " Se la risposta è piuttosto semplice, prendi in considerazione la possibilità di scrivere una soluzione (analitica o un programma informatico per risolverlo). Ignora i casi finali complicati, sei interessato a esaltare approcci e algoritmi, non reinventare una libreria esistente. Se la soluzione richiederà troppi sforzi, non programmare la soluzione completa, ma almeno pensare al tipo di strutture dati e ai metodi che vorresti usare. Pensa anche a metodi alternativi.

1
Omega Centauri

Vengo da un background scientifico, quindi quando guardo un problema, tendo ad usare le tattiche del metodo scientifico . In particolare mi piace impostare "esperimenti" basati su ipotesi e usare "controlli", quindi costruirò qualcosa e poi cambierò/aggiungerò solo 1 cosa su di esso e vedrò quale sarà il risultato di quel cambiamento/aggiunta e se io ' Non sto ottenendo il risultato di cui ho bisogno, lo cambierò e cambierò qualcos'altro. Funziona bene per la risoluzione dei problemi/debugging del codice. A volte ottieni la risposta che cerchi, ma impari sempre qualcosa di nuovo facendolo anche quando fallisci. Mi piace anche imparare attraverso riduzionismo - prendere qualcosa che già esiste (sempre buono per iniziare con qualcosa che potresti non capire, ma sai che funziona) e mi sembra complesso e vedere se riesco a romperlo nelle sue parti componenti e scopri come funzionano prima. A volte è più facile per il mio cervello gestire l'apprendimento in questo modo invece di affrontare un problema in modo olistico e posso usare quella conoscenza per costruire altre cose complesse simili da solo. Consiglio anche di leggere libri sulla logica e il ragionamento scegliendo opere di pensatori sia classici che moderni (inizia con Aristotele e sali su). Possono darti alcune delle basi della logica di base che puoi usare per aiutare nella risoluzione dei problemi nei computer. E, naturalmente, se non riesci a risolvere un problema e ci hai lavorato per un po ', fai una pausa al cervello. Rimuginare su un aspetto particolare di un problema è talvolta dannoso. Tutti hanno bisogno di pause :)

1
kelleystar

C'è un ottimo domanda SO su questo.

La mia risposta è stata:

Il modo migliore per migliorare è esercitarsi!

Iscriviti al feed RSS all'indirizzo: http://www.mensa.org.uk/puzzles/ e prenditi il ​​tempo necessario per completarli quando escono.

Un calendario da tavolo puzzle-a-day (ad es. http://www.calendars.com/product.asp?PID=1&MGID=-1&IID=46387&cm_mmc=Affiliate_Program--performics--k137666-_-DDI%20Link ) è anche una buona idea in quanto ti darà problemi regolari, di dimensioni ridotte e vari da risolvere.

Mentre questi saranno inevitabilmente fuori tema rispetto ai problemi che ti troverai ad affrontare, la varietà è importante in quanto ti costringerà a pensare in modi che non hai mai fatto prima, il che è davvero ciò che riguarda la risoluzione dei problemi.

Modifica: controlla anche: http://www.mindtools.com/pages/main/newMN_TMC.htm per buoni suggerimenti per la risoluzione dei problemi.

1
StuperUser

Gioca a scacchi

Giocare a scacchi è un ottimo trainer per risolvere i problemi di programmazione. Gli strati di problemi e gli alberi logici si relazionano molto bene. Ti aiuta anche a pensare in anticipo e pianificare prima di percorrere un percorso non ottimale e perdere tempo.

Gli scacchi richiedono anche un equilibrio tra le "modalità di pensiero" di destra e di sinistra. Se diventi troppo analitico, puoi impantanarti nel tentativo di calcolare tutto, il che è impossibile. Tuttavia, ogni ispirazione creativa deve essere verificata con un calcolo per assicurarsi che si adatti alla realtà concreta della situazione. I problemi difficili sono proprio così.

Gli scacchi dimostrano come lo studio e la pratica portano a un solido miglioramento in modo molto lineare. Questo vale anche per la risoluzione dei problemi del programma.

Giocare a scacchi può anche aiutarti a capire bene quanto c'è da imparare. Anche se hai programmato (o giocato a scacchi) per 10 anni, non sei ancora un grande maestro.

1
Jeff Davis

Recentemente ho risolto i problemi a Project Euler . I problemi sono di varia difficoltà. Le soluzioni di solito non richiedono grandi quantità di codice, ma devi considerare molti fattori come il tempo di esecuzione del tuo algoritmo. Puoi usare la lingua che preferisci, semplicemente inserendo una risposta. C'è un buon resoconto di una soluzione ottimale per molti problemi e molte discussioni su ogni problema. Cerca di risolvere un problema ogni giorno e rimarrai stupito di quanto migliorino la risoluzione e l'analisi dei problemi. Per ulteriore credito, prova a risolvere lo stesso problema in molte lingue, come un linguaggio procedurale (forse C++), un linguaggio di scripting (come Python) e un linguaggio funzionale (come F #).

1
Erik

La parte più difficile della risoluzione dei problemi è "Restringimento percettivo".

Scegli qualcosa che sembra essere il problema e lo segui ostinatamente fino a quando non sei esausto e non fai progressi.

Il modo per farlo è essere sicuri - assolutamente sicuri - di capire davvero il problema. "Risolvere il problema giusto" è la parte più importante della risoluzione dei problemi.

A volte lo chiamano "pensare fuori dagli schemi". "La scatola" è un punto di vista ristretto che potrebbe non includere il vero problema fondamentale. Pensare fuori dagli schemi è cercare il giusto problema da risolvere.

Esistono numerosi libri sulle strategie per evitare il restringimento che si concentra prematuramente sul problema sbagliato.

Principalmente il trucco è identificare quale dovrebbe essere il vero risultato. Quindi capire cosa blocca quel risultato desiderabile.

0
S.Lott

Nello sviluppo dell'applicazione, molti dei problemi che affrontiamo sono o la nostra stessa invenzione o l'invenzione dell'idiota da cui abbiamo ereditato quella base di codice sbagliata. Risolvere un problema il più delle volte si riduce a trovare la fonte. Spesso, una volta trovato dove sta accadendo, la mera competenza è ciò che è necessario per risolvere.

A quello scopo:

  1. Scopri la tua piattaforma.
  2. Impara i tuoi strumenti.
  3. Scopri quali strumenti sono disponibili per la tua piattaforma che non hai ancora incontrato.

Tutto l'allenamento del cervello nel mondo è inutile senza informazioni che il cervello può usare. Per risolvere un problema, devi sapere quali sono prima le possibilità! Anche allora, è molto più veloce lavorare con buone informazioni piuttosto che solo una descrizione del problema.

Potrei speculare fino a quando le mucche tornano a casa sul perché qualcosa impiega troppo tempo per essere eseguita. Ma se dico "cerchiamo di ottenere prima alcuni dati", potrei vedere che vengono lanciate molte eccezioni e realizzare invece che potrei cambiarlo in un'istruzione if. Senza sapere come raccogliere le informazioni, sapendo che sulla mia piattaforma le eccezioni richiedono un po 'di sovraccarico e che c'è un modo per verificare prima di provare che è più veloce, non risolverei mai il problema.

0
MIA

Ci sono due parti per la tua risposta:

a) Tecnica per l'effettiva risoluzione dei problemi

b) Rendere il cervello intrinsecamente "migliore" nel pensiero e nella risoluzione dei problemi

Ci sono sempre state delle ottime risposte sulla tecnica (supponiamo che tu conosca il problema, ecc.), Quindi non mi occuperò di questo. Per quanto riguarda l'allenamento del tuo cervello, ci sono un paio di cose che puoi fare per attraversare quelle sinapsi e costruire più interconnessioni

1) Impara una nuova lingua, una vera lingua (come il francese o il cinese potrebbe essere una buona scommessa in questi giorni)

2) Impara a suonare un nuovo strumento

3) Fai qualcosa di artistico come dipingere, disegnare o scolpire

4) Gioca a scarabeo o fai parole crociate

5) Balla come vuoi dire. No, non sto scherzando. La danza ha dimostrato di avere impatto sul cervello e sul pensiero

6) Amplia le tue esperienze, soluzioni innovative derivano dall'applicazione di una teoria in un campo in un altro, quindi studia diversi campi e aree che ritieni interessanti

7) Esercizio fisico, l'esercizio fisico è fondamentale importante per migliorare il processo di pensiero

Infine, offrirò il mio miglior consiglio per risolvere problemi difficili: fare una lunga passeggiata. Ho scoperto che funziona miracoli per schiarirti le idee e lasciare che uno contempli i problemi


0
Homde

È facile per un programmatore attaccare mentalmente un problema visualizzando come risolverlo con il suo linguaggio di programmazione preferito. Proprio come il classico falegname che vede tutti i problemi come chiodi quando il suo strumento preferito è il martello.

Penso che i migliori esercizi di risoluzione dei problemi arrivino quando si supera il livello pratico e penso solo in termini di "questo è ciò di cui avrei bisogno per risolverlo in modo ottimale". In alcuni casi potresti dover imparare (molte) nuove cose per applicare la soluzione, ma il punto chiave è che la tua capacità di elaborare una soluzione non dovrebbe essere limitata alle tue tecniche storiche ed esistenti.

Un vecchio esempio pratico per me è che ho imparato a implementare un efficiente multitasking cooperativo quando ho capito che il mio problema in realtà non aveva bisogno di thread preventivi, anche se di solito sarei andato avanti nella mia zona di comfort sbattendo tutti quei mutex (che alla fine sembra sempre smettere di sentirsi a proprio agio ad un certo punto ..).

0
sharkin

La risoluzione dei problemi non è qualcosa che può essere insegnato o addirittura imparato leggendo. L'unico modo per migliorare la risoluzione dei problemi è risolvere i problemi.

Esistono diverse tecniche e metodologie alla risoluzione dei problemi di cui puoi leggere e puoi leggere strumenti e tecnologie che puoi usare per risolvere problemi in un determinato dominio. A meno che non pensiate continuamente ai problemi, provate a trovare soluzioni (escogitate soluzioni multiple per ogni problema e valutatele l'una contro l'altra), quindi valutate le vostre soluzioni rispetto alle soluzioni sviluppate da altri, non migliorerete nel problema solving.

Consiglio di ritirare una copia di Pragmatic Thinking and Learning: Refactor Your Wetware by Andy Hunt . È un libro sulla comprensione di come pensi, reagisci e impari. Porta in teorie rilevanti dalla teoria comportamentale e da altre scienze cognitive. È specificamente orientato verso gli sviluppatori di software, ma applicabile a qualsiasi knowledge worker.

0
Thomas Owens

Per i neofiti della programmazione come me consiglio il libro "Think Like a Programmer". Nel primo capitolo vengono trattate tecniche di problem solving come il ripristino e la divisione del problema, a partire da ciò che conosci, riducendo, analogie e sperimentazioni.

Esistono poi tecniche più avanzate con esempi in C++: risoluzione di problemi con array, puntatori e memoria dinamica, classi, ricorsione, riutilizzo del codice. Non posso commentare questa parte perché è troppo difficile per me ancora.

0

Il mio consiglio sarebbe di buttare via il libro!

Non letteralmente ovviamente. Quello che voglio dire è entrare in un'area tematica in cui hai poca esperienza e risolvere lì problemi difficili, senza conoscere le soluzioni esistenti. Non fare affidamento su nient'altro che sulla creatività e sul pensiero critico e forse su un manuale di riferimento.

È possibile progettare un formato immagine. O un server web. O uno schema di compressione. File system. Kernel. Intelligenza artificiale. Linguaggio di programmazione. Sistema di visione artificiale.

Qualcosa che trovi interessante, che è ragionevolmente complesso e di cui non hai mai imparato. Non leggi: salta dritto dentro. Esperimento. Fare errori. Reinventare la ruota.

Non chiedere aiuto. Stai lontano dai tutorial. Stai lontano dalla teoria. Non estrarre una soluzione dallo scaffale.

Perché?

  • Impariamo meglio dagli errori.
  • Ti dà l'opportunità di esercitarti a trovare soluzioni in modo creativo, piuttosto che rigurgitare e adattare le vecchie soluzioni.
  • Sei costretto a valutare le tue idee. Non puoi valutarli senza sviluppare una buona comprensione dei tuoi strumenti, del problema che stai risolvendo e dell'idea che desideri valutare. Ciò porta a una comprensione più profonda dell'argomento rispetto a quella che altrimenti svilupperesti. (Sentiti libero di leggere sugli strumenti che stai utilizzando, semplicemente non leggere sul problema che stai cercando di risolvere.)

Fai alcuni tentativi e, una volta che sei soddisfatto di ciò che hai realizzato, lascialo per qualche mese. Quindi torna indietro e vedi se riesci a trovare una nuova prospettiva. Dopodiché, è tempo di iniziare a leggere il problema e come gli altri hanno risolto (o parlando con le persone). A questo punto, invece di dirti "sì, ha senso" mentre leggi, dirai "sì, esattamente", o "bene, in una certa misura", o "wow, è intelligente ".

In altre parole, penserai molto più criticamente a ciò che leggi e troverai molto più facile da capire e ricordare perché hai già un ampio "quadro mentale" a cui collegarlo. Ti sentirai bene con quelle cose che hai scoperto in modo indipendente e andrai via con un mucchio di nuove conoscenze.

Non cercare di rendere perfetta la tua soluzione. Prova solo a te stesso che puoi risolvere il problema. Adotta un atteggiamento "da fare" e, se ti senti scoraggiato dal problema, ricorda che la persona che per prima lo ha risolto probabilmente ne sapeva quanto tu (in realtà, non sapevano che avesse una soluzione!).

0
Artelius

Sinceramente penso che ognuno sia diverso, quindi ognuno di noi è molto diverso per diventare un migliore risolutore di problemi. Puoi imparare dall'esperienza di altre persone, ma alla fine devi forgiare il tuo percorso. Questo sta essenzialmente imparando qualcosa nel "modo difficile", ma in questo caso è efficace.

Ecco come ho iniziato a migliorare il mio problem solving, anche se non sono ancora un grande risolutore di problemi, solo uno migliore di quello dell'anno scorso. Mi è stato dato un nuovo progetto sul lavoro che ha comportato l'estensione di un software di tracciamento del tempo open source, aggiungendo tre nuovi report per la gestione. Questo software è stato scritto in una lingua che non avevo mai usato ed era scarsamente documentato e altamente offuscato. Ho scavato e fatto un sacco di ricerche e poi ho appena lavorato sui rapporti in piccoli passi, una volta che ho avuto le funzionalità di base ho migliorato su di loro e poi ho aggiunto più funzionalità.

Quindi, in altre parole, ti consiglio di trovare una sorta di progetto per affondare o nuotare nel mondo reale su cui lavorare. Se sei attualmente impiegato come programmatore, trova un progetto o chiedi al tuo capo per uno. Se questo scenario non è possibile trovarne uno al di fuori del lavoro, magari un contratto/lavoro freelance o qualcosa del genere. Risolvo i problemi molto bene e molto rapidamente quando devo e mantengo quella conoscenza a causa dell'intensità del progetto. Se questo non funziona per te, fai semplicemente quello che tutti gli altri su questo thread suggeriscono :).

0
hockfan86

La risposta è stessa nella domanda uscendo con soluzioni diverse. Esistono sempre più di una soluzione (ad esempio, l'ordinamento può essere eseguito in diversi modi, ad esempio ordinamento bolle, ordinamento selezioni ecc.) È sufficiente scegliere un modo per farlo (ordinamento) in modo efficiente. Prova con la prossima volta e così via ..... E libri per la risoluzione dei problemi ..... Nessuno Non puoi imparare le abilità di risoluzione dei problemi dai libri, più codice eseguirai più conoscenze che otterrai. In bocca al lupo

0
Ranger