0766719180 [email protected]

In primul rand, cine sunt eu sa iti dau tie sfaturi despre cum sa lucrezi? Salut, eu sunt Mihai, si lucrez de aproape 5 ani in domeniul web si de 4 ca programator web. Am inceput ca un web designer si acum lucrez la proiecte complexe si acopar toata partea tehnica de la front-end si pana la baza de date si administrarea serverului. Am facut parte din cateva echipe (mici si medii).

Lucrand de ceva timp ca programator web, si in toata perioada asta am apucat sa vad foarte multe practici, atat bune si rele. Ele pot face diferenta intre un profesionist si un amator. Unele sunt esentiale, altele nu. Este bine sa le urmezi pe toate, desi aparent unele iti pot ingreuna munca. Nu exista reguli fixe, asa ca trebuie intotdeauna sa judeci din perspectiva proiectului sau a taskurilor care urmeaza.

Hai sa dau un exemplu concret: Nu ai avea de ce sa introduci o metoda de „testare automata” in proiectul tau in momentul daca pentru perioada urmatoare trebuie doar sa faci niste schimbari minore sau care nu afecteaza prea mult functionalitatea. Un alt exemplu, in cealalta directie, ar fi ca desi poate urmeaza sa schimbi doar 2-3 linii de cod, este totusi bine sa ai totusi un backup la indemana, doar ca sa fii sigur.

Iti recomand sa tii cont de cele de mai jos fie ca esti programator web incepator sau experimentat (desii cel mai probabil le stii deja). Nu conteaza ca lucrezi la un job normal sau esti un programator freelancer (liber profesionist).

Unele reguli au legatura cu celelalte, iar punandu-le pe toate in aplicare, vei ajunge sa construiesti un workflow specific unui programator web profesionist. Si chiar daca nu iti castigi existenta din programare, si ai 1-2 site-uri ale tale (sau ale altcuiva) la care lucrezi, tot iti vor prinde tare bine.

4 reguli esentiale pentru un programator web:

#1: Fa intotdeauna backup

Este probabil cea mai importanta regula, si cea care te va salva de cele mai multe probleme. Exista mai multe tipuri de backupuri, adica automate sau manuale. Chiar daca ai un proces automatizat de backup, este bine totusi sa faci inca unul manual, inainte de orice schimbare. Nu se stie niciodata ceea ce urmeaza sa se intample.

In ce consta backupul? Depinde de ceea ce urmeaza sa faci.

Daca ai un site care nu este prea complicat din punct de vedere tehnic, este posibil sa fie de ajuns sa faci un backup al fisierelor. Daca ai acces la FTP sau la un manager de fisiere, atunci recomand sa faci o arhiva cu fisierele website-ului si apoi sa o descarci intr-un loc sigur.

Fa-ti un loc unde vei tine toate backupurile, pentru toate site-urile. Eu am un folder pe dropbox, unde am cate un sub-folder pentru fiecare client, si acolo am backupuri impartite pe luni (pot avea mai multe backupuri intr-o luna). Acolo tin si backupuri pentru fisiere, dar si pentru bazele de date.

Ca tot a venit vorba de baze de date, voiam sa spun ca poti avea, de cele mai multe ori, un site care are si o baze de date. De fapt, sunt doar 2 tipuri de websiteuri care nu au o baza de date locala: Cele statice (nu se modifica acel continut de pe ele decat manual, de programatorul web), site-urile care au o baza de date dar sunt complitate pentru a lucra ca si cele statice (vezi static website generators) si site-uri care au legatura cu o baza de date dar este externa (spre exemplu conectate printr-un API la un serviciu google).

De cele mai multe ori, website-urile au o baza de date.  Exista o sansa foaaarte mare sa ai un website scris in WordPress, avand in vedere ca e cel mai popular CMS din lume. In cazul asta, ai o baza de date de tip MySQL.

Daca ai un panou de control, de tip cPanel, acesta contine un soft numit phpMyAdmin. Este posibil sa il ai si fara cPanel. Incearca urmatorul link: www.siteultau.com/phpmyadmin. Daca nu, trebuie sa vezi ce alte optiuni ai pentru a putea sa faci o copie a bazei de date.

Nu te speria, procesul de export de obicei dureaza cateva secunde, si nu implica setari complicate sau asa ceva. Cauta pe google sau intreaba-l pe cel care se ocupa de serverul tau, cum poti sa faci backup.

Odata ce ai facut backup, de obicei vei avea un fisier .SQL sau o arhiva (.zip sau .gz), ceva de genul asta. Pune-o intr-un loc sigur.  Fac referinta iar la folderul acela cu backup-uri, de care ti-am povestit.

Este de preferat ca aceste backupuri sa fie salvate in cloud. Am dat exemplul cu dropbox, dar poate sa fie altul (google drive). Programatorii web de obicei se bazeaza pe serviciile de la amazon pentru chestiuni de genul asta, ai mai mult control pentru automatizare. Cauta despre Amazon AWS, mai exact Amazon S3. Daca de exemplu ai WordPress, poti folosi un plugin de backup, si acesta poate sa aiba integrare cu S3, ceea ce iti permite sa faci backup automat. Este cea mai sigura varianta.

Server programare web

#2: Nu lucra niciodata pe serverul live

O alta regula, extrem de importanta. Te rog, niciodata sa nu faci modificari pe serverul live, decat daca este absolut necesar. Mai ales daca este vorba de un website sau o aplicatie care are ceva trafic. De ce? Niciodata nu poti fi sigur de ceea ce se intampla atunci cand faci schimbari.

Suntem oameni, si de cele mai multe ori gresim, fara sa ne dam seama. Poti sa pui o virgula in plus, sau sa scoti o linie de cod, fara sa iti dai seama. Dai save, te duci sa incarci websiteul si apoi descoperi, socat, ca ai o eroare critica in website. Sau mai rau, primesti un ecran alb, fara nici un fel de explicatie. In cazul asta, singurul lucru care te ajuta sa rezolvi problema este sa schimbi ceea ce ai modificat data trecuta (daca mai tii minte).

Nu se stie niciodata cum reactioneaza platforma (websiteuri) la schimbarile tale. Plus de asta, e foarte greu sa lucrezi direct pe site. Ce faci, modifici direct pe FTP? E foarte greu (nu imposibil) sa folosesti un editor text.

Daca ai un proiect serios, fa o regula stricta din a nu lasa pe nimeni sa modifice direct website-ul. Ba chiar ti-as recomanda sa faci o procedura exacta prin care se fac actualizari asupra fisierelor site-ului.

Singurele abateri de la regula aceasta, de a nu lucra direct pe site-ul live, sunt modificarile de continut ale website-ului. Adica sa zicem ca ai articole pentru un blog, sau anumite pagini pe care vrei sa le modifici, sau sa adaugi altele noi. Da, in cazul asta evident nu trebuie sa folosesti o versiune locala. Dar din nou, totul tine de ceea ce vrei sa modifici.

Daca de exemplu ai mai multe modificari de design de facut, chiar daca nu modifici fisere, e posibil sa zapacesti tot site-ul si utilizatorii sa nu inteleaga nimic din el, in timp ce faci tu asta. E mai bine sa ai o copie locala a site-ului, si sa faci modificarile acolo. Crede-ma, nu vei munci de 2 ori.

Daca te bazezi pe un sistem de versionare, problema asta dispare. Dar iti voi da detalii despre asta mai jos.

Server programare web

#3: Ruleaza pe cat posibil o versune de staging

https://www.screencast.com/t/QeKg95Y755

Asta este un concept putin mai avansat, dar inca o data, foarte recomandat. Deci sa zicem ca lucrezi la tine pe local. Creezi noi functionalitati in aplicatia sau site-ul tau, si vezi ca totul merge super. Esti incantat, si vrei ca toata lumea sa vada update-urile. Urci schimbarile pe server, si constati cu stupoare ca primesti niste erori critice, sau ca nimic nu mai functioneaza. De ce?

Asta pentru ca e aproape imposibil ca mediul tau de dezvoltare (calculatorul tau) sa fie configurat la fel ca si serverul. Tu este posibil sa lucrezi pe windows, 90% din cazuri serverul ruleaza linux. Sau poate ca tu folosesti o versiune de php, sa zicem 7.2, si serverul este setat la 5.6. Cauti cum sa rezolvi niste probleme legat de site-ul tau, gasesti o bucata de cod pe StackOverflow si dai copy paste. Bam, totul merge bine. Dar cand urci pe server, constati ca acesta nu stie sa interpreteze ceea ce ai scris.

Ce te faci?

Pai e simplu. Iti creezi un subdomeniu, de genul staging.siteultau.com, unde vei pune exact ceea ce urmeaza sa pui pe versiunea normala, doar ca mai intai o pui aici de test. Acest sub-domeniu va fi legat de un folder de pe serverul tau. Daca ai WordPress sau un alt CMS popular, poti sa pui fisierele intr-un subdomeniu si sa folosesti aceeasi baze de date. Nu as recomanda totusi, e posibil sa strici ceva acolo. Cel mai bine pentru staging ai un loc separat pentru fisiere, si o copie a bazei de date.

#4: Foloseste intotdeauna un sistem de versionare

Aceasta este o regula esentiala peste care nu trebuie trecut, in special daca esti un profesionist. Ce este un sistem de versionare? Este practic un soft instalat in calculatorul tau, care inregistreaza fiecare schimbare pe care ai facut-o codului tau. De exemplu, ai un template in WordPress pe care vrei sa il modifici. Faci un nou proiect in sistemul de versionare, si il legi de folderul acestei teme. De fiecare data cand vei face o schimbare, in sistemul de versionare vei observa exact ceea ce ai schimbat.

Poti grupa anumite schimbari in seturi, numite „commit-uri”. Fiecare commit practic reprezinta un pas in plus facut in procesul tau de dezvoltare / modificare. Adica sa zicem ca ai schimbat niste variabile care afecteaza niste culori. Ai schimbat in 3 fisiere, modificand 7 linii de cod. Sistemul de versionare inregistreaza aceste schimbari, iar tu le poti grupa intr-un commit. Pe viitor, cand vei putea observa exact ce ai schimbat, sau vei putea sa dai in spate, pas cu pas (sau commit cu commit).

Daca ai facut vreo greseala, poti sa te duci inapoi, reluand exact stadiul in care se afla codul tau in acel moment. Si pe langa asta, te ajuta exact sa vezi ceea ce ai schimbat la codul tau. Daca ai multe schimbari de facut, iti garantezi ca nu le vei tine minte pe toate, si este posibil sa te incurci.

Aceasta problema devine extrem de grava in momentul in care sunt cel putin 2 programatori web implicati. Este aproape imposibil ca unul sa continuie munca celuilalt. Cum faci asta? Faci o arhiva si o trimiti pe mail?

Sistemul de versionare iti permite sa adaugi colaboratori proiectului tau, si acestia sa modifice codul (adica sa adauge alte commituri).

Pare ceva complicat, dar in realitate nu este asa greu in momentul in care ai inteles ceea ce se intampla. Exista mai multe sisteme de versionare, cel mai folosit in ziua de astazi este GIT. Acesta de obicei este folosit pe o platforma, ca de exemplu celebrul GitHub sau excelentul Bitbucket. Eu folosesc si Github si Bitbucket.

Mai ai si alte beneficii daca folosesti un sistem de versionare, dar cred ca este de ajuns momentan.

Astept parerea ta intr-un comentariu mai jos. Sunt curios daca putem sa completam lista de mai sus cu alte chestiuni importante, sau daca ai ceva de spus legat de ceea ce am scris eu.

Happy coding 🙂