Va bene se non riesco a risolvere un problema quando sono seduto davanti a un computer? [chiuso]


12

Sono un programmatore hobbista e un principiante. Il più delle volte, non riesco a risolvere il problema mentre sono seduto davanti al computer. Ad esempio, stavo cercando di scoprire se un numero è un potere di un altro. Non sono riuscito a capire la soluzione fino a quando non ho afferrato una penna e un foglio per analizzare il problema. In circa 3 minuti l'ho risolto e ho scritto la sceneggiatura in Python.

A volte riesco a risolvere il problema stando seduto davanti a un computer, ma con qualche sforzo. È ok?


6
Per me questo non è un problema così grave, e in effetti molte persone fissano troppo il computer, alla fine non si rendono conto di avere questo problema in misura minore. Molta programmazione professionale comporterà cambiamenti molto importanti invece delle complicate formule logiche di solito fornite come compiti a casa, e non è un problema se almeno riesci a realizzarli.
Katana314,

2
Penso che potresti voler semplicemente riformulare la tua domanda in modo che abbia più senso sulla programmazione.
Snoop,

8
Questo è completamente soggettivo. Tutti imparano e lavorano in modo diverso. Fai ciò che funziona per te.

7
Davanti al computer può essere il posto peggiore per cercare di risolvere un problema, perché sei troppo tentato per iniziare a digitare quando dovresti pensare. Spesso allontanarsi dalla macchina è meglio perché ti costringe a pensare di non agire . La maggior parte dei miei problemi più difficili sono stati risolti camminando in ufficio la mattina.
Gort il robot

2
Inoltre c'è la questione di quanto sia difficile il problema. Man mano che acquisisci più esperienza, alcuni problemi che ora sono difficili diventeranno facili. Ma questo significa solo che puoi risolvere quelli ancora più difficili. Per quanto mi riguarda, risolvo molti dei miei più difficili durante le escursioni o lo sci di fondo.
jamesqf,

Risposte:


34

Tendo a risolvere i miei problemi più difficili:

  • Davanti a una lavagna (a volte senza nemmeno disegnare nulla - solo pensare a come visualizzare un problema a volte può portare a una soluzione)
  • Mentre li spiega ai colleghi
  • Guardando fuori dalla finestra
  • Mentre fai una passeggiata
  • Sotto la doccia
  • In bagno

Allontanarsi dal monitor è spesso molto utile per concentrarsi sul problema stesso e non solo per scrivere un'implementazione.

Il problem solving avviene nella tua testa. Digitando il codice del programma è proprio come spieghi la tua soluzione al computer.


1
Grazie! Hai ragione, più sono lontano da un computer, più posso concentrarmi sul problema.
Mahmood Muhammad Nageeb,

2
Ricordo di aver letto un libro (non ricordo quale, sfortunatamente) che suggeriva di tenere un'anatra di gomma sulla scrivania e, quando sei sconcertato, descrivi il problema ad alta voce all'anatra di gomma.
Gort il robot

7
@StevenBurnap Questo si chiama debugging di paperelle di gomma e probabilmente lo leggi in The Pragmatic Programmer di Addison Wesley.
Philipp

2
"Digitare il codice del programma è proprio come si spiega la soluzione al computer." - Alan Perlis ha dichiarato: "I programmi dovrebbero essere scritti per essere letti dagli umani e solo per inciso per l'esecuzione delle macchine". Preferirei guardare in questo modo: digitando il codice è proprio come spieghi la tua soluzione ai tuoi colleghi . Il fatto che una volta che descrivi la soluzione in modo non ambiguo in modo tale che qualsiasi essere umano (incluso te stesso, tra 6 mesi da ora) possa capirla, diventa anche eseguibile da una macchina, è solo un effetto collaterale della sua descrizione rigorosa abbastanza che non ci sono ambiguità. ...
Jörg W Mittag

4
Ri: paperella di gomma. C'è anche una storia simile con un orsacchiotto. I tutor del MIT sedevano orsacchiotti fuori dai loro uffici. Ti è stato permesso di bussare solo dopo aver spiegato il tuo problema all'orso. La metà degli studenti non ha mai bussato alla porta, avendo capito il loro problema mentre lo spiegava all'orso. Formulare una domanda ben scritta, ben studiata, ben formattata, dettagliata e di alta qualità su StackExchange può avere lo stesso effetto , che è (uno dei motivi) per cui siamo così ansiosi di fare proprio questo!
Jörg W Mittag

7

Penso che questa sia una buona domanda. Da come lo interpreto, ciò che penso che mi stai chiedendo è "Va bene che periodicamente devo allontanarmi dal computer"?

Non penso che trascorra un giorno in cui non devo alzarmi e chiedere a qualcun altro cosa ne pensano, oppure estrarre un pezzo di carta antigraffio e scarabocchiare un'equazione per risolvere il problema. Inoltre, quando si approfondisce la programmazione, è possibile che non si inizi a scrivere il codice fino a quando non si è creato prima un diagramma / architettura.

Stavo frequentando un corso di strutture dati quando ero al college e non riuscivo a progettare un algoritmo di ordinamento. Quando ho chiesto aiuto al mio professore, ha saputo che non avevo pensato prima al problema. La prima cosa che mi ha detto è che non ero ancora pronto per iniziare a scrivere il codice. Quindi estrasse un pezzo di carta e disegnò un paio di quadrati, quindi inserì i numeri dall'array. Successivamente ha disegnato un altro paio di foto in cui sposta i quadrati e mi mostra visivamente come funzionerebbe l'algoritmo di ordinamento.

Alcune cose che puoi fare per schiarirti le idee e risolvere il problema:

  • Fare una pausa
  • Parla con un collega
  • Lavagna il problema / concetto
  • Dormici su!

Non essere sorpreso se ti svegli nel cuore della notte con la soluzione.


1

Penso che aiuterà sicuramente a diventare un programmatore / sviluppatore professionale efficiente, se puoi. Tuttavia, pensare a un problema mentre si traduce la soluzione nella logica del programma IMHO ha bisogno di formazione, quindi non vedo alcun problema se si serializzano queste attività: è sufficiente essere in grado di completarle entrambe con successo. Pensare a una soluzione dall'inizio alla fine prima di iniziare a programmare ha sicuramente i suoi meriti, ma devi essere un po 'paziente per questo.

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.