Începutul de an este un moment bun pentru a medita la viitor. Cum putem crește în carieră? Cum putem avea o slujba (mai) stabilă? Cum putem deveni mai căutați într-o piață competitivă? Acest articol conține zece abilități tehnice care pot ajuta un programator să se facă remarcat de către colegi sau de către manageri pentru eficiență.
Mașinile de Formula 1 au multe secrete; cel mai bine păstrat este cel al anvelopelor. Motivul este simplu: oricât de eficient ar fi motorul și pilotul, anvelopele sunt cele care conectează mașina cu solul.
Tastatura este modul prin care creierul programatorului se conectează cu codul. Ideile sale, oricât de bune ar fi, trebuie în final transferate în cod cât de repede cu putință. Touch typing este abilitatea de a scrie la tastatură fără a o privi. Touch typing permite scrierea rapidă și concentrarea completă pe rezolvarea problemei. Mai mult, permite reducerea timpului de scris e-mail-uri sau documentație.
Ca orice abilitate, touch typing poate fi antrenat: www.typingstudy.com , www.typingclub.com/typing-qwerty-en.html sau play.typeracer.com sunt site-uri unde puteți învăța touch typing sau intra în competiție cu colegi sau prieteni la viteza de scris la tastatură. Utilizarea acestor site-uri poate deveni și o activitate foarte amuzantă, prin natura competitivă a lor.
Editoarele moderne de cod au sute de funcționalități. Câteva dintre ele sunt extrem de folositoare și nu îndeajuns folosite. Stăpânirea lor permite editarea, navigarea și modificarea rapidă a codului, chiar și dacă este necunoscut sau nu este bine structurat.
De exemplu:
Multe alte funcționalități utile sunt documentate în cheatsheets disponibile online.
Orice modificare a codului necesită validare. Pentru cei care folosesc un limbaj compilat, timpul necesar pentru validare depinde de timpul de compilare. Nu este niciodată plăcut să aștepți ca programul să se compileze. În plus, concentrarea se pierde în acest timp.
IDE-urile Java, precum Eclipse și IntelliJ Idea oferă compilare continuă cu prețul timpului de procesor și memoriei. .NET Daemon de la RedGate (http://www.red-gate.com/products/dotnet-development/dotnet-demon) oferă același lucru pentru programatorii .NET.
Chiar și fără aceste unelte, este posibil să scazi semnificativ timpul de compilare al unui program, oricât de mare ar fi, folosind câteva tehnici:
O funcționalitate poate fi implementată în nenumărate moduri. Doar câteva din aceste moduri sunt atât corecte cât și simple și ușor de extins.
Una dintre metodele de simplificare este de a folosi la maxim ceea ce este deja implementat în tehnologia folosită. Construcțiile de limbaj permit de asemenea simplificarea la maxim a codului.
O metodă contraintuitivă de a învăța foarte bine o tehnologie este de a încerca alte tehnologii și de a face comparații între ele. Cea mai simplă metodă de a încerca altă tehnologie este prin colaborarea cu un programator care o cunoaște, fie prin discuții pe cod existent sau scrierea de cod nou folosind pair programming (vezi 2).
Principala problemă din software în ziua de azi este faptul că trebuie sa modificăm mereu cod existent. Se observă în viața unui proiect cum la început, codul este ușor și rapid de modificat. Pe măsură ce proiectul avansează și tot mai mult cod este creat, modificările devin tot mai dificile. De aceea design-ul aplicației trebuie să fie optimizat pentru modificabilitate.
Principiile SOLID și design patterns au apărut acum mai mult de zece ani ca soluții la aceste nevoi. Orice echipă care are probleme cu modificarea codului ar trebui să investească timp în înțelegerea profundă și aplicarea acestor tehnici.
Codul greu de modificat poate fi transformat în cod ușor de modificat prin refactorizare. Refactorizarea este o investiție în viitor; codul la care ajungem "opune" mai puțină rezistență, costurile de implementare ale funcționalităților noi scăzând.
Pentru o refactorizare reușită e nevoie de două elemente: cunoașterea și aplicarea principiilor de design modificabil (vezi 6) și scăderea timpului de refactorizare.
Există câteva secrete ale refactorizării eficiente:
Pe măsură ce funcționalități noi sunt adăugate la o aplicație, timpul de testare tinde să crească. Modularizarea, adăugarea de noi testeri și/sau testarea automată sunt soluții posibile ale acestei probleme. Echipele care aleg testarea automată întâmpină dificultăți în fața testelor care devin complicate și dificil de menținut. Soluția este structurarea testelor automate folosind piramida testelor.
Piramida testelor este o abordare structurată a testării automate prin împărțirea testelor în mai multe categorii:
O strategie eficientă de testare se bazează pe o combinație între multe teste unitare, îndeajuns de multe teste din celelalte categorii și teste de explorare pentru prevenția majorității bug-urilor ce pot să apară. Această strategie poate acoperi o întreagă aplicație (în cazul celor business sau life critical) sau părțile cele mai riscante din aplicație. Un arhitect sau CTO poate defini această strategie și poate veghea la implementarea ei.
Majoritatea programatorilor lucrează cu cod existent. Adesea, codul este vechi de 2-3 ani, uneori are 10 ani sau mai mult. Cei care l-au scris inițial nu mai sunt în echipă sau nu pot răspunde la întrebări legate de cod. Este așadar treaba programatorilor să înțeleagă codul existent și să-l modifice fără a-l strica atunci când adaugă o funcționalitate sau rezolvă un bug. Dacă testarea unei funcționalități noi este ușoară, validarea faptului ca nu am stricat nimic din funcționalitățile existente este mult mai dificilă. În același timp, am dori să îmbunătățim design-ul pentru a optimiza adăugarea de funcționalități noi în viitor (vezi 5). Dar cum, atunci când codul existent este de neînțeles?
Tehnici speciale de a înțelege și modifica cod neinteligibil au fost create în timp. Dintre ele putem enumera:
Multe alte tehnici există, majoritatea descrise în cartea "Working Effectively with Legacy Code" de Michael Feathers și tratate în cursul "Working FAST and Safe with Existing Code" (www.mozaicworks.com/workshops/working-fast-and-safe-with-existing-code) .
Tehnologiile și industria software se schimbă continuu. Programatorii trebuie să învețe mereu lucruri noi, ceea ce înseamnă că optimizarea învățării este utilă oricui lucrează în acest mediu.
Câteva metode există pentru a învăța mai repede, dintre care enumerăm:
Pentru mai multe detalii citiți articolul "5 Trick to Amplify Learning" (www.mozaicworks.com/blog/5-tricks-to-amplify-learning).
Cel mai important lucru este să vă placă ceea ce faceți. Vor fi momente dificile, probleme sau neînțelegeri în orice echipă. Important este să vă amintiți că programarea este o meserie frumoasă, că lucrați cu oameni inteligenți și că puteți adesea să ușurați viețile utilizatorilor.
Celebrarea succeselor în echipă, evenimente precum "code and beer" sau code retreat, lucrul cu programatori necunoscuți la întâlniri de comunitate sunt câteva moduri prin care vă puteți bucura de crearea de cod și să vă reamintiți cât de distractiv este.
La Multe Împliniri în 2014!