Programarea nu înseamnă să apeși pe tastatură și să scrii cât mai repede posibil. Nu înseamnă să memorezi cu religiozitate scurtăturile de la tastatură și, în cele din urmă, să faci ca mouse-ul să devină învechit. Nu este vorba despre a învăța toate limbajele de programare existente, dacă acest lucru este măcar posibil în primul rând. Un programator bun nu este definit de marca, prețul, performanța și sistemul de operare al computerului său, nici de preferințele sale în materie de editoare de cod și IDE-uri – VS Code, Atom, IntelliJ IDEA, Vim, Notepad++ sau altele. Contrar credinței populare datorate multor filme de la Hollywood, programarea nu este cu siguranță echivalentă cu hacking-ul.
În plus, ea merge dincolo de memorarea sintaxei și a funcționalităților încorporate ale unui limbaj de programare. Logica, condițiile, if
declarațiile și algoritmii – în special cei de sortare – nu oferă o imagine completă a ceea ce este cu adevărat programarea. Nici matematica, recursivitatea, informatica și modelele de proiectare nu îi fac dreptate. Deși reprezintă o parte imensă din ceea ce este programarea, ele sunt doar o piesă din puzzle.
Proiectare și planificare
Înainte de a scrie o singură linie de cod, proiectarea și arhitectura unui proiect este planificată cu atenție pentru a asigura sau cel puțin pentru a crește probabilitatea de a avea un ciclu de dezvoltare fără probleme. Aici intră în joc proiectarea de software. Lanțurile de instrumente, conductele, straturile de abstracțiuni pentru API-urile publice și interne, modularizarea, relațiile dintre obiecte și structurarea bazei de date sunt toate planificate în această etapă de dezvoltare.
Suntem depanatori vii și respirați
Arta programării ne cere să gândim în afara cutiei și să rezolvăm problemele cu cele mai pragmatice, eficiente și fezabile soluții. Acesta este probabil motivul pentru care suntem cel mai probabil „tipul I.T.” sau „suportul pentru clienți” al gospodăriei. Practic, este treaba noastră să reparăm ceea ce este stricat. Este ca și cum „programarea” este un mod glorificat de a spune „rezolvarea problemelor”.
Cu alte cuvinte, suntem depanatori vii și vii pe și în afara calculatoarelor noastre și, din acest motiv, este important să știm să citim și să scriem documentație. O documentație adecvată – care vine sub forma unor pagini reale de documentație detaliată, sau la fel de simplu ca și presărarea de comentarii valoroase la baza de cod – servește ca una dintre cele mai importante linii de salvare a unui programator. Fără ea, suntem pierduți în întuneric, incapabili să ne îndeplinim însăși îndatoririle de depanatori. Nu se poate progresa deloc sau foarte puțin, deoarece cea mai mare parte a timpului nostru ar fi cheltuită pentru a experimenta și investiga modul în care funcționează un framework sau o bază de cod moștenită. În general, ar rezulta o experiență de dezvoltator teribil de îngrozitoare.
Luați în considerare toate scenariile posibile
Depanarea este deja destul de dificilă așa cum este. Pentru a înrăutăți lucrurile, execuția codului nu este, de obicei, liniară. Proiectele mari presupun mai multe „ramuri” de posibile căi de execuție datorită logicii de program cu instrucțiunea if
. Trebuie să ținem cont de fiecare scenariu și eroare posibilă, mai ales dacă este vorba de intrarea utilizatorului. Sarcina cognitivă necesară pentru a ține evidența fiecărei căi de execuție posibile face ca programarea să fie cu atât mai dificilă.
Experiența utilizatorului
Plecând în afara lumii dezvoltării, ne punem în pielea unui utilizator mediu. Pe lângă furnizarea de funcționalități, adăugarea de noi caracteristici, remedierea erorilor și documentarea bazei noastre de cod, ne concentrăm, de asemenea, pe modul în care un utilizator mediu interacționează cu aplicația sau software-ul nostru. Luăm în considerare mai mulți factori care duc la o experiență excelentă a utilizatorului, cum ar fi (dar fără a se limita la) accesibilitatea, ușurința de utilizare, ușurința de utilizare și -descoperire, designul interfeței utilizator, temele de culoare, animațiile funcționale și performanța.
Performanță și optimizare
Printre altele, performanța este o fațetă uriașă a programării în sine. Noi, în special cei cu o pregătire în domeniul informaticii, ne străduim să folosim și să scriem cei mai eficienți algoritmi din punct de vedere al timpului și al spațiului. Suntem obsedați de scara de timp insondabilă a microsecundelor pentru a stoarce cât mai mult din memoria, procesoarele și GPU-urile noastre disponibile.
În contextul dezvoltării web, optimizarea rețelei este un concept important de înțeles. Sărim prin cercuri pentru a minifica și comprima HTML-ul, CSS-ul și JavaScript-ul nostru doar pentru a minimiza sarcina utilă a unui răspuns de la server. Imaginile și alte resurse diverse sunt, de asemenea, comprimate și încărcate lazy-loaded pentru a minimiza cantitatea de date pe care utilizatorul trebuie să o descarce înainte ca o pagină să devină semnificativă și utilizabilă.
Cu toate acestea, există momente în care devenim prea obsedați de performanță. Optimizarea prematură devine o problemă atunci când ne preocupăm în mod inutil să optimizăm anumite părți ale unei baze de cod în loc să ne concentrăm asupra a ceea ce trebuie făcut pentru un progres real și productivitate. În acest caz, trebuie să avem înțelepciunea de a judeca care părți ale bazei de cod au cu adevărat nevoie de optimizare.
Securitate
Dincolo de interfața utilizator și de logica software-ului nostru, ca programatori, suntem responsabili pentru securitatea utilizatorilor noștri. În zilele noastre, în care datele sunt foarte râvnite și puternic monetizate, este mai important ca niciodată să ne asigurăm că informațiile personale ale utilizatorilor noștri sunt în siguranță. Luăm măsuri suplimentare pentru a proteja datele private deoarece utilizatorii noștri au încredere în software-ul nostru. Dacă nu ne respectăm această responsabilitate, cu siguranță nu suntem programatori adevărați, nici pe departe.
Nu putem fi niciodată prea siguri atunci când abordăm securitatea. Ca regulă generală, „nu avem niciodată încredere în datele introduse de utilizator”. Poate fi considerată chiar o „cea mai bună practică” de a face eforturi mari pentru a igieniza datele și intrările utilizatorului. Nu numai că ne expunem software-ul și infrastructura la un mare risc dacă nu suntem atenți cu ele, dar riscăm, de asemenea, să compromitem datele sensibile ale utilizatorilor – chiar datele pe care promitem să le protejăm în calitate de programatori.
Securitatea nu se referă exclusiv la datele și intrările utilizatorilor, totuși. Virușii, viermii, caii troieni, adware, key loggers, ransomware și alte forme de malware pentru calculatoare continuă să se răspândească și să afecteze milioane și milioane de calculatoare și dispozitive din întreaga lume. Chiar și după decenii de îmbunătățiri tehnologice în materie de hardware și software, nu există un sistem invulnerabil. Securitatea este pur și simplu un meșteșug care se perfecționează continuu, dar care nu va fi niciodată perfecționat, deoarece întotdeauna vor exista câțiva curioși care investighează și caută toate modalitățile posibile de a „sparge” un sistem.
Din acest motiv, indiferent de cazul de utilizare și de baza de utilizatori, ne proiectăm software-ul cu gândul la securitate ca fiind una dintre prioritățile principale, dacă nu chiar prioritatea principală. Facem acest lucru pentru a ne proteja utilizatorii de amenințările menționate mai sus, care pot cauza neplăceri cum ar fi pierderea de date, coruperea fișierelor și blocarea sistemului, pentru a numi doar câteva.
Lucrul în echipă face ca visul să funcționeze
Chiar dacă nu are neapărat legătură cu programarea, lucrul în echipă joacă un rol extrem de important în dezvoltarea de software. Cu toată complexitatea și piesele în mișcare ale oricărui proiect de mari dimensiuni, este imposibil ca o singură persoană să dezvolte software de calitate în ritmul alert al iterațiilor regulate sau în conformitate cu termenele stricte și constrângerile de timp ale unui client sau ale oricărei entități de supervizare.
De aceea avem diverse echipe de oameni care se specializează în una dintre multele fațete ale programării. O singură persoană nu va avea niciodată toate abilitățile și cunoștințele necesare pentru a lipi în mod eficient și coerent fiecare fațetă împreună. O echipă poate fi responsabilă de designul UI și de accesibilitate, în timp ce o alta poate lucra la funcționalitatea software-ului în sine. Dacă toate competențele diverselor echipe specializate sunt combinate, software-ul rezultat va avea cea mai bună funcționalitate, experiență de utilizare, performanță și securitate pe care o poate avea în cadrul constrângerilor financiare și practice.
Pentru gestionarea timpului și respectarea termenelor limită, organizarea și automatizarea fluxului de lucru sunt de cea mai mare importanță. Ne acordăm timp pentru a configura în mod corespunzător instrumentele și conductele noastre de construire, deoarece acest lucru ne va economisi mult timp în viitor. În general, randamentul investiției crește pe măsură ce trece timpul.
Să lucrăm bine cu ceilalți
Pentru a expune ideea de lucru în echipă și cooperare, stabilim relații sănătoase cu colegii noștri, deoarece, în cele din urmă, succesul unui proiect depinde în mare măsură de succesul echipei din spatele acestuia. Facem un efort pentru a promova un mediu de lucru de susținere, în care seniorii cu experiență îi îndrumă cu atenție pe noii veniți.
Din moment ce dezvoltăm software în echipă, trebuie să fim atenți la ceilalți care ne citesc codul. Pentru a menține ciclul de dezvoltare sustenabil pe termen lung, lizibilitatea și mentenabilitatea sunt considerate la fel de importante ca și logica și funcționalitatea unui proiect. Scriem în mod consecvent cod bun și ușor de citit, oferind în același timp mesaje de confirmare și documentație informativă, deoarece acestea ne vor ajuta cu siguranță pe noi și pe ceilalți să înțelegem mai bine codul nostru.
Vorbind despre ceilalți care ne citesc codul, o revizuire a codului este o mare oportunitate de a învăța mai multe despre cele mai bune practici în programare. Este, de asemenea, o altă modalitate de a ne familiariza cu o bază de cod și cu designul și arhitectura care stau la baza acesteia. Deși critica constructivă este neplăcută și dificil de gestionat din partea celui care o primește, este important să o luăm ca pe un sfat sănătos pentru ca noi să ne îmbunătățim ca programatori.
Programarea este grea
Programarea cuprinde multe aspecte dincolo de funcționalitate, cum ar fi experiența utilizatorului, performanța, securitatea și munca în echipă. Nu este suficient să ne concentrăm strict pe un singur aspect în timp ce le omitem pe celelalte. Pentru proiecte de dimensiuni și importanță notabile, nu este la fel de simplu ca și cum ai tasta câteva linii de cod. Pentru a avea succes, este nevoie de multă planificare atentă, proiectare, considerație și cooperare în echipă. De fapt, atunci când se programează se petrece mai mult timp gândind decât tastând, mai ales în timpul sesiunilor lungi de depanare.
În cele din urmă, programarea înseamnă, de fapt, învățare continuă și non-stop. Adaptabilitatea și învățarea constantă sunt cheile pentru a supraviețui în această industrie. Nu ne putem aștepta să rămânem relevanți dacă nu ne facem partea noastră pentru a continua să învățăm. Într-o industrie atât de volatilă, cu îmbunătățiri tehnologice exponențiale, trebuie să ținem pasul cu ritmul său rapid, pentru a nu sfârși în praf.
Vreau să închei acest articol recunoscând munca grea a tuturor dezvoltatorilor din întreaga lume. Pentru a scrie acest articol, a trebuit să reflectez asupra fluxului de lucru zilnic al unei echipe de dezvoltatori. A trebuit să analizez numeroasele aspecte ale programării și dezvoltării de software care, de obicei, trec neobservate. De atunci, am avut o mai mare apreciere pentru toate programele software instalate în calculatorul meu. În acest scop, încurajez pe toată lumea să mulțumească astăzi unui programator, indiferent de experiență. Unde am fi fost fără ei?
Nu luați niciodată munca lor asiduă ca fiind de la sine înțeleasă.
.