Come diventare programmatore: 8 Passi per costruire un’app da zero

Intro

“Qual è il modo migliore per imparare a scrivere codice?”

“Come diventare un programmatore”

“Come costruire un’app”

Queste sono domande comuni poste ogni giorno da principianti che sono desiderosi di imparare a scrivere codice. Senza dubbio avete già cercato su Google qualcosa di simile e letto abbastanza articoli/risposte al punto che siete stanchi dei consigli “standard”.

Se non l’avete fatto, o se in qualche modo pensate che io abbia qualcosa di nuovo da dire e volete sentirlo comunque (io no), ecco una risposta breve e abbastanza inutile (gli darò un nome SEO-friendly click-bait: “3 Steps to Becoming a Programmer”):

Step 1: Pick a Language

Step 2: Learn the Language

Step 3: Build Stuff and Keep Learning

Hey, don’t throw shoes at me. Per quanto mi piacerebbe dire che c’è un metodo unico per imparare a scrivere codice, in realtà non c’è. (Lasciatemi aggiungere un passo 0: accettare che ognuno impara in modo diverso).

Innumerevoli risposte più dettagliate che elaborano i passi 1 & 2 esistono già sul web, ma la risposta comune al passo 1 è di imparare Python o Ruby come primo linguaggio (non fissatevi troppo sulla lingua, non inizierete mai). Se hai bisogno di risorse per l’apprendimento, abbiamo curato diverse guide che puoi controllare:

  • Impara Python
  • Impara Ruby on Rails
  • Impara JavaScript (Impara sempre JavaScript prima di imparare framework come AngularJS o React)
  • Impara lo sviluppo iOS
  • Impara lo sviluppo Android

Alcuni di voi arrivano a questo punto:

Se stai avendo quel momento in cui sei diventato una pecora smarrita, non spaventarti perché non sei solo.

Praticamente ogni volta che chiedete “come faccio a diventare un programmatore”, gli sviluppatori vi diranno di costruire cose, perché costruire cose è il modo in cui si può migliorare come programmatore ed è il modo migliore per imparare, eccetera eccetera.

Ma come si fa a costruire la propria app?

Puoi sempre seguire i tutorial esistenti su come costruire un clone di Twitter/Pinterest/Instagram/etc con qualsiasi linguaggio &tecnologico tu stia usando, ma tieni presente che gli autori di quei tutorial hanno effettivamente fatto la maggior parte del lavoro per te, e tutto quello che stai facendo è capire il codice e la loro logica.

Questo articolo tenterà di fornirvi uno schema che potete seguire quando costruite la vostra app da zero.

Prerequisiti

La maggior parte delle app ha bisogno di un database, quindi se state per costruire la vostra app da soli (ergo il front-end e il back-end), dovrete probabilmente conoscere un linguaggio di interrogazione per database (di solito SQL). A meno che tu non stia costruendo qualcosa che non ha bisogno di interagire con un database come Flappy Bird, per esempio.

Inoltre, se stai cercando di costruire una web app, avrai bisogno di conoscere un po’ di DevOps di base per essere in grado di impostare il tuo ambiente di sviluppo/server, e per essere in grado di lanciare effettivamente l’app.

Se stai solo puntando ad essere uno sviluppatore web front-end, puoi affinare le tue abilità HTML, CSS e JavaScript su Codepen o JSfiddle. Se conosci solo JavaScript e non vuoi imparare un altro linguaggio, allora puoi provare Node.js, dato che è una piattaforma JavaScript per lo sviluppo back-end (puoi anche usare MongoDB come database dato che è anche basato su JavaScript.)

Altrimenti, dovresti anche conoscere uno dei seguenti linguaggi (e di solito un framework web) se intendi costruire una web app completa:

  • Ruby
  • Python
  • PHP
  • Java
  • Go
  • C#

Se stai cercando di costruire giochi, allora puoi considerare di imparare Lua, sebbene C# sia anche un’ottima scelta grazie al motore di gioco Unity 3D e alla sua massiccia comunità. Per quanto riguarda lo sviluppo di applicazioni mobili native, avrai bisogno di conoscere Swift/Objective-C per lo sviluppo iOS e Java per lo sviluppo Android.

Senza ulteriori indugi, passiamo a come costruire un’applicazione da zero.

Passo 0: Capire te stesso

Prima di tutto, costruisci qualcosa che ti appassiona. L’interesse è il modo migliore per mantenersi motivati, quindi chiediti cosa ti interessa o cosa ti piace fare.

Per esempio:

  • Quali applicazioni ti piace usare di più?
  • Di quali applicazioni non puoi fare a meno?
  • Ti piace giocare?
  • Ti piace disegnare cose?
  • Ecc.

Identifica i tuoi interessi in modo da lavorare su qualcosa con cui ti diverti. In questo modo, è meno probabile che tu ti spenga e rinunci a metà strada.

Passo 1: Scegli un’idea

Ora che hai capito, si spera, te stesso, è il momento di scegliere un’idea da costruire. Iniziare in modo semplice.

Sì… anche se stai pensando di costruire un gioco, in questo momento non dovresti pensare a costruire il prossimo CounterStrike ma piuttosto dovresti pensare a come costruire giochi semplici come il famigerato Flappy Bird. Ehi, non guardate in basso Flappy Bird─è stato un fenomeno che ha fatto scoprire a persone di tutto il mondo il loro masochismo interiore. Ma sto divagando.

Allora, basandovi sui vostri interessi, trovate un’idea per una semplice app che faccia qualcosa di pulito. Non importa se l’app esiste già (in effetti potrebbe aiutarvi se esistono già progetti simili).

Ecco alcuni suggerimenti per aiutarvi a trovare l’ispirazione:

  • Se vi piace cucinare, forse potete pensare di costruire un’app per le persone per mostrare le loro ricette fatte in casa.
  • Se avete sempre voluto sapere come funziona Twitter, provate a costruire un super semplice clone di Twitter.
  • Se sei una persona smemorata che si affida ai task manager, prova a costruirne uno tu stesso.
  • Se sei dipendente da League of Legends, puoi provare a guardare attraverso l’API di Riot e costruire un sito che possa ottenere & visualizzare informazioni di gioco.
  • Se vi piace giocare ai giochi di carte, provate a costruirne uno semplice (per esempio Black Jack)
  • Se siete a dieta, provate a costruire un’app che registri il vostro consumo di calorie.

E così via. Ecco una lista di idee di progetto se hai bisogno di più ispirazione.

Una volta che hai una direzione, scrivi in una frase lo scopo e, se applicabile, gli utenti target più importanti per questa app.

Per esempio: Un’app per l’adozione di animali per le persone che raccolgono animali randagi.

Passo 2: Definire le funzionalità di base

Pensa a ciò che la tua app dovrebbe essere in grado di fare ed elencale. Se finisci per elencare un mucchio di cose, guarda meglio e chiediti se questa app ha DAVVERO bisogno, per esempio, del login di Facebook per funzionare? Ha DAVVERO bisogno di caricare i dati su qualche cloud per funzionare?

È bello avere un progetto da sogno con specifiche impressionanti, ma in questo momento il punto non è costruire qualcosa che sia completo con un sacco di caratteristiche interessanti. Tenete a mente che nessuna app è mai completa, e tutto inizia in modo semplice.

Non provate mai a costruire un’app all-in-one. Non ci andate. L’ho visto accadere anche in un ambiente professionale, e il risultato è un sacco di dolore e pochi progressi.

A meno che tu non abbia una volontà di ferro o ami davvero le sfide, finirai solo frustrato e scoraggiato se il tuo primo progetto è troppo difficile da costruire. Sei un principiante… il punto ora è divertirsi. Il divertimento è il modo più efficace per imparare.

Quindi, dai un’occhiata alla lista di funzioni che hai fatto, e se è troppo lunga, inizia a cancellare le funzionalità di cui la tua app può fare a meno.

Ricorda, questa è la tua versione 1 e dovresti mantenere le cose semplici. Concentratevi sulle cose che permetteranno all’app di eseguire qualsiasi cosa si supponga debba fare – tutto il resto può essere lasciato per un altro progetto.

Per un esempio di elenco di funzionalità di base per un clone di Reddit:

  • gli utenti possono creare un account
  • gli utenti possono recuperare le password perse
  • gli utenti possono cambiare le loro password
  • gli utenti possono pubblicare nuovi link
  • gli utenti possono commentare link
  • gli utenti possono alzare/abbassare i link
  • gli utenti hanno un profilo che mostra la loro storia/attività

Le caratteristiche elencate sopra sono le funzionalità di base su cui dovresti concentrarti prima. Altre caratteristiche come:

  • gli utenti possono condividere sui social media
  • gli utenti possono cancellare i commenti
  • gli utenti possono modificare i commenti
  • gli utenti possono cancellare il proprio account

sono secondarie e possono essere salvate per la versione 1.Lavora solo su questi dopo che puoi effettivamente lanciare la versione 1.0

Passo 3: Abbozzare la tua App

CC License

Nulla è più veloce di una penna & di carta. A questo punto dovresti avere un’idea abbastanza solida di quello che la tua app dovrebbe fare, quindi abbozza il wireframe dell’UI (interfaccia utente) della tua app. Dove dovrebbero essere posizionati i pulsanti, qual è lo scopo di quel pulsante, e così via.

Scrivete le note e date corpo a come l’app dovrebbe funzionare. Sei ancora nella fase di brainstorming, quindi cambia le cose finché non ne sei soddisfatto.

Ricorda, mantieni le cose semplici. Se hai accorciato la tua lista dal passo 2, attieniti solo alle funzioni di schizzo elencate lì – non farti trasportare. Se non puoi farne a meno, allora disegna 2 versioni: una versione di base e la versione finale nei tuoi sogni.

Tutto sommato, questo non è l’aspetto finale, ma piuttosto solo un passo per aiutarti ad avere una presa più solida della tua app.

Passo 4: Pianifica il flusso dell’UI della tua app

Tutto bene. Hai una buona idea di come sarà la tua app, cosa dovrebbe fare ogni elemento e come gli utenti possono interagire con la tua app. Ora è il momento di capire il flusso dell’UI della tua app. Cioè, come un utente dovrebbe usare la tua app dall’inizio alla fine. Disegna ogni passo che deve fare, e ogni scenario che potrebbe incontrare. Prova a considerare ogni caso d’uso.

(CC License)

Includere tutte le azioni che l’utente può fare nel diagramma di flusso. Per esempio, se la tua applicazione richiede agli utenti di accedere, come fanno a creare un account? Cosa succede se gli utenti dimenticano la loro password? Cosa succede se hanno inserito una password sbagliata? Cosa dovrebbe essere in grado di fare un utente su ogni interfaccia (aggiungere un nuovo elemento della lista > salvare; modificare > salvare/cancellare)? E così via. Questo viene fatto più velocemente con carta e penna.

Anche in questo caso, dato che la tua applicazione dovrebbe essere abbastanza semplice, il tuo diagramma non dovrebbe essere troppo grande.

Passo 5: Progettare il database

Va bene! Dopo aver pianificato ogni possibile scenario, dai un’occhiata per determinare che tipo di dati avresti bisogno di conservare. Per esempio, se la tua applicazione richiede agli utenti di creare un account, dovresti tenere traccia di cose come il nome utente, l’ID utente, l’email dell’utente, la password, se l’email dell’utente è confermata, quando l’account è stato creato e ogni volta che l’utente si è collegato alla tua applicazione.

Se state costruendo un clone di Twitter, dovreste conoscere l’ID del tweet, il contenuto del tweet, quando il tweet è stato pubblicato/retweetato, quanti retweet ha e quante stelle ha. Avresti anche bisogno di tenere un registro dei retweet e delle stelle di un utente.

Puoi disegnare un diagramma ERM (Entity-Relationship Model) per mappare le relazioni tra i dati.

Un esempio di diagramma Entity-Relationship del sito di selezione dei corsi Licenza CC

Inoltre, se hai delle caratteristiche future previste, questo è il momento di pianificarle nel tuo database. Ecco un bell’articolo da consultare mentre progettate un database.

Avanzato

Se l’applicazione che state progettando sta per interagire con un server (ad esempio se state costruendo una web app fullstack) o se la vostra applicazione sta per interagire con un’API (ad esempio stai cercando di ottenere informazioni da Yahoo! Weather ), allora è probabilmente una buona idea disegnare un diagramma di sequenza per avere una migliore idea di come i processi dovrebbero operare.

Da Wikipedia

Passo 6: UX Wireframes

Ok, hai pianificato il back-end. Ora, è il momento di pianificare il front-end.

Spero che tu sia ancora eccitato come i servi di cui sopra. Sapete di cosa avete bisogno – ora avete un’idea molto migliore di come dovrebbe essere la vostra app.

CC License

Siccome gli esseri umani sono per lo più creature visive, avrete un tempo migliore per capire cosa dovrete fare se avrete una visione di ogni vista che codificherete. Tuttavia, se sei come me e il tuo disegno è così disordinato che fai fatica a capire l’oscuro pezzo di… tosse capolavoro… che hai creato, è naturalmente poco saggio procedere con questo passo abusando dei tuoi poveri cervelli artistici.

Per fortuna, esistono online molti strumenti di wireframing e mockup che ti aiutano a pianificare il flusso UX/UI (per esempio Gliffy, Mockflow, Framebox, Wireframe.cc, Invisionapp).

Passo 6.5 (Opzionale): Progettare l’UI

Questo è un passo opzionale, ma se hai intenzione di specializzarti nello sviluppo front-end o se ti interessa molto l’aspetto della tua app al punto che un’app più bella ti motiverebbe a scrivere, vai avanti e progetta l’app in modo che tutti quegli elementi wireframe dell’UI possano essere sostituiti con altri più belli.

Se amate progettare, probabilmente progetterete comunque l’app prima di iniziare – forse l’avete già progettata durante la fase 2.

Se non vi occupate di design ma vi interessa comunque come sarà la vostra app, prendete in considerazione l’utilizzo di elementi dai kit UI. Qui ci sono alcune risorse per gli elementi UI:
(Nota: Photoshop richiesto)

UI Cloud
Graphicburger
UI Dock

Per i giochi:
Risorsa Spriters

Non ti fissare troppo sull’aspetto dell’app, comunque. In questo momento dovresti invece concentrarti sulla costruzione delle funzioni di un’app.

Passo 7: Ricerca di soluzioni

Bene! Hai finito la fase di pianificazione… ma come pensi di codificare tutta quella roba?

Un’importante abilità che dovrai imparare come programmatore è valutare quando dovresti usare qualcosa che un altro sviluppatore ha già scritto, e quando costruire la funzione da solo.

Siccome ognuno sta costruendo un’app unica, non tutti i casi d’uso sono uguali. Quindi, dovete giudicare quando usare una soluzione esistente e quando costruirne una vostra, e migliorerete nel farlo con l’esperienza.

Se vi sentite come una barca senza direzione persa in un vasto oceano, fate un respiro profondo e niente panico. Puoi farcela.

Con l’aumentare dell’esperienza nella ricerca, nell’affinare il tuo “Google-fu” e nel costruire cose, alla fine riuscirai a capire questo processo.

Guardando le soluzioni

Guarda tutti i diagrammi che hai disegnato e la lista di funzionalità che hai fatto al passo 2.

Quali sono le cose che non hai assolutamente idea di come costruire?

Per esempio, gli utenti devono creare un account? La tua app si basa su aggiornamenti in tempo reale? Di quali funzioni hai bisogno?

Il più delle volte è una buona idea utilizzare una soluzione esistente per le grandi funzioni come la gestione della sincronizzazione in tempo reale (ad es. Firebase), il networking/routing (ad es. AFNetworking per le app iOS), l’autenticazione e i componenti relativi all’interfaccia utente (ad es.Es. flipboard o pinterest-esque app).

Molti database online esistono per la ricerca di componenti/pacchetti/gemme/etc relativi al backend, ma è necessario fare attenzione con la valutazione di ciò che altre persone hanno scritto – non usarli alla cieca. Si spera che tu non stia per costruire qualcosa di troppo complesso in questo momento, quindi probabilmente non avrai bisogno di componenti scritti da altre persone.

In ogni caso, il modo migliore per iniziare è studiare ciò che altri sviluppatori hanno fatto prima di te e imparare la logica dietro le loro decisioni. GitHub è il vostro migliore amico.

Per un esempio reale del processo di ricerca di uno sviluppatore esperto per una particolare funzione, potete controllare questo post su come il creatore di Angular-Plunker ha costruito le direttive drag-and-drop di Plunker.

Scegliere gli strumenti con cui iniziare

Se stai costruendo una web app, forse puoi dare un’occhiata a Yeoman in quanto mira ad aiutarti a far partire rapidamente nuovi progetti aiutandoti a impostare la struttura del tuo progetto.

Se stai costruendo un’app React, puoi anche controllare gli starter kit e le implementazioni Flux esistenti. HTML5Boilerplate e Bootstrap sono popolari modelli front-end per la tua app. Il più delle volte, i boilerplate usano Gulp o Grunt per la gestione delle attività.

Siccome probabilmente userai alcuni componenti o soluzioni esistenti, dovresti anche installare bower per la gestione delle dipendenze (npm per chi usa Node.js e CocoaPods per gli sviluppatori iOS). Non preoccuparti, la maggior parte delle volte questi strumenti sono accompagnati da tutorial che ti insegneranno come installarli.

Passo 8: Costruire l’app

Sì, ora sei pronto per costruire l’app! Ecco alcuni consigli che dovresti tenere a mente quando costruisci la tua app.

Lista di controllo

Dovresti concentrarti sulla costruzione dell’app funzione per funzione. Così, se non hai finito un compito come un sistema di commenti, non iniziare improvvisamente a costruire una vista del profilo utente. In altre parole, se state costruendo un modulo, per esempio, dovreste lavorare sia sul codice front-end che su quello back-end fino a quando la funzione è completa.

Tutto sommato, per tenere traccia dei vostri progressi, potete scrivere una lista di funzioni da fare e usarla come una lista di controllo.

Scrivete prima i test

A meno che non stiate costruendo un gioco, è una buona idea scrivere un test per la vostra funzione prima di iniziare effettivamente a scrivere la funzione. I bug sono inevitabili, ma i test ridurranno notevolmente i vostri errori e le vostre possibilità di rilasciare codice difettoso in produzione.

Già, scrivere test unitari richiede tempo e a volte ci si può chiedere se ne vale la pena. Tuttavia, se state cercando di costruire progetti più grandi in futuro in cui continuerete ad aggiungere nuove funzionalità, questo potrebbe accadere alla vostra app:

Allora questo (è un’esagerazione di ciò che) può accadere:

O Dio non voglia:

E questo saresti tu, che cerchi di riparare l’app:

…Più o meno.

Così, è una buona idea iniziare in piccolo e prendere l’abitudine di fare Test-Driven Development (TDD), specialmente perché stai iniziando da zero e costruendo qualcosa di semplice.

Non sei a una scadenza con il forcone di un project manager dietro la schiena, vero?

Per suggerimenti sui modelli di test unitari, puoi controllare questo articolo. Un altro consiglio da tenere a mente è quello di evitare di asserire troppe banalità.

Molti strumenti di test sono disponibili per voi da scegliere, come Jasmine o Karma per JavaScript, Rspec per Ruby, PyTest per Python, PHPUnit per PHP, Quick come alternativa a xCTest per lo sviluppo iOS, o qualsiasi strumento che ritenete possa funzionare per voi.

Inoltre, se stai costruendo un’app per iOS o Android, è una buona idea controllare Crashlytics.

7 passi per eseguire il debug in modo efficiente ed efficace

Usa Git

Git è un sistema di controllo delle versioni e un vero e proprio repository con una storia completa e capacità di tracciare le versioni. È una buona idea iniziare a imparare come usare Git mentre costruisci la tua prima app. In questo modo, puoi facilmente annullare i tuoi errori, recuperare i dati persi e altro. Inoltre, se avete intenzione di lavorare con un team di sviluppatori in futuro, avrete bisogno di usare Git comunque. GitHub è il più popolare servizio di hosting di repository Git per progetti open source, mentre Bitbucket è per i repository privati.

Se finisci per incorrere in problemi quando usi Git, questo post sui 10 problemi più comuni di Git e come risolverli potrebbe aiutarti.

Se rimani bloccato…

Come principiante, ti sentirai come quel criceto più spesso che mai.

Non sei solo. A volte, tutto quello che devi fare è prenderti una pausa e lasciare che il problema cuocia a fuoco lento, così puoi schiarirti la mente.

Se questo ancora non funziona, ecco alcuni modi per sbloccarti:

Google

Ho menzionato il Google-fu al punto 7, ma lasciami sottolineare ancora una volta che imparare come Google è una capacità importante che tutti i programmatori devono acquisire. Se rimani bloccato su un bug o non sai perché il tuo codice non funziona, è una buona idea cercare su Google.

Chiedi su StackOverflow

Potresti notare che i tuoi risultati di Google punteranno principalmente a domande e risposte su StackOverflow. Se ancora non riesci a trovare una soluzione al tuo problema dopo aver cercato su Google, allora puoi provare a postare una domanda su StackOverflow.

Ricordati di mostrare che hai fatto la tua ricerca nella tua domanda – è più probabile che tu ottenga una risposta in questo modo.

Alternativa: Trova un mentore

Alcuni diranno che StackOverflow non è adatto ai principianti perché i principianti non sanno come formulare le loro domande. Ma cosa succede se non sai nemmeno qual è il tuo problema?

Se sei sul punto di fare headdesking (o se sei già headdesking…), non devi abusare della tua fronte (se colpisci la testa abbastanza forte perderai solo le cellule cerebrali).

Una grande alternativa per facilitare il tuo sviluppo e il tuo processo di apprendimento è di ottenere aiuto da un programmatore esperto. Non avete bisogno di sentirvi come se foste in qualche modo stupidi perché la persona X è un famoso esperto e un programmatore autodidatta. Le persone semplicemente imparano in modo diverso, e tutti i principianti trarranno beneficio da una guida personale in quanto si possono fare errori che non sono un grosso problema ora, ma è in realtà una cattiva pratica.

Ricorda, allora molti sviluppatori autodidatti non avevano i servizi che sono ora disponibili per te.

Quindi, è possibile ottenere aiuto da programmatori esperti attraverso sessioni dal vivo 1:1 su Codementor, dove le tariffe dei mentori partono da $15/minuti. Durante queste sessioni, puoi avere una video chat con uno sviluppatore esperto e condividere il tuo schermo/codice con loro, e il mentore ti insegnerà come correggere il tuo codice così come ti dirà cosa hai fatto di sbagliato in modo che tu possa evitare l’errore in futuro. Puoi anche rivedere il codice della sessione o registrare la sessione sul tuo disco locale tramite lo strumento di video chat. Iscriviti ora e prova i primi 15 minuti gratis con i mentori che offrono l’affare.

Consiglio finale

I programmatori fanno errori tutto il tempo, quindi non sentirti scoraggiato quando non riesci nemmeno a passare un test che hai scritto o se inciampi costantemente su te stesso. Insomma, pensate a iOS9, Android Lollipop, o a qualche app che amate usare. Sicuramente anche le app più mature là fuori hanno ancora dei bug, quindi non date per scontato di poter costruire l’app più perfetta e senza bug (naturalmente, questo non significa che dovreste fissare standard bassi per voi stessi – dovreste sempre sforzarvi di costruire app di qualità).

Inoltre, è molto comune passare ore o addirittura giorni su una cosa e avere ancora difficoltà a farla funzionare come volete. Se programmare nuove funzioni velocemente fosse facile, il mondo non avrebbe bisogno di nuovi programmatori. Diavolo, probabilmente ora saremmo su un impeccabile iOS100 e avremmo costruito un mondo digitalizzato come quello di Matrix.

Quindi, un sacco di volte, si sente il termine “fare errori” ogni volta che le persone ti incoraggiano ad iniziare a costruire cose. Loro dicono sul serio. Una cosa che dovrete accettare come programmatore è che non sarete una macchina da codifica cazzuta che può evocare funzioni in un attimo. Fallirai spesso e questo va bene.

Ricorda ancora che sei un principiante, quindi molte cose saranno inevitabilmente difficili all’inizio. Dedicherai molto tempo a qualcosa che pensi dovrebbe essere semplice e ti sembrerà una difficile lotta in salita, ma man mano che acquisisci più esperienza, le cose diventeranno più facili. Non vedi l’ora di provare quel senso di soddisfazione quando finalmente riuscirai a costruire la tua prima app, e potrai anche considerare di vendere la tua app se lo riterrai opportuno.

Happy Coding!

Author Bio


Yi-Jirr Chen || Content Maketing & Operations
Il tipico geek di massa che gioca e ama la scienza/tecnologia. Pubblica anche fiction sotto uno pseudonimo che è uno pseudonimo per una ragione

Altri articoli che potrebbero interessarti:

  • Come ottenere il tuo primo lavoro da sviluppatore (anche se non hai una laurea in CS)
  • I 9 consigli della Developer Community per i principianti della codifica
  • 40 idee per progetti collaterali per ingegneri software
  • Come lanciare la tua carriera e ottenere il tuo primo cliente come sviluppatore freelance

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.