Optimizarea codului într-o lume care nu vrea să se optimizeze

Publicat: 2019-11-22

Optimizarea prematură este rădăcina tuturor relelor.

Este o vorbă comună printre dezvoltatori. Are sens. Optimizarea prematură poate însemna refacerea lucrărilor pe linie, iar timpul este resursa cea mai limitată a dezvoltatorului. Poate însemna să petreci acel timp prețios optimizând scenarii care încă nu există pentru utilizatorii unui produs. Poate însemna scrierea unui cod care este mai greu de înțeles cu câștiguri neclare de performanță.

În timp ce participam cu echipa de examinare a temelor WordPress în urmă cu aproximativ un an, am întâlnit din nou acel sfat. Optimizarea prematură este rădăcina tuturor relelor. Răspunsul a fost adresat unui autor de temă care căuta să scadă numărul și greutatea scripturilor pe care tema lor trebuia să le încarce. Pe de o parte, autorul temei ar putea încărca un script de 1,29 kb fără dependențe pentru a finaliza treaba. Cealaltă opțiune a fost să utilizați scriptul dependent de jQuery inclus în WordPress de bază pentru un total de 105 kb, deoarece „majoritatea” site-urilor WordPress încarcă jQuery oricum.

Pentru mine, răspunsul a fost simplu. Utilizați scriptul mai mic, cu excepția cazului în care scriptul de bază a fost deja încărcat pe front-end. Nu m-am gândit la asta în termeni de optimizare prematură . Am considerat-o ca fiind o optimizare de zi cu zi, simplă, veche, uzuală.

Dezvoltatorii nu ar trebui să confunde optimizarea prematură cu conceptul de a lua decizii inteligente de design la începutul procesului. Nici nu ar trebui să aștepte până la etapa finală de dezvoltare pentru a începe optimizarea, un moment în care se pune accent pe livrarea unui produs către utilizatorii finali. Acesta este un semn al unui proces slab de proiectare a produsului.

În ultimul an, acea conversație a rămas cu mine. M-a ajutat să devin mai conștienți de o tendință terifiantă, nu doar în comunitatea de dezvoltatori WordPress, ci și cu dezvoltarea web în general. Mult prea des, dezvoltatorii sunt atât de departe de utilizatorii obișnuiți, iar tehnologia pe care aceștia se bazează pe această optimizare este puțin mai mult decât o idee ulterioară. În schimb, ar trebui să fie întotdeauna în fruntea minții oricărui dezvoltator.

Încrederea excesivă pe acest citat folosit greșit a contribuit la creșterea tendinței de măsurare a greutății paginii în megaocteți în loc de kiloocteți. Este prea des folosit ca o justificare generală pentru a nu face nicio optimizare în faza de dezvoltare, în timp ce compensa cu compresia fișierelor și memorarea în cache în producție.

O parte din scrierea codului de calitate este optimizarea codului respectiv în fiecare etapă a procesului de dezvoltare. Este vorba despre a lua decizii grele pentru a tăia lucrurile inutile pe măsură ce software-ul se adună. Memorarea în cache ar trebui să fie o ultimă soluție după ce totul a fost curățat.

Optimizarea prematură se referă mai mult la încercarea de a optimiza atunci când nu există câștiguri clare sau lucrul la micro-optimizări care modifică designul software-ului pentru un beneficiu mic sau deloc. Nu înseamnă să treceți cu vederea creșterile evidente de performanță în timpul dezvoltării.

Nu toată lumea este pe internet Gigabit

Majoritatea dezvoltatorilor pe care îi cunosc sunt pe conexiuni la internet super-rapide, adesea cu viteze de descărcare de 1 Gbps și date nelimitate. În această situație, este ușor să uiți că mari părți ale lumii sunt încă în conexiuni lente, cu limite de date.

Unii pot asocia chiar conexiuni lente cu țări din lumea a treia, unde milioane de oameni folosesc tehnologia de telefonie mobilă 2G. Cu toate acestea, există zone mari din Statele Unite și din alte țări dezvoltate care nu au cablu direct sau linii DSL, care sunt disponibile în mod obișnuit în orașe și suburbii.

Această deconectare este direct evidentă atunci când alți dezvoltatori au inițiat conversații cu mine. În ultimii doi ani, a fost din ce în ce mai obișnuit ca aceștia să ceară un chat video. Nici măcar nu se pune la îndoială dacă așa ceva este posibil (chaturile video nu sunt de încredere în cel mai bun caz pentru mine). Posibilitatea de a conversa prin chat video în orice moment este considerată de la sine înțeles.

Există două opțiuni de servicii de internet în zona în care locuiesc: satelit sau dial-up. Chiar și compania locală de telefonie refuză să ofere DSL în această zonă din cauza costurilor de infrastructură cu linii telefonice vechi de zeci de ani. Din cauza costurilor prohibitive ale accesului la internet prin satelit, care de obicei vine cu limite de date, mulți sunt blocați cu dial-up. Companiile de telefonie mobilă schimbă jocul într-o anumită măsură, presupunând că serviciul este de încredere, dar există dezavantaje în mersul pe această cale, care poate include limitări de date sau hotspot.

Pentru o țară atât de avansată din punct de vedere tehnologic, mulți dintre oamenii săi abia ajung la locul în care erau alții cu un deceniu în urmă.

Deși sunt destul de norocos să aleg unde locuiesc și nu am nimic care să mă împiedice să mă mut, majoritatea nu au această opțiune. Sunt blocați cu tot ce își pot permite. Chiar și în zonele rurale, internetul este o parte inevitabilă a vieții de zi cu zi, iar dezvoltatorii nu le fac ușor acestor oameni.

Deși acest lucru este anecdotic, este realitatea crudă a vieții rurale din buzunarele SUA.

Avantajul de a trăi în pădurile din Alabama este că mi-a schimbat perspectiva ca dezvoltator. A însemnat că trebuia să pun la îndoială fiecare decizie de cod pentru fiecare plugin și temă pe care am construit-o. Cu limitele de date, trebuia să mă asigur că nu folosesc prea multe resurse.

Mai mult decât orice, a avea un plafon de date a schimbat modul în care am folosit internetul. Acum rulez un blocaj de reclame. Am o extensie pentru a elimina videoclipurile de la încărcarea automată. Dezactivez JavaScript pe site-urile grele pe care trebuie să le folosesc. Unele site-uri par interesante, dar nu mă întorc niciodată la ele pentru că sunt niște porci de resurse.

Când locuiești într-un loc în care fiecare octet contează, ai tendința de a evita să-i irosești.

Deși nu a reușit întotdeauna, de la tranziția mea la viața în orașele mici, am încercat să construiesc aplicații într-un mod care să servească oamenilor care nu sunt suficient de privilegiați pentru a avea acces la internet extrem de rapid.

Sublinierea acestui lucru înseamnă a vă asigura că dezvoltatorii sunt conștienți de faptul că optimizarea contează. Contează în fiecare etapă a procesului de dezvoltare. Contează pentru că acești oameni cu conexiuni lente și limite de date trebuie, de asemenea, să cumpere produse, să folosească servicii, să citească conținut și să facă toate celelalte lucruri pe care le fac oamenii pe web.

Dacă sunteți un dezvoltator care se gândește să adauge acel glisor, mecanism de glisare pentru mobil sau alt obiect gadget inteligent, gândiți-vă la cei care trebuie să aștepte ca această funcție să se încarce. Verificați dacă dependențele sale nu încarcă prea multe resurse suplimentare. Faceți câteva cercetări pentru a vedea dacă puteți găsi o implementare mai ușoară. Dar, mai întâi, întreabă-te dacă este necesar.

Temele și pluginurile pe care dezvoltatorii WordPress le construiesc nu ar trebui să fie niciodată un blocaj pentru un site web. Putem face mai bine.