Imparare a programmare? Innanzitutto, impara a risolvere il problema.

Immagine da Unspalsh

La maggior parte dei tutorial che hai letto o guardato prima di solito fanno una cosa, l'alimentazione con il cucchiaio.

Questo è "OK" per imparare una cosa nuova, ma non va bene quando devi risolvere un vero compito.

Un'attività di solito comporta il raggiungimento di un obiettivo superando un problema. Questo post presenta il "suggerimento" più importante per tutti gli ingegneri del software per principianti.

TL; DR

Innanzitutto, risolvi il problema. Quindi, scrivi il codice. - John Johnson

In altre parole, elaborare la soluzione su carta in passaggi. Quindi iniziare a scrivere il codice per esso. Non rimanere impigliato nel design del codice e del software prima.

Quindi cosa succede?

Molte volte sento principianti e ingegneri del software junior dire: “Ho potuto seguire il tutorial e ho pensato di aver capito il concetto. Ma quando ho provato a fare una cosa simile sul mio progetto per animali domestici, non sono riuscito a farlo. "

Questo accade per due motivi.

Innanzitutto, hai perso il treno dei pensieri da qualche parte e non sei riuscito a stabilire una catena.

In secondo luogo, eri così ingarbugliato nel codice che il problema principale che stavi cercando di risolvere è sfocato.

Questo problema si verifica anche per gli ingegneri del software e anche per gli ingegneri del software senior.

La cosa buona è che con l'esperienza, sai quando fermarti o fare una pausa. Quindi, torna al problema con una prescrizione diversa e trova una soluzione più velocemente.

Molti di voi possono riferirsi a questo: state provando così tanto tempo per risolvere un problema. Hai fatto una pausa o ci hai dormito sopra e la sessione successiva la soluzione era lì in pochi minuti.

Questa non è magia. Questo sta esaminando il problema da un altro punto di vista.

Illustriamo con un esempio

Devi svolgere un'attività, ad esempio creare un rimborso con pagamenti.

Ti viene dato lo schema del database. Questa è un'attività back-end ed è necessario creare un'API POST / rimborsi in grado di creare il rimborso e i relativi pagamenti. La struttura del database è la seguente:

Un rimborso ha sempre un motivo, ad esempio "merce danneggiata" o "consegna in ritardo".

È possibile discutere il payload dell'API con uno dei membri del team. Potresti essere d'accordo sul seguente payload JSON:

Il solito scenario

Quello che farà la maggior parte degli ingegneri del software per principianti è iniziare la scansione della base di codice, se presente. Inizieranno immediatamente a scrivere del codice. Se esiste una cultura di test in atto, forse scrivono un codice di test automatizzato.

Qui è dove scivolano la maggior parte dei principianti e persino alcuni esperti ingegneri del software. Non scrivere codice quando non hai risolto il problema.

Il passo appropriato

Il passaggio più appropriato è sedersi e risolvere il problema sulla carta in passaggi.

Quindi ti chiedi cosa devi fare. Ti viene in mente un piano a passi e modificarlo.

Se hai qualcuno senior nella tua squadra, puoi convalidare i tuoi passaggi e ottenere feedback.

Ciò ridurrà anche il tempo di revisione del codice. Entrambi avete già concordato la modalità della soluzione.

Quindi come si fa

L'attività descritta in precedenza è scrivere un'API create / POST in cui è possibile creare rimborsi con pagamenti.

Ogni rimborso può avere un massimo di due pagamenti. Uno è di tipo "contanti" e l'altro è di tipo "credito". Può anche essere un rimborso con un solo pagamento in contanti o credito. Ecco come avrei scritto i seguenti passi sulla carta:

  1. Creare un metodo per ottenere i dati dal controller inviati dall'utente
  2. Convalida tutti gli input per valori, tipi di rimborso e motivi.
  3. Se tutta la convalida ha esito positivo, genera un numero alfanumerico casuale di lunghezza 10 che non esiste nella tabella dei rimborsi (controllo ricorsivo)
  4. Se la convalida non risponde con un messaggio di errore di convalida adeguato, decidere sulla struttura di risposta
  5. Avviare una transazione del database
  6. Inserisci i valori relativi al rimborso di rimborso_nr, reason_reason, is_premium_customer nella tabella dei rimborsi
  7. In caso di inserimento riuscito, ottieni l'id dell'ultimo inserimento
  8. Con rimborso_id, inserire i valori relativi al pagamento di fk_refund, fk_item, importo, is_cash nella tabella di pagamento
  9. Se tutto è andato bene, eseguire il commit della transazione del database
  10. In caso di problemi, eseguire il rollback della transazione del database
  11. Rispondere con un messaggio di esito positivo o negativo in base all'esito positivo della transazione del database con una struttura adeguata
  12. Collegare il controller e questo metodo

Segui il piano in passaggi, ora scrivi il codice

Dopo avere un piano passo dopo passo puoi iniziare a scrivere codice. Quindi, puoi approfondire i nomi dei metodi, come ottenere la connessione al database e altri dettagli.

A seconda della lingua e del framework, puoi anche decidere dove deve rimanere il codice di convalida.

Potresti anche scrivere test se l'azienda e la cultura lo supportano e lo incoraggiano.

Quando la tua soluzione è evidente nella tua mente e hai un piano d'azione passo-passo su carta, ora puoi scrivere il codice.

Puoi persino spezzare le parti in modi che saranno più facili da rifinire e cablare.

Ad esempio, la logica di test può essere qualcosa che può essere scritta separatamente e testata da sola. Sta pensando a parti indipendenti che possono essere cablate insieme per formare la soluzione.

Conclusione

Quando affronti la tua prossima attività, non iniziare a scrivere il codice sin dall'inizio.

Innanzitutto, cerca di risolvere il problema, quindi escogita una soluzione con passaggi. È meglio farlo lontano da uno schermo su carta.

Quindi, affina la tua soluzione e discuti con qualcuno. Quando sei soddisfatto, traduci quella soluzione in codice. Questo è un po 'metodico ma molto efficace.

Il codice è sempre un mezzo per la soluzione, non la soluzione stessa.

Se sei arrivato così lontano, per favore lasciami alcuni "applausi" :).

Grazie per aver letto!

Originariamente pubblicato su geshan.com.np.