Cuprins
- Introducere
- Cele mai bune practici de baza
- Scrieti Codul mai putin
- Mediile ar trebui sa fie simple si solide
- Evitati problemele simple de securitate
- Control sursa, integrare construire si integrare test
- Urmarirea tendintelor industriei
- Cele mai bune practici si cariera ta
- Cum sa-ti alegi urmatorul post de inginerie
- Educatie suplimentara
- Concluzie
1. Introducere
Software-ul este o industrie cu ritm rapid. Durata de viata a anumitor abilitati pare sa scada in timp; limbile si cadrele au o durata de viata limitata. Unul dintre cele mai importante obiceiuri de dezvoltat este, prin urmare, mentinerea unei intelegeri a „celor mai bune practici” actuale. Cele mai bune practici sunt modele de tehnici, tehnologii de asistenta, obiceiuri si platforme care pot ajuta o echipa de dezvoltare a software-ului in producerea de programe de inalta calitate mai eficient.
Cele mai bune practici se schimba in functie de timpul si mediul in care este produs codul. Prima companie pe care am internat-o la software-ul de rutare de fax produs pentru companii uriase. Este posibil ca procesul de implementare sa fi trimis un inginer la fata locului cu un hard disk pentru a transfera o noua versiune. Compania pentru care lucrez in prezent poate construi pe servere AWS gazduite de mai multe ori pe zi, in functie de cate modificari de cod au fost comise intr-o anumita zi. Acesta este un exemplu despre modul in care „timpul de eliberare” a fost comprimat in ultimii 25 de ani pentru a deveni practic instantaneu in unele medii. Ca atare, cele mai bune practici pentru gestionarea schimbarilor foarte rapide au fost, de asemenea, necesare pentru a evolua.
Cand folositi cele mai bune practici, suportul de cod si datoria tehnica sunt mai putin oneroase atat pentru programatorii individuali, cat si pentru companiile in ansamblu. Codul construit cu cele mai bune practici tinde sa aiba o durata de viata mai lunga, precum si sa coste mai putin pentru intretinere. In plus, mostenirea acestui cod este mai probabil sa fie o solutie viabila la problemele pe care codul nu a fost proiectat initial sa le rezolve. Si, poate cel mai important pentru o organizatie, cifra de afaceri / distribuirea responsabilitatilor dezvoltatorilor sunt mult mai usoare. In timp ce unii dezvoltatori codeaza pentru securitatea locului de munca, codificarea pentru propria obsolescenta este mai buna pentru reputatia si fiabilitatea codului tau.
Cele mai bune practici fundamentale sunt fundamentul unei reputatii bune a programatorului. Prima si cea mai importanta buna practica este de fapt destul de ilogica: scrieti mai putin cod . Acest lucru este consolidat prin crearea de medii – si interactiuni intre medii – cat mai simple si de incredere. In timp ce faceti acest lucru, incercati sa evitati sa faceti greseli de securitate de baza. Apoi, obisnuieste-ti sa testezi unitatile, pentru ca tuturor le place sa doarma … si daca nu scrii teste unitare, nu ajungi sa dormi la fel de fiabil! In cele din urma, daca puteti, configurati un mediu integrat de cladire si testare. A devenit o parte fundamentala a oricarei abordari de bune practici.
Amintiti-va, insa, ca toate aceste practici se vor schimba in timp si vor evolua. Asadar, sa fii constient de tendintele industriei si sa ramai in fata curbei este fundamental important sa stii ce obiceiuri si instrumente ar trebui sa adopti / sa incurajezi sau sa te atrofiezi.
Astfel, ca dezvoltator cu experienta, sa fii la curent cu cele mai bune practici actuale – si sa combini „ceea ce fac copiii cool” cu ceea ce stii deja – este o abilitate esentiala. Sursele mele personale principale pentru aceste informatii sunt postarile de locuri de munca, sondajele de overflow si diverse forumuri de forumuri. Dar sa stii ce se intampla si sa il aplici sunt sarcini separate.
In general, a invata sa aplici cele mai bune practici este o sarcina mai grea decat sa stii ce sunt. Timpul implicat in relansarea unui obicei (de exemplu, amintindu-va ca ati folosit suficiente comentarii) sau reconstruirea unui mediu care este in prezent confortabil, va parea adesea costisitor sau frustrant de mentinut in fata. Si, din pacate, este. Exista insa multe modalitati de a invata sa aplici noi bune practici si cu siguranta merita sa le faci.
2. Cele mai bune practici de baza
Indiferent de transformarea in ceea ce este mai bun de facut, unele lucruri vor fi intotdeauna cele mai bune practici fundamentale pentru care majoritatea dezvoltatorilor vor fi de acord:
- Scrie mai putin cod
- Creeaza medii cat mai simple
- Evitati problemele de securitate standard
- Scrieti teste de baza ale unitatii
Aceste patru practici sunt esentiale de a avea un cod mai intretinator si reutilizabil.
Scrieti Codul mai putin
Cazurile de cod tind sa se umfle. Atunci cand sunt intalnite probleme, acestea tind sa fie rezolvate cat mai repede posibil, cu un impact minim asupra rularii, a codului de lucru. Am lucrat in locuri unde bucati critice de cod erau inconjurate de sucursale mici care tratau problemele partilor interesate. Acesta este, desigur, un compromis.
Codul vechi are adesea probleme structurale care limiteaza extinderea sau reimplementarea acestuia, dar contine in acelasi timp o gama larga de caracteristici extrem de specifice. Astfel, atunci cand un cod de baza este umflat, acesta este umflat cu corectii la probleme legate de client sau arhitectura. Ca atare, stergerea intregii dvs. baze de cod este intotdeauna mai scump decat pare si doriti sa lucrati foarte mult pentru a pastra codul / mediile minimaliste.
Cea mai importanta buna practica ca dezvoltator este sa scrieti un cod mai putin, mai inteligent compartimentat. In mod obisnuit sa fiu perforat in mine: Reduceti, Reutilizati, Reciclati. Reduceti cantitatea de cod pe care o scrieti, reutilizati-va in mod regulat propriile si alte programe si reciclati-l in mai mult spatiu pe hard disk atunci cand puteti.
Pentru a va ajuta sa faceti acest lucru, cititi codul altor persoane din cand in cand. Codul dvs. se va imbunatati, daca il cititi critic, iar codul lor se va imbunatati daca mentionati problemele pe care le vedeti in el. Cititi cu intentia de a face mici modificari (si chiar de a le face) vor face din aceasta o sarcina mult mai semnificativa, asa ca fac acest lucru asa cum permite timpul. Retineti ca, daca faceti o curatare neprogramata intr-un cadru profesional, impingerea patch-urilor catre codul de productie este adesea incruntata. Va sugerez sa discutati in avans despre ceea ce faceti cu intretinatorul oficial.
Invatarea „tiparelor de proiectare” va poate ajuta sau nu sa va organizati mai eficient codul, dar a afla modul in care oamenii de stiinta considera ca ar trebui organizate solutii la problemele comune este o modalitate buna de a va oferi scheletele pentru organizarea viitoare. In cele din urma, in ceea ce priveste structura codului, ceva ce simt ca ar trebui sa mentionez intotdeauna este: daca te gandesti la ceva si esti sigur ca este genial, cel mai probabil gresesti.
„Optimizarea prematura este radacina tuturor raurilor” – Donald Knuth
Ca cineva care a mentinut o baza de cod scrisa de un dezvoltator care a crezut in propriile sale puteri magice, pot sa atest personal faptul ca l-au esuat destul de regulat. Fundamental, majoritatea codului sunt scrise un strat sau doua de abstractizare deasupra compilatoarelor.
Scriitorii compilatori sunt profesionisti de performanta si logica, concentrandu-se pe optimizari de cod la nivel de asamblare. Cand, in limbile de nivel superior, folosesc 95% + dintre programatorii profesionisti, sunteti ingrijorat de optimizare, (in general) faceti o greseala. Daca depasiti programarea cu elemente fundamentale bune, ceea ce va puteti dori este o configurare de mediu mai potrivita.
Mediile ar trebui sa fie simple si solide
Cu cat un sistem mai unic si mai complicat are un sistem, cu atat intregul sistem este mai greu de inteles si de refactorizat. Astfel, cele mai bune practici moderne tind sa focalizeze codul unic dintr-un sistem pe parti cuplate slab, iar aceste parti cuplate slab sunt cat se poate de simple de lucrat. Luati aceste trei medii, de exemplu:
In stanga este o stiva LAMP standard. Timp de zece ani, principalele stive de programare pentru dezvoltarea web completa au fost Linux ➡ Apache ➡ MySQL ➡ PHP. Aceasta stiva include tot ceea ce aveti nevoie pentru a crea o aplicatie web din partea serverului care arata utilizatorului o pagina HTML statica si inca exista oameni care livreaza date cu acest stack astazi.
Stiva software de mijloc este o abordare mai moderna. Atat de moderna evita un ORM si are dezvoltatori care scriu interogari brute MongoDB / SQL. Aceasta decizie a fost luata pentru a creste viteza de dezvoltare, cu costul unora dintre caracteristicile ORM-urilor. Partea frontala a acestei stive de software include React, care este in esenta un intreg mediu de dezvoltare al compilatiei sale care foloseste npm pentru a construi la codul utilizabil. Acest lucru contrasteaza cu includerea Javascript / Silverlight in paginile individuale a mediului (relativ) din vechile scoli.
Stiva software din partea dreapta este chiar mai compartimentata decat celelalte doua. Cadrul de odihna al lui Django este probabil utilizat pentru a interactiona cu un client unghiular folosind modelul de design MVC. Django are un ORM incorporat si ORM poate vorbi cu orice baza de date pe care o utilizati, precum si cu MongoDB. In acest exemplu, Ngnix este ales pentru a fi putin mai usor decat Apache in unele moduri. Si acest exemplu, ca si exemplul mai modern „anterior”, foloseste hostingul cloud, deoarece este mai ieftin sa-ti administrezi pe altcineva sa gestioneze esecurile hardware pana cand folosesti o tona (probabil literal) de hardware.
Totusi, in general, aceste medii tind sa isi rezume complexitatea in parti izolate. Niciun dezvoltator sau tehnician nu poate sti totul. Rezultatul este ca, de-a lungul timpului, cel mai complicat cod de scris a fost, in general, rezumat. Exemple principale sunt componentele de mediu utilizate pe scara larga, experti de nivel mondial, care scriu si mentin in locul dezvoltatorilor interni: servere web, retele, NOC si motoare de baze de date. Astfel, „nevoia dvs. de a cunoaste” ca dezvoltator standard va include rareori stocarea a milioane de puncte de date intr-un arbore B, sa va ganditi cum sa impiedicati o baza de date sa nu aiba conditii de cursa sau sa evitati scurgerile de memorie in timpul ferestrei uptime de 99,9999% a unui server web.
Multe medii moderne contin ORM, pana la dezvoltarea de baze de date a redus valoarea ca optiune de cariera. Dupa ce am scris proceduri stocate care contin peste 1000 de linii de cod, dupa ce cineva a spus, „SQL este misto, dar de fapt nu poti face mare lucru cu el” pentru mine a fost o data … descurajanta. Dar exista un motiv pentru asta: ca o buna practica, codul nu ar trebui sa fie stocat in baza de date. ORM-urile moderne precum Entity Framework, modelele lui Django si Hibernate (pe care nu le-am folosit) extrag baza de date din cod. Cu toate acestea, exista cu siguranta o diferenta intre a avea un administrator al bazei de date capabil sa ajusteze structura de date pentru performanta si programatorii capabili sa creeze liber.
Dar mai ales, ORM-urile extrag comunicarea dintre doua sisteme: cod si date. Standardele de comunicare ajung adesea foarte complexe. Rezultatul? Acestea tind sa devina abstracte. In timp ce invatam Python intr-un boot-camp, unul dintre studentii mei a vrut sa utilizeze API-ul Twitter intr-un mod aprofundat. API-ul Twitter a fost larg si complet. Acestea fiind spuse, unele caracteristici specifice erau disponibile numai daca ai utilizat OAuth 1 si nu OAuth 2.
Se dovedeste ca acolo unde OAuth 2 a avut niste pasi simplisti, fiabili, OAuth 1 a fost … bizantin. Aceasta a determinat dezvoltarea standardului OAuth 2 mai simplist si a diferitelor biblioteci concepute pentru a gestiona strangerea de mana. In general, are mult sens sa incercati sa va mentineti metodele de comunicare cat mai simple si datele curate. Din acest motiv, comunicatiile TCP / IP se fac in general cu biblioteci si date transmise cu JSON. Site-urile web folosesc REST. Compartimentarea si interfetele fiabile de investitii de timp redus sunt o norma si ar trebui sa fie.
Pentru a face ca aceasta comunicare cu investitii de timp redus sa functioneze constant necesita teste. Testele de scris nu sunt distractive la inceput. Stiti ce doriti sa faceti si cunoasteti cazurile dvs. de utilizare, deci de ce scrieti teste? Pentru ca necesita sa te gandesti a doua oara si te va trimite intr-o directie mai buna in general.
Testele unitare nu au fost cele mai bune practici pana cand nu a fost posibila integrarea continua, dar acum este necesar, lucrul cu ele este fundamental. Testele de la capat la sfarsit sunt mai greu de configurat, dar acum sunt si cele mai bune practici de baza. Acest lucru se datoreaza faptului ca dezvoltarea devine mai rapida, dezvoltatorii devin responsabili pentru mai mult din sistem.
Daca sistemul este rupt, timpul pe care il petreci la remediere este timpul pe care l-ai putea folosi pentru a construi ceva nou. Asadar, pe termen lung, incarcarea frontala a tuturor tipurilor de teste automate va permite sa reduceti timpul total pe care il petreceti pentru intretinerea site-ului. Si, in plus, va permite sa dormiti mai bine (nu va dati seama cat de mult poate fi somnul distractiv pana nu va veti trezi la ora 3:00 pentru a cauta un jurnal de transfer de bani). Deoarece testarea este atat de importanta, multe echipe folosesc Test Driven Development, a carui piatra de tema este scrierea testelor inainte de a scrie o singura linie de „cod” care iti rezolva problema.
In cele din urma, pentru a va face mediul simplu si solid, va recomand documentatia. Nu exista un cod de auto-documentare. A alege nume variabile simple si descriptive merge mult, dar a pune un mic bloc de explicatii in varful unei clase sau functii nu te va ucide. Iti promit. In schimb, va poate ajuta sa gasiti un transfer de bani in jurnalele din miezul noptii.
Evitati problemele simple de securitate
Nimeni nu stie nimic despre securitatea digitala. Pariez ca cinci dolari puteti introduce „incalcarea datelor” in motorul de cautare la alegere acum si gasiti unul. Acest lucru se intampla partial pentru ca lumea este mare si securitatea este grea, dar in primul rand pentru ca orice sistem are gauri de securitate. Asadar, munca ta principala ca dezvoltator nu este de fapt pentru a-ti face sistemele rezistente la gloante, ci pentru a evita sa pui pe ele un semn mare „intra aici”.
Timpurile in care mi-a fost incalcat codul au fost atunci cand am folosit parole implicite sau am avut usi spate pentru dezvoltare larga, am inchis doar pentru ca altcineva sa fie deschis din nou. (Jur. Absolut. Niciodata din vina mea, chiar si o singura data.) In general, doriti sa evitati cele mai simple chestii si sperati ca sunteti o tinta mai grea decat urmatoarea aplicatie sau baza de date.
Securitatea comunicarii intra si inter-proces este locul in care se vor afla defectele de securitate construite personal. Astfel, cadrele REST si comunicarile cu obiecte simpliste sunt standarde ale industriei. In cazul in care acest lucru incepe sa greseasca este locul in care luati obiecte simple pe care le-ati trecut si le executati ca intrari programatic. De exemplu, preluarea unui obiect JSON din postarea HTTP, deserializarea acestuia si aruncarea unei variabile de acolo intr-o interogare direct ca sir. Aceasta inseamna ca, atunci cand treceti variabile, doriti sa fiti cat mai siguri de tipul lor.
In cazul in care codul dvs. se termina – si bibliotecile incep – este locul in care vor aparea erorile de securitate pe care nu le-ati produs personal. Cand ma uit la o biblioteca invechita, ma uit si la notele de corectie pentru noua versiune. Motivul pentru care Microsoft va plaseaza computerul de doua ori pe saptamana nu este pentru ca le place sa cheltuiasca bani pe programatori. Se datoreaza faptului ca un sistem de operare la fel de utilizat ca Windows are mii de programatori care incearca sa-l sparga tot timpul. Daca copia dvs. locala de Windows este depasita, va deschideti catre mai multe vulnerabilitati. Serverele si cadrele dvs. nu sunt prea diferite.
Pe partea personala, nici nu doriti ca memoria dvs. sa fie un singur punct de esec. Daca sunteti responsabil de sisteme (care, pe masura ce jobul de „dezvoltator” devine mai mare, este mai probabil) veti avea in cele din urma o multime de parole, chei SSH, certificate de server etc. In general, sunt bazate pe text, asa ca va sugerez sa gasiti un manager de parole si sa il utilizati. (Ca Troy Hunt, folosesc KeePass si este gratuit). De asemenea, genereaza parole, deci nu aveti „Dragons94!” ca parola la 75 de site-uri si sisteme diferite. Utilizati un generator pentru a crea unul mare, copiati fisierul cu parola din cand in cand si treceti mai departe. De asemenea, rotiti aceste parole si taste in mod regulat. Nu terminati pe Slashdot.
In cele din urma, evitati injectia de interogare. Este simplu de facut si aproape ca nu mai primeste o mentiune, deoarece cadrele ORM / REST tind sa il blocheze. Nu perfect, desigur, dar suficient de bine. Daca aveti de gand sa rulati ceva care provine din comunicarea inter-sau intra-proces, trebuie doar sa va asigurati ca este o singura interogare inainte de a o rula. Terminat.
Control sursa, integrare construire si integrare test
Cele mai bune practici de baza actuale finale pe care cu siguranta ar trebui sa le mentionez sunt controlul surselor, integrarea construirii si integrarea testelor. Daca nu utilizati controlul sursa, nu stiti unde se schimba codul dvs. sau cum s-a schimbat. In plus, daca nu il folosesti, vei fi mai pierdut decat este necesar.
In ceea ce priveste integrarea, Jenkins si TeamCity se simt de parca cineva a inventat focul, daca nu le-ati folosit inca. Pentru lecturi suplimentare, acesta este un inceput bun. Daca aveti un sistem care ruleaza testele unitatii si va creeaza pentru dvs., inseamna ca implementarea este fiabila. Desfasurarea fiind fiabila inseamna ca versiunile sunt mai degraba o intrebare „Codul si clientul sunt pregatiti unul pentru celalalt?”, Mai degraba decat „Cand, mai exact, putem programa toate acestea, astfel incat se va reuni?”
Am facut ceva automatizare QA pentru un grup Wells Fargo in urma cu zece ani, iar versiunile au fost programate o data pe trimestru, incepand cu 2:00 AM, cu 2-3 ore de desfasurare si 4-n [N, in unele cazuri, 28] ore. de testare. Nu toate testele pe care trebuia sa le facem ar putea fi facute acum cu un server de integrare, dar versiunile in sine ar fi fost mai usoare cu tehnologia actuala. Pentru a utiliza o tehnologie mai buna, trebuie sa stiti despre ce este vorba si despre tendintele actuale.
3. Urmarirea tendintelor industriei
Viteza si eficienta procesorului s-au putut dubla la fiecare cativa ani de zeci de ani, dar programarea se bazeaza pe oameni – si ne schimbam mult mai lent. Daca urmariti noile instrumente si practici pe care altii le utilizeaza pentru a produce software, le puteti adopta pentru a va ajuta si productivitatea.
Cel mai bun loc pentru a afla ce tehnologii si practici noi sunt eficiente sunt postarile de locuri de munca. Multe locuri de munca (in special la companiile mici) nu au lovit niciodata panouri de afisare largi, asa ca, odata ce o companie face publicitate agresiva pentru o pozitie, cauta ceva specific pe care nu il pot gasi printre contactele existente ale managerilor de dezvoltare. Astfel, atunci cand o companie este dispusa sa-si asume riscul de a angaja un necunoscut complet, in general incearca sa precizeze exact ce competente tehnice doresc sa aiba acel necunoscut complet.
Companiile mai mici si mai noi tind sa foloseasca cele mai moderne tehnologii. Acest lucru se datoreaza in primul rand faptului ca schimbarea culturii lor ii orienteaza catre proiecte cu investitii reduse, cu randamente rapide, dar exista si alti cativa factori la locul de munca, inclusiv urmatorii:
- Cifra de afaceri la companii mai mici este mai mare, iar lucratorii din tehnologie au mai usor timp sa isi gaseasca urmatorul loc de munca cu experienta actualizata
- Proprietarii de proiecte ale companiilor mici tind sa aiba mai multa putere pentru a alege propriile tehnologii
- Proiectele mai mici inseamna ca utilizarea unui software nou reprezinta un risc mai mic
Companiile mai mari tind sa contrasteze cu acest aspect si adopta mai conservativ noile tehnologii. Fiabilitatea, raportul cost / beneficiu si riscul sunt mult mai importante pentru o companie traditionala cu cerinte de continuitate a afacerii.
porno cubabe https://maps.google.nu/url?q=https://adult66.net/
filme porno orgii http://elegantliving.ceconline.com/ELProxy.do?jumpto=https://adult66.net/
gravity falls porno http://memorial.info-komen.org/site/UserLogin?logout=1&NEXTURL=https://adult66.net/
familie porno https://images.google.gl/url?q=https://adult66.net/filme-porno/amatori
porno cartoon https://www.unifrance.org/newsletter-click/6759094?url=https://adult66.net/filme-porno/anal
filme pentru adulti porno https://www.cossa.ru/bitrix/rk.php?id=814&site_id=s1&event1=banner&event2=click&event3=1+%2F+%5B814%5D+%5BLEFT2%5D+Ruward_Full_Service_%C3%83%C2%90%C3%82%C2%BD%C3%83%C2%90%C3%82%C2%B8%C3%83%C2%90%C3%82%C2%B6%C3%83%C2%90%C3%82%C2%BD%C3%83%C2%90%C3%82%C2%B8%C3%83%C2%90%C3%82%C2%B9&goto=https://adult66.net/filme-porno/asiatice
porno rusesti http://www.yoger.com.cn/union/transfer.php?uID=10125&url=https://adult66.net/filme-porno/beeg
filme romanesti porno gratis http://closings.cbs6albany.com/scripts/adredir.asp?url=https://adult66.net/filme-porno/blonde
tia carrere porno http://www.worldlingo.com/S4698.0/translation?wl_url=https://adult66.net/filme-porno/brazzers
filme porno cu studente http://mikaku.a.la9.jp/cgi/yomi1/rank.cgi?mode=link&id=607&url=https://adult66.net/filme-porno/brunete
brazzers porno http://app.streamsend.com/c/13746641/6387/F7xnjnX/KCRD?redirect_to=https://adult66.net/filme-porno/chaturbate
porno cu papusi gonflabile https://maps.google.gy/url?q=https://adult66.net/bruneta-excitata-are-orgasm-in-timp-ce-se-masturbeaza
hayri porno http://www.google.so/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&ved=0ccsqfjaa&url=https://adult66.net/pustoaica-tanara-are-orgasm-in-timp-ce-e-fututa-de-prieten
porno braila http://images.google.st/url?q=https://adult66.net/swingeri-fac-sex-si-isi-filmeaza-partida
filme porno cu mature http://elog-ch.net/counter.php?id=06762&URL=https://adult66.net/tanara-model-e-pozata-si-se-fututa-de-fotograf
porno studio tycoon https://doterra.myvoffice.com/Application/index.cfm?EnrollerID=1&Theme=Default&ReturnUrl=adult66.net/gagica-buna-are-orgasm-in-timp-ce-face-sex-anal-cu-iubitul
sex oral filme porno http://maps.google.ga/url?q=https://adult66.net/blonda-excitata-e-fututa-pe-canapea-de-fratele-mai-mare
masaj erotic porno http://www.google.ki/url?q=https://adult66.net/desene-animate-porno
film porno cu negri https://pages.audioteka.com/app/rdir.php?rdir=https://adult66.net/bruneta-buna-cu-parul-lun-e-fututa-animalic-pe-la-spate
porno mature paroase http://www.google.ne/url?q=https://adult66.net/milf-se-fute-in-disperare-cu-un-negru
Astfel, daca te uiti la postarile de locuri de munca, vei observa destul de des ca marile companii se afla de doi pana la patru ani in spatele varfului tehnologiei.
In fiecare an, Stack Overflow cere tuturor dezvoltatorilor sai in care limbi programeaza si doresc sa se dezvolte. Daca aflati ce vor sa invete alti programatori, doua sau trei mai tarziu va fi (daca nu prea complicat – te privesc, CULisp) mult mai utilizat. Dezvoltatorii, in general, doresc sa ramana angajati, asa ca incearca sa-si alinieze invatarea cu nevoile viitoare ale angajatorilor. Astfel, dezvoltatorii incearca continuu sa inlocuiasca cele mai ineficiente portiuni din timpul lor, folosind instrumente mai eficiente. Acestea fiind spuse, cea mai consumatoare de timp din dezvoltarea de software va fi intotdeauna adaptarea ceea ce instrumentele si codul pot face functionalitatii utilizatorului final pe care oamenii si intreprinderile le folosesc .
Daca mergeti chiar mai adanc decat aceste surse de informatii de baza, este posibil sa aflati ca exista si alte locuri pentru a urmari ce se intampla si urmeaza. Slashdot, Quora, Reddit si alte locuri de intalnire forum / online contin mai multe informatii – ceea ce este adesea lipsit de incredere si ar trebui verificat impotriva altor surse – decat media mass-media standard. Invatarea limbii care va fi calda este adesea o problema de a citi tendintele industriei care dezvolta lucratorii cred ca merita. Dar sa stii care sunt aceste tendinte nu este suficient; va trebui sa le exersezi singur.
4. Cele mai bune practici si cariera ta
In unele moduri, cea mai buna abordare a invatarii metodelor de dezvoltare software este schimbarea locurilor de munca. Tehnologiile si practicile au curbe de adoptie similare – abrupte la inceput, urmate de o crestere lenta, daca acestea sunt utilizate pe scara larga, si apoi o scadere lenta. Cea mai mare diferenta intre diverse tehnologii este daca exista adoptie larga si durata ciclului de viata. Prin urmare, daca va aflati intr-un domeniu precum dezvoltarea front-end, curba de crestere si adoptie a unei tehnologii se poate intampla in intregime intr-un interval de ani, iar declinul nu va implica foarte mult lucrari de intretinere. Rezultatul? Daca doriti sa ramaneti relevanti in cadrul carierei dvs. de dezvoltare front-end, nu va puteti baza pe lauri.
Cum sa-ti alegi urmatorul post de inginerie
In general, cand cautati o pozitie noua, va recomand sa cautati trei lucruri. Haideti sa le descompunem.
Invatare: in primul rand, doriti ca noua pozitie sa va invete ceva. Ca dezvoltator cu experienta, veti avea intotdeauna optiunea de a alege intre doua tipuri de medii de lucru: cele in care aveti experienta vasta sau altele noi .. Este mult mai probabil sa primiti mai multe plati pentru a lucra cu tehnologii pe care le cunoasteti deja. Acestea fiind spuse, daca amestecati tehnologii cu care sunteti partial si tehnologii pe care nu le cunoasteti, puteti sa adaugati valoare, in acelasi timp achizitionand talente / puncte de glont suplimentare pe CV.
Bucura-te: Al doilea lucru cel mai important despre orice pozitie, din punct de vedere tehnic, este sa alegi problemele si situatiile de care te bucuri. Cu cat va bucurati mai mult de problemele pe care le rezolvati, cu atat veti fi mai dispusi sa va extindeti competenta si sa faceti timp / efort pentru a excela in ceea ce faceti.
Potrivit: in al treilea rand, cunoaste natura companiei. Companiile mici tind sa le ofere angajatilor o serie de responsabilitati masive. La o companie suficient de mica, nu puteti avea un titlu exact al postului; In prezent sunt responsabil pentru managementul instantelor AWS, procesele de construire TeamCity, administrarea bazelor de date, programarea in cinci sau sase limbi diferite, notificari de presa, remedieri rapide, decizii de arhitectura s.a.
In posturile anterioare, am avut domenii unice de responsabilitate (verificarea si rectificarea rezultatelor reconcilierii contabile pentru un departament de facturare interna, de exemplu) si am constatat ca cu cat compania este mai mare, cu atat timpul meu m-a concentrat asupra unui singur set de sarcini. In general, daca doriti sa va aprofundati intelegerea unui set specific de sarcini, veti fi mai bine servit la o companie mare. Lucrul cu responsabilitati extinse si diverse (si o plasa de siguranta limitata) se va intampla cel mai adesea la un nivel mic.
Cel mai adesea, o companie va respecta tehnologiile si practicile cu care lucreaza atunci cand incepeti sa lucrati acolo (daca nu sunteti angajat sa implementati ceva nou!). Cu toate acestea, cu cat compania este mai mica si mai flexibila, cu atat este mai probabil sa fiti imputerniciti sa implementati orice instrument considerati de cuviinta. Profita de asta, cerceteaza cele mai viabile solutii la cele mai grele probleme si fa-le sa functioneze.
In schimb, poate exista avantaje pentru a lucra pentru o companie mai mare, in conditiile in care, daca puteti obtine permisiunea de a pune in aplicare un nou sistem sau practica, puteti deveni si pregatire pentru a face acest lucru. In plus, esecul dezastruos este mai probabil sa fie tolerat la o companie mai mare, astfel incat riscul de a dobandi familiaritatea cu o noua tehnologie este semnificativ mai mic.
Educatie suplimentara
Unele dintre cele mai bune practici sunt cele mai usor de dobandit intr-un cadru mai formal de invatamant (sau de alta natura). Desi este destul de usor sa dobandesti o limba noua pe cont propriu, uneori este destul de dificil sa te impingi sa inveti problemele mai profunde. O baza solida in teorie este utila pentru a mentine o cariera constanta, asa cum este gravitatii de educatie avansata sau acreditari proaspete si hot boot camp.
Piata programatorilor este in plina expansiune. Nu am vazut-o la fel de puternica din 1999. Daca va place programarea de dragul sau si piata dureaza un pic in scadere, gradele avansate reprezinta o investitie excelenta atunci cand ocuparea fortei de munca este mai dificila. Sa devii mai versatil si sa intelegi modul in care sunt construite tehnologiile te va face mai angajabil pe termen lung. O cheltuiala post-munca (sau in somaj) pentru 2-4 ani poate aduce un impuls semnificativ veniturilor pe viata, precum si securitatea locului de munca.
Dar daca te grabesti, bootcamps-urile sunt, de asemenea, un loc bun pentru a invata orice este nou si viitor. Una dintre „cele mai bune practici” actuale pentru gasirea unui nou loc de munca este sa ai un depozit solid de cod pe care l-ai creat. Daca creati acest depozit la un bootcamp, precum si o piatra capricioasa interesanta, este posibil ca tabara de pornire sa petreaca mult timp, chiar si pentru un dezvoltator cu experienta. Codementor ar fi un loc minunat pentru a obtine indrumari despre cum sa construiti o baza de cod GitHub pe care sa o impresionati.
Pe masura ce calatoresc pe scara „investitiei de timp”, conferintele sunt un loc bun pentru a afla ce este fierbinte, precum si pentru a putea participa la ateliere cu dezvoltatorii care au creat cea mai recenta tehnologie. Amazon ruleaza evenimente lunare (cel putin) pe AWS si tot felul de alte evenimente sunt programate in mod regulat. Prezentatorii si educatorii la orice conferinta vor fi partasi in favoarea tehnologiilor cu care au petrecut ani in curs de dezvoltare, care lucreaza sau sunt platite pentru sustinere. Acestea fiind spuse, deoarece sunt atat de investiti intr-o anumita tehnologie, sunt in general informative si interesate sa va ajute sa va extindeti baza de cunostinte cu tehnologiile alese.
Pregatirea / certificarea tehnologica specifica este intotdeauna disponibila. Stiu, undeva in spatele capului meu, ca viata mea ar fi mult mai usoara daca as fi petrecut sase luni pentru a obtine Oracle DBA certificat la inceputul meu pana la mijlocul anilor XX. Companiile mici nu respecta atat de mult certificarile, dar companiile mari considera ca certificarile sunt atenuarea riscurilor lor. Daca sunteti certificat cu o anumita tehnologie, este mai probabil (in ochii lor) sa fiti competent cu aceasta tehnologie specifica intr-un mod asteptat. Astfel, obtinerea certificatului poate fi un pas mare catre o cariera relativ stabila pe o piata zbuciumata. Ca avertizare, poate fi si o investitie mare intr-o tehnologie care dispare de pe piata muncii.
Contributia la sursa deschisa este intotdeauna disponibila. In timp ce software-ul de sistem de operare este notoriu dezordonat, lucrul la mai multe proiecte va va ajuta sa intelegeti ce standarde ar ajuta intr-o lume ideala. Desi acesta poate fi un pas infricosator pentru un dezvoltator mai nou, merita incercat. Dupa ce am lucrat cu o serie de baze de coduri construite profesional, pariul meu este daca doriti sa accesati si sa scrieti comentarii / documentatii logice in primele 10 proiecte open source, puteti incepe maine si nimeni nu s-ar plange (atata timp cat contributiile dvs. fac sens!).
Am descoperit ca predarea prin Codementor m-a invatat o suma imensa. Fiecare intrebare pe care o avea un student a fost complet noua pentru mine si am petrecut destul de mult timp cercetand si reparand lucruri pe care nu stiam ca le pot rupe. Acest tip de experienta a fost oglindita in perioada in care am petrecut predarea unei tabere de boot.
Cea mai mica modalitate de investitie cea mai mica pentru a invata unele metode noi de gestionare a codurilor este de a merge la un hackathon. Am facut un singur „produs distractiv viabil” (un joc) in timpul unui astfel de hackathon, dar am invatat o tona de la o mare varietate de alti programatori.
5. Concluzie
Ca dezvoltator, invatarea si utilizarea celor mai bune practici este piatra de temelie a mentinerii unei cariere solide. Singura constanta in industria calculatoarelor este schimbarea, iar a cadea in spatele curbei este costisitor. Urmarind continuu modul in care industria se schimba, puteti produce coduri mai bune mai rapid. Producand mai rapid un cod mai bun, puteti face solutii mai eficiente.
Exista multe resurse care detaliaza modul in care altii si-au imbunatatit calitatea codului, sau au construit afaceri pe cod, dar toate tehnologiile pe care le utilizati in timpul carierei dvs. se vor schimba sau se vor schimba in timp ce construiti cu ele. Fii la curent cu mediul tau si cariera ta poate prospera.








