CodeGym/Java Blog/Random-IT/Come è stato? O il mio primo progetto
John Squirrels
Livello 41
San Francisco

Come è stato? O il mio primo progetto

Pubblicato nel gruppo Random-IT
membri
Questa è una traduzione della storia di successo della nostra comunità Java globale. Alex ha imparato Java nella versione in lingua russa del corso, che tu studi in inglese su CodeGym. Possa diventare l'ispirazione per il tuo ulteriore apprendimento e forse un giorno vorrai condividere la tua storia con noi :)

introduzione

Un po' di come mi sono avvicinato alla programmazione. Sono insegnante e psicologa di formazione, e da 5 anni svolgo la mia professione con successo. Ma per vari motivi penso sempre più spesso di trasferirmi in un altro paese. E poiché la lingua e le normative sono diverse in altri paesi, non potrei diventare lo stesso tipo di professionista senza una seria riqualificazione. Così ho iniziato a cercare modi più semplici e interessanti per muovermi e avere successo. Come è stato?  Oppure il mio primo progetto - 1Mi sono cimentato come tatuatore (questo non richiede essenzialmente alcuna conoscenza della lingua), ma questa è una storia per un altro giorno. Poi il mio amico collega mi ha fatto conoscere CodeGym. Inizialmente ero scettico riguardo alla promessa di farmi diventare un programmatore a tutti gli effetti giocando e ad un prezzo così modesto. Ma poi ho ricevuto dei soldi per il compleanno (non soggetti alla "tassa di famiglia"), e ho dovuto scegliere tra WoW e CodeGym... Bene, grazie ad uno sconto tempestivo, la bilancia si è inclinata nella giusta direzione, ed eccomi qui. Come tutti dovremmo già sapere, CodeGym è al 90% pura pratica. Impari a risolvere i compiti. Impari a trovare la conoscenza che ti manca su Internet. Tutto questo va bene, ma per 15 livelli non potevo liberarmi della sensazione che mi mancasse qualcosa che completasse il quadro per me. Ho pensato di unirmi a GeekBrains, ma (probabilmente per fortuna) lo stesso amico mi ha fermato in tempo e mi ha fatto conoscere Udemy. Quando ho aperto questo deposito di conoscenza, ho assecondato gli appelli: " Psst, amico. Sei un principiante?" C'è uno sconto per te... solo per 3 giorni — Non perdere questa occasione! " Poi è diventato chiaro che gli sconti ci sono sempre, ma non è questo il punto. Ho acquistato subito un pacchetto con due corsi: Java da 0 a Pro e qualcosa di simile per Android. E qui inizia la nostra storia.

Successo o fallimento?

Mentre seguivo il corso Android, ho ricevuto dei compiti per realizzare un progetto basato sulle mie nuove conoscenze. Sono il tipo di persona che crede che fare qualcosa in modo semplice o ordinario sia come non farla affatto. Quindi ho subito cominciato a complicarmi la vita. Mi sono rivolto alla persona che conosco che ha l'immaginazione più sviluppata e vivida. Questa è la mia cara moglie (sì, leggerà anche questo articolo). Ha suggerito di creare un'app con immagini di animali, che emettono i corrispondenti suoni degli animali quando vengono cliccati. È stata un'ottima idea, ma comunque piuttosto semplice. Prendendo come base questo suggerimento, ho iniziato a ragionare:
  • Questa app deve essere qualcosa di più di una semplice sciocchezza (qualcosa di cui ridere e dimenticare). Voglio che abbia valore. Ad esempio, insegnando qualcosa.
  • Lascia che sia l'alfabeto con gli animali. Ma non un alfabeto qualsiasi, ma l'alfabeto inglese!
  • E non solo animali, ma animali rari che pochi conoscono, per ampliare i propri orizzonti!
  • E dovrebbero esserci animazioni, riproduzioni audio dei nomi delle lettere e dei nomi degli animali in inglese e russo!
Questo è ciò che io chiamo compiti a casa (ho dimenticato di dire che prima di CodeGym praticamente non avevo familiarità con la programmazione. E sono passati meno di 3-4 mesi dal momento in cui ho iniziato a utilizzare attivamente il sito Web fino al momento in cui ho iniziato il progetto. Quindi, se tu sei un veterano in questo settore e stai pensando: " Pff... è cambiato qualcosa rispetto alla versione originale? ", te lo assicuro, sì, è cambiato)! La prima difficoltà che ho incontrato è stata , stranamente, l'avvio del progetto. A quanto pare, gli autori non sono gli unici a sperimentare il "blocco dello scrittore"... Ma poiché sono uno psicologo, conoscevo la soluzione al mio problema. Devi solo iniziare a fare qualcosa. Fai almeno un piccolo passo e poi non fermarti. Così ho iniziato con una lezione di lettere astratta . Questa classe aveva un paio di campi e successivamente avrebbe dovuto avere vari metodi. In realtà, non avevo idea di cosa ne avrei fatto, ma dovevo fare qualcosa. Quindi, ho creato classi per ogni lettera, facendo loro ereditare la classe astratta. Ci è voluto molto tempo e con questo si è concluso il mio primo giorno di lavoro. Il giorno successivo ho eliminato il progetto e ho ricominciato. Ho appena aperto il progetto per ricordare cosa è cambiato dal momento che ho descritto sopra. E vorrei dire che quando ho finito tutto sembrava migliore, ma no. Ci sono davvero ancora lezioni per ogni lettera... Ciò è dovuto proprio al fatto che questi compiti mi sono stati assegnati quasi all'inizio del corso su Android e ho dovuto capire da solo le complessità della relazione tra un attività (la finestra attiva, o qualcosa del genere) con una classe. E non ho trovato né inventato altro che questo modo goffo di associare una determinata lezione a una determinata attività. Ad ogni modo, uno dei principi della programmazione (evitare la ripetizione) è stato violato 26 volte. Innanzitutto, ho implementato completamente (mi è sembrato) le prime due lettere, ho creato un'interfaccia utente approssimativa composta da due menu (un menu generale che potrebbe essere necessario quando si espande la funzionalità, e un sommario da cui è possibile passare a qualsiasi delle lettere). Non ho incontrato molte difficoltà nella programmazione. Durante l'implementazione del mio progetto indipendente, molte cose, come le relazioni tra classi, metodi, ecc., sono diventate chiare e il progetto stesso è diventato un'ottima pratica per consolidare tutta la conoscenza che avevo acquisito non solo su Android, ma anche su Java. La seconda difficoltà erache la lettera cambiò nello stesso momento in cui se ne sentì il nome. La transizione graduale (ombreggiatura) faceva sembrare che il suono precedesse l'immagine. Ma quando ho applicato un ritardo al suono, l'intero thread si è bloccato: la transizione è stata semplicemente posticipata dell'entità del ritardo, producendo lo stesso effetto indesiderato, solo più tardi. Poi ho preso la coraggiosa decisione di rendere il mio programma multithread! Ho spostato la riproduzione del suono in un thread separato, con un ritardo sufficientemente lungo da consentire il caricamento dell'immagine. Questo riguardava il multithreading, ma ero orgoglioso di dire che stavo scrivendo un'app multithread. La difficoltà finale è stata la scelta dei materiali adatti. Pensavi che l'inglese non abbia animali per la lettera X (si scopre che lo fa)? Ho dovuto identificare 26 animali, trovare le loro immagini e i loro suoni e registrare i nomi di 26 lettere e 26 animali. Se avessi lavorato in team, ovviamente avrei lasciato questa parte del lavoro a qualcun altro. Momenti così monotoni uccidono la voglia di lavorare e quando non c'è voglia ci sono delle scuse. Ad ogni modo, questa fase è durata circa 2 settimane (ho realizzato il progetto nel tempo libero e quando non avevo scuse). Il progetto è stato dichiarato completato circa 3-4 settimane dopo l'inizio.

Vale la pena continuare a studiare programmazione?

Seguì la disillusione. Innanzitutto non mi era permesso pubblicare i miei compiti sul corso. Ho fatto il lavoro e ho fatto un sacco di sforzi per mettermi in mostra, ma non mi era permesso. In secondo luogo, la mia app ha funzionato perfettamente nell'emulatore e sul mio telefono. Di quello che avevo intenzione di fare, non ho implementato l'animazione, perché ho sputato e ho deciso che l'avrei finito quando avessi seguito le lezioni pertinenti nel corso. Ma quando ho iniziato a pensare alla distribuzione dell'applicazione, mi sono imbattuto in un problema interessante. Dopo aver utilizzato un altro telefono e un tablet per verificare se la mia app era ottimizzata per schermi diversi e versioni diverse di Android, ho riscontrato un errore sconosciuto. Il programma si spegne semplicemente quando si passa a una lettera. Ho provato a trovare la radice del problema, ho esaminato i registri che, rispetto alle concise eccezioni Java, sembravano ancora più un gioco di prestigio. Internet non mi ha aiutato. Da un lato ho realizzato un'app funzionante con cui i miei figli amano giocare. D'altra parte funziona solo sul mio telefono. Questo mi fa ridere. Naturalmente ero sconvolto, ma riflettendoci sopra, ho concluso che avevo guadagnato più di quanto avevo perso:
  • Sono migliorato nel gestire le critiche al mio lavoro.
  • Ho realizzato il valore della conoscenza e dell'esperienza nella progettazione del software.
  • Ho aumentato la mia autostima nella programmazione.
  • Mi sono reso conto della necessità di studiare i design pattern e le basi del refactoring.
  • E come ho detto, ora ho la mia app, che nessun altro ha e probabilmente non avrà mai. =)
"So di non sapere nulla". Implementando progetti educativi come questo, hai una grande opportunità di analizzare ciò che sai, dove ci sono lacune nelle tue conoscenze e identificare modi per progredire ulteriormente. Vale la pena continuare a studiare programmazione se capisci che tutti i tuoi sforzi in una lunga fase della tua vita ti hanno portato da 0 a +0.001? Per me la risposta è stata sì. E tu?
Commenti
  • Popolari
  • Nuovi
  • Vecchi
Devi avere effettuato l'accesso per lasciare un commento
Questa pagina non ha ancora commenti