- Geras programuotojas derina tvirtus pagrindus (algoritmus, duomenų struktūras, duomenų bazes, versijų valdymą) su praktiniu dabartinių kalbų ir sistemų įvaldymu.
- Minkštieji įgūdžiai – bendravimas, komandinis darbas, empatija, laiko valdymas ir kritinis mąstymas – yra tokie pat svarbūs kaip ir techniniai įgūdžiai, siekiant sukurti pridėtinę vertę realiuose projektuose.
- Tokie įpročiai kaip švaraus kodo rašymas, refaktoringas, sistemingas testavimas, kitų žmonių kodo skaitymas ir kruopštus savo įrankių išmanymas daro įtaką kokybei ir priežiūrai.
- Supratimas apie judrias metodikas, „DevOps“ praktikas, debesijos paslaugas ir automatizavimo įrankius leidžia geriau integruotis į šiuolaikines komandas ir užtikrinti nuolatinį bei patikimą programinės įrangos tiekimą.
Tapti geru programuotoju neužtenka vien mokėti rašyti kompiliuojamą kodą. Būti kūrėju, kuris iš tiesų kuria pridėtinę vertę, reiškia valdyti platų techninių įgūdžių, darbo įpročių ir asmeninių kompetencijų spektrą. kurie kartu lemia skirtumą tarp to, kas „atlieka darbą“, ir to, kas kuria patikimą ir tvarią programinę įrangą.
Be to, rinka tampa vis paklausesnė: Įmonės nebėra ieškomos tik laisvai kalbančių kalbų specialistų.bet veikiau specialistams, gebantiems bendradarbiauti, suprasti verslą, greitai prisitaikyti ir išlaikyti aukštą techninės kokybės standartą. Žemiau išsamiai apžvelgsite, kokie įgūdžiai skiria vidutinišką kūrėją nuo tikrai gero, kaip jie užmezga ryšį ir kodėl apsimetėlio sindromas nėra pasiteisinimas netobulėti.
Kuo skiriasi pradedantysis programuotojas nuo „gero“?
Diskusijose dažnai iškyla mintis, kad „visi kūrėjai turi apsimetėlio sindromą“. Tačiau Ne kiekvienas, kuris abejoja savimi, yra iš tikrųjų kompetentingas, ir ne kiekvienas, kuris pasitiki savimi, automatiškai yra geras.Dalis bendruomenės atkreipia dėmesį, kad didžioji dauguma profesionaliai programuojančių žmonių neįvaldo pagrindinių programinės įrangos inžinerijos pagrindų.
Kalbant apie gerą programinės įrangos inžinierių, dažnai iškyla tokios sąvokos kaip: Projektavimo šablonai, duomenų struktūros, TDD, DDD, SOLID ir GRASP principai, švarus kodas ir švari architektūraEsmė ne madingų žodžių dievinimas, o bendro žodyno ir pakankamo įrankių rinkinio, skirto gerai struktūrizuotiems sprendimams kurti, turėjimas.
Kai kurie kartelę iškėlė labai aukštai, teigdami, kad Jei negalite įdiegti tokių struktūrų kaip dvigubai susietas sąrašas ar dvejetainis medis neieškodami internete ir nepasikliaudami testais, turite problemų.Sunku save laikyti „geru inžinieriumi“. Nesvarbu, ar sutinkate su šia riba, pagrindinė mintis aiški: jei žinote tik kalbos pagrindus, bet nesuprantate fundamentalių principų, jums trūksta pagrindo priimti pagrįstus projektavimo sprendimus realiuose projektuose.
Technologijų pramonė dėl didelės paklausos dažnai samdydavo bet ką, kas geba „priversti kažką veikti“. Tai paaiškina, kodėl yra tiek daug vos išsilaikončių kodų ir kodėl tiek daug žmonių jaučiasi gyvenantys išlindę iš vandens.Geros žinios yra tai, kad skirtumas tarp to, kur esate šiandien, ir to „gero“ lygio nėra magija: tai konkretūs įgūdžiai, kuriuos galite sistemingai tobulinti.
Pagrindiniai techniniai įgūdžiai, kuriuos vertina kiekviena įmonė
Šiandieninėje rinkoje įmonės neieško neįmanomų vienaragių, tačiau tikisi, kad profesionalus programuotojas padengs tam tikrą solidų minimumą. Yra pagrindinis techninių įgūdžių rinkinys, kuris kartojamas beveik kiekviename pareigybės aprašyme.tiek interneto svetainių kūrimui, tiek verslo programoms ar sudėtingiems skaitmeniniams produktams.
Šiuolaikinių programavimo kalbų ir sistemų įgūdžiai
Pirmas punktas akivaizdus, bet ne mažiau svarbus: įvaldyti bent vieną ar dvi plačiai naudojamas programavimo kalbas ir žinok kokias technologijas mokytisTarp paklausiausių kalbų yra „Python“, „JavaScript“, „Java“, C# ir „Go“, taip pat tokios kalbos kaip „Swift“ ir „Kotlin“, skirtos mobiliesiems įrenginiams. Žinoti sintaksę nepakanka; tikimasi, kad rašysite lengvai skaitomą, prižiūrimą ir pakankamai efektyvų kodą.
Remiantis tuo, Dabartinės sistemos ir bibliotekos daro konkurencinį skirtumąŽiniatinklio ekosistemoje „React“, „Angular“ arba „Vue“ yra ypač aktualūs front-end sistemai, o „Node.js“, „Django“, „Spring Boot“, „Ruby on Rails“ arba „.NET Core“ – back-end sistemai. Šios aplinkos leidžia greičiau ir su geresne struktūra teikti vertę, jei tik suprantate, ką darote, ir ne tik kopijuojate pavyzdžius.
Duomenų struktūros ir algoritmai
Viena aiškiausių raudonų linijų tarp vidutinio ir patikimo kūrėjo yra gilus duomenų struktūrų ir algoritmų supratimasTai ne tik techninė poza pozuojant interviu: tai tiesiogiai įtakoja, koks efektyvus, pritaikomas ir paprastas bus jūsų sprendimas.
Tokios sąvokos kaip susieti sąrašai, medžiai, grafikai, eilės, stekai Įvairūs maišos lentelių tipai, kartu su rūšiavimo, paieškos, rekursijos ir optimizavimo algoritmais, yra esminiai ištekliai. Įvaldę šiuos įrankius, galite samprotauti apie sudėtingumą, išteklių sunaudojimą ir bendrą projektavimo kokybę.
Duomenų bazių valdymas
Beveik kiekviena naudinga programa saugo informaciją. Štai kodėl Supratimas, kaip kurti, užklausti ir optimizuoti duomenų bazes, yra pagrindinis įgūdisTai apima tiek reliacines duomenų bazes („MySQL“, „PostgreSQL“, „SQL Server“, „Oracle“), tiek „NoSQL“ duomenų bazes (be kita ko, „MongoDB“).
Geras kūrėjas žino, kaip naudoti Puikiai išmano SQL, taiko normalizavimą, kur tinka, kuria tinkamus indeksus ir kuria nuoseklias schemas. ir suprasti blogų užklausų poveikį našumui. Taip pat turėtumėte suprasti operacijų, duomenų vientisumo ir, sudėtingesniuose kontekstuose, replikacijos bei mastelio keitimo sąvokas.
Versijos valdymas naudojant Git
Profesionalioje aplinkoje darbas be versijų kontrolės neįsivaizduojamas. „Git“ įsitvirtino kaip pasaulinis kodo pakeitimų valdymo standartas ir bendradarbiauti paskirstytose komandose. Nepakanka vien mokėti įsipareigoti ir siekti rezultatų; tikimasi, kad gerai išmanysite padalinius, sujungimus ir konfliktų sprendimą.
Be to, geras „Git“ naudojimas apima Aiškūs ir dažni pakeitimai, gera šakojimo praktika, gerai dokumentuotos užklausos ir sistemingos kodo peržiūrosVisa tai pagerina atsekamumą, kokybę ir palengvina probleminių pakeitimų atšaukimą.
Žiniatinklio kūrimas ir API
Daugelis dabartinių sprendimų yra žiniatinklio programos arba prijungtos paslaugos. Suprasti, kaip veikia žiniatinklis, yra beveik privaloma, net jei nesate „pilno steko“ kūrėjas.Frontend programavimo srityje pagrindas yra HTML, CSS ir „JavaScript“; vėliau pasitelkiamos tokios sistemos kaip „React“ ar „Vue“, skirtos kurti išsamias sąsajas.
Užpakalinėje dalyje tokios technologijos kaip Node.js, PHP, Python, Ruby on Rails, Java arba .NET Jie leidžia kurti patikimas API ir paslaugas. Žinoti, kaip kurti ir naudoti RESTful arba GraphQL API, tvarkyti autentifikavimą (OAuth 2.0, JWT) ir nuo pat pradžių apgalvoti saugumą, yra didžiulis privalumas bet kurioje profesinėje aplinkoje.
Debesijos paslaugos ir diegimas
Įmonės vis dažniau pereina prie debesijos infrastruktūros. Suprasti AWS, Azure ar Google Cloud pagrindus tampa įprastu reikalavimu.ypač projektams, kuriuos reikia greitai išplėsti arba visada turėti prieinamus.
Kompetentingas kūrėjas bent jau supranta, kaip diegti programas, konfigūruoti aplinkas, valdyti saugyklą ir naudoti valdomas paslaugasDebesis nėra tik „dar vienas serveris“: jis daro įtaką programinės įrangos dizainui, saugumui ir veikimui.
Gera saugumo praktika
Pasaulyje, kuriame duomenų nutekėjimai nuolat patenka į antraštes, Ignoruoti saugumą yra neatsakinga.Rimtas kūrėjas žino pagrindinius interneto pažeidžiamumus (injekcijas, XSS, CSRF, autentifikavimo ir autorizacijos problemas ir kt.) ir priemones, reikalingas joms sušvelninti.
Taip pat turite atsižvelgti į duomenų saugumą perdavimo ir saugojimo metu, Saugiai tvarkykite prisijungimo duomenis, venkite nesaugių šablonų ir dirbti kartu su infrastruktūra, kad programa nebūtų silpnoji grandinės grandis.
Minkštieji įgūdžiai: gero kūrėjo žmogiškoji pusė
Minkštieji įgūdžiai dažnai yra nepakankamai vertinami, tačiau Tai yra veiksniai, lemiantys, ar kas nors tinka komandai ir ar projektai gali sklandžiai vykti.Daug žinių apie kodą, bet mažai apie žmones, dažnai sukelia nuolatinę trintį arba projektus, kurie užsitęsia dėl bendravimo stokos. Be to, suprasti, kodėl daugelis darbo vietų, kurių dirbtinis intelektas nepakeis Jie remiasi žmonių įgūdžiais ir padeda įvertinti šias kompetencijas.
Komandinis darbas ir bendravimas
Programinės įrangos kūrimas retai kada yra vienišas darbas. Didžioji dauguma projektų apima daugiadisciplines komandasProduktas, dizainas, verslas, kokybės užtikrinimas, „DevOps“ ir kita. Gebėjimas sklandžiai bendradarbiauti yra būtinas.
Geras kūrėjas žino Aiškiai paaiškinkite technines idėjas tiek kitiems techniniams žmonėms, tiek netechniniams asmenims.Paprašykite pagalbos, kai jos reikia, pateikite atsiliepimus nepuldami žmogaus ir dokumentuokite esminius dalykus. Šis bendravimo gebėjimas sumažina nesusipratimų skaičių, pagreitina sprendimų priėmimą ir užkerta kelią daugeliui problemų.
Prisitaikymas ir nuolatinis mokymasis
Technologijos keičiasi absurdišku greičiu. Prisirišimas prie vieno įrankio ar kalbos yra puikus būdas tapti nereikšmingam. vos per kelerius metus. Štai kodėl įmonės labai vertina gebėjimą mokytis ir prisitaikyti.
Šis mąstymas virsta smalsumas naujiems sprendimams, noras išeiti iš komforto zonos ir nuolatinis mokymasis y išmokti naujų įgūdžiųKursai, knygos, tinklaraščiai, paskaitos, indėlis į projektus ir kt. Svarbu ne vytis kiekvienos tendencijos, o žinoti, kaip išsirinkti, ką verta įtraukti į savo įrankių rinkinį.
Šis mąstymas virsta smalsumas naujiems sprendimams, noras išeiti iš komforto zonos ir nuolatinis mokymasisKursai, knygos, tinklaraščiai, paskaitos, indėlis į projektus ir kt. Svarbu ne vytis kiekvienos tendencijos, o žinoti, kaip išsirinkti, ką verta įtraukti į savo įrankių rinkinį.
Empatija ir orientacija į vartotoją
Dienos pabaigoje jūsų sukurta programinė įranga yra naudojama kažko kito. Empatija padeda suprasti, ko reikia vartotojams ir kas juos erzina.o tai veda prie tikrai naudingų, o ne tik techniškai „gražių“ sprendimų.
Geras bendravimas su klientais, kolegomis ir kitais asmenimis taip pat reikalauja empatijos. Nuoširdžiai klausykite, įsivaizduokite save kito žmogaus vietoje ir atitinkamai pakoreguokite savo bendravimo stilių. Tai pagerina darbo aplinką ir leidžia priimti labiau pagrįstus sprendimus.
Organizuotumas, laiko valdymas ir kantrybė
Programinės įrangos projektai paprastai yra maratonai, o ne sprintas. Labai svarbu gerai valdyti savo laiką, suskirstyti užduotis pagal prioritetus ir išlikti ramiam atliekant ilgus projektus.Kūrimas apima bandymus ir klaidas, kliūtis ir refaktoravimą, todėl klaidingas skubėjimas dažnai veikia prieš jus.
Planuokite savo darbą bent minimaliai, Naudokite užduočių valdymo įrankius („Jira“, „Trello“ ir kt.), realiai įvertinkite ir būkite kantrūs savo procesui. Dėl to rezultatas yra daug geresnis, o kelionė – tvaresnė.
Kūrybiškumas ir kritinis mąstymas
Programavimas – tai ne tik receptų laikymasis. Didelė darbo dalis susijusi su problemų, kurių niekas anksčiau nebuvo išsprendęs visiškai tokiu pačiu būdu, sprendimu.Štai čia ir praverčia kūrybiškumas: skirtingų metodų paieška, įrankių derinimas, reikalavimų supaprastinimas.
Kartu su kūrybiškumu, kritinis mąstymas suteikia jums gebėjimą analizuoti informaciją, įvertinti galimybes ir numatyti pasekmesMokėti pasakyti „tai neturi prasmės dėl X priežasčių“ arba „šis sprendimas po šešių mėnesių žlugs“ yra taip pat svarbu, kaip ir parašyti kodą, kuris jį įgyvendina.
Profesionalaus programuotojo įpročiai ir mąstysena
Be konkrečių įgūdžių sąrašo, Yra daug įpročių ir požiūrių, būdingų geriems kūrėjamsTai darbo būdai, kurių galima išmokti ir kurie laikui bėgant tampa beveik automatiniai.
Švarus kodas, projektavimo principai ir refaktoravimas
Kai esate pavargęs arba patiriate stresą, kyla pagunda rašyti „greitą ir sudėtingą“ kodą. Tačiau Momentinis patogumas dažnai sukuria techninę skolą, kuri vėliau grąžinama su palūkanomis.Tokie principai kaip SOLID, GRASP, KISS arba švarioji architektūra egzistuoja siekiant projektavimo palankumo, nuoseklumo ir lengvai prižiūrimų sprendimų.
Atsakingas kūrėjas atlieka pertvarkymus. Pirma, priverskite kodą veikti (pagal testavimą), o tada jį tobulinkite žingsnis po žingsnio.visada palaikykite testų rezultatus žalius. Čia galioja garsioji „skautų taisyklė“: kiekvieną kartą peržiūrėdami palikite kodą šiek tiek geresnį, nei jį radote.
Testavimas: Jūsų kodas nėra ypatingas
Kūrėjai turi keistą santykį su savo kodu: Esame linkę manyti, kad tai veikia, ir testuojame tik „gražius“ atvejus.Tai daro mus blogais savo sprendimų testuotojais, jei testuodami nesame labai sąmoningi.
Štai kodėl taip svarbu sukurti gerą vienetų, integracijos ir, kai tinka, priėmimo testų pagrindą. Testavimo kodas yra toks pat svarbus kaip ir gamybinis kodas.Tai dokumentuoja elgesį, palengvina priežiūrą ir anksti aptinka regresus. Tokios praktikos kaip TDD padeda įsisavinti šią discipliną.
Taip pat naudinga pasikliauti tokiomis strategijomis kaip paprašykite, kad kas nors kitas išbandytų jūsų funkcionalumą, suprojektuotų ekstremalaus korpuso baterijas ar net „karo žaidimus“ kai kolega bando sugadinti jūsų ekraną arba API. Kuo greičiau aptinkamos klaidos, tuo pigiau jas ištaisyti.
Kitų žmonių kodo skaitymas ir programavimas poromis
Beveik visi mėgsta rašyti kodą; skaityti kitų žmonių kodą – daug mažiau. Tačiau Kitų žmonių kodo skaitymas yra vienas galingiausių būdų išmokti skirtingų stilių, gudrybių ir mąstymo būdų..
Galite pradėti nuo savo projekto, peržiūrėdami modulius, prie kurių dar neteko prisijungti, arba tiesiogiai tyrinėti atvirojo kodo saugyklosAtkreipkite dėmesį į tai, kaip jie įvardija kintamuosius, kaip struktūrizuoja metodus, kaip tvarko aplankus. Užduokite sau tokius klausimus: „Ar lengva suprasti?“ arba „Ką daryčiau kitaip?“
Su tuo susijęs ir porų programavimas. Bendras darbas su tuo pačiu kodu (porinis programavimas) suteikia didžiulį žinių mainus.Tie, kurie žino mažiau, mokosi stebėdami, kaip dirba jų kolegos, o tie, kurie žino daugiau, įtvirtina savo žinias suprasdami ir paaiškindami savo sprendimus.
Išmanykite savo įrankius (IDE, CLI, automatizavimą)
Jūs praleidžiate daug valandų prie savo kūrimo aplinkos, todėl Nėra prasmės jį naudoti kaip paprastą teksto redaktorių.Įvaldę klaviatūros sparčiuosius klavišus, automatinį pertvarkymą, greitą naršymą arba integruotą derinimą, taupote laiką ir sumažinate klaidų skaičių.
Tas pats pasakytina apie komandinę eilutę ir išorines programas: Kuo patogiau automatizuoti užduotis, tvarkyti scenarijus ir naudoti palaikymo įrankius, tuo geriau.Tuo sklandesnis bus jūsų kasdienis gyvenimas. Galiausiai, būti kūrėju taip pat reiškia investuoti į savo įrankius, kad padidintumėte savo poveikį.
Konteksto supratimas: daugiau nei „čia vyksta magija“
Įprasta, ypač pradžioje, dalį programinės įrangos gyvavimo ciklo laikyti juodąja dėže: serverį, nuolatinę integraciją, diegimo konfigūraciją ir kt. Nuolatinis buvimas vietoje „čia, kur vyksta magija“, smarkiai riboja jūsų augimą..
Net jei nebūtina būti visko ekspertu, naudinga suprasti Kaip kuriamos versijos, kaip diegiamas jūsų kodas, ką veikia operacijų arba kokybės užtikrinimo komanda, kokie CI/CD įrankiai naudojami ir kaip jūsų darbas dera prie bendros sistemos, bei sužinokite apie naujus vaidmenis, tokius kaip algoritmų auditorius.
Balansas tarp sunkaus ir protingo darbo
Bemiegės naktys ieškant klaidos ar pridedant funkcijų ne darbo valandomis nepadaro tavęs didvyriu; tai dažniausiai prasto planavimo ar procesų, kuriuos būtų galima patobulinti, požymis. Sunkus darbas be krypties neapsimoka: jis pervargina ir retai kada išsprendžia problemos šaknį..
Pelningiau išnaudoti laiką ne darbo valandomis Mokykitės savo tempu, skaitykite technines knygas ir tinklaraščius, dalyvaukite susitikimuose ir tyrinėkite naujas technologijas. Ir svarbiausia – poilsis. Gerai pailsėjęs kūrėjas, turintis naujų idėjų, yra daug produktyvesnis ir daro mažiau rimtų klaidų.
Agile metodologijos, DevOps ir palaikymo įrankiai
Dauguma šiuolaikinių technologijų įmonių yra įdiegusios praktikas ir sistemas, kurios Jie neapsiriboja vien kodo rašymu ir tuo viskas baigiasi.Šių aplinkų supratimas yra labai svarbus norint gerai integruotis į tikrą komandą.
Agile metodologijos ir projektų valdymas
„Scrum“, „Kanban“ ar „Lean“ metodai nėra tik madingi žodžiai. Jie apibrėžia, kaip planuojamas, prioritetizuojamas ir atliekamas darbasMokėjimas dirbti su sprintų susitikimais, tarybomis, retrospektyvomis ir planavimo susitikimais padeda suprasti, ko iš jūsų tikimasi bet kuriuo metu.
Taip pat naudinga susipažinti su valdymo įrankiais, tokiais kaip Jira, Trello arba AsanaŠie įrankiai centralizuoja užduotis, terminus ir priklausomybes. Jums nereikia būti projekto vadovu, tačiau turite mokėti sekti darbo eigą, atnaujinti užduočių būseną ir turėti aiškią apžvalgą.
DevOps, CI/CD ir konteineriai
Daugelyje komandų nebėra griežto skirtumo tarp kūrimo ir operacijų. „DevOps“ metodas skatina bendradarbiavimą ir automatizavimą per visą programinės įrangos gyvavimo ciklą.nuo įsipareigojimo iki gamybos.
Tai reiškia tokias praktikas kaip nuolatinė integracija (CI) ir nuolatinis teikimas arba diegimas (CD). Supratimas apie gamybos srautus, automatinis kiekvieno pakeitimo testavimas, automatiniai diegimai ir kontroliuojami atšaukimai Tai padidina patikimumą ir pristatymo greitį.
Tokios priemonės kaip „Docker“ ir „Kubernetes“ orkestravimo įrankiai leidžia supakuoti programas su jų priklausomybėmis ir nuosekliai jas vykdyti skirtingose aplinkose. Konteinerių tvarkymo supratimas tapo labai vertinamu antriniu įgūdžiu.net jei jūsų pagrindinis vaidmuo nėra susijęs su „DevOps“.
Daugiaplatformė, mobilus ir našus
Priklausomai nuo projekto, gali būti naudojamas mobilusis arba kelių platformų kūrimas. Tokios sistemos kaip „React Native“, „Flutter“, „Xamarin“ arba „Electron“ Jie leidžia pakartotinai panaudoti dalį kodo skirtingose platformose, o tai labai vertinga, kai trūksta biudžeto ar laiko.
Be to, našumo optimizavimas nebėra prabanga: Vartotojai tikisi programėlių, kurios greitai įkeliamos, reaguoja akimirksniu ir naudoja mažai išteklių.Žinojimas, kaip matuoti, profiliuoti ir gerinti atsako laiką, atminties naudojimą ir tinklo suvartojimą, tapo labai geidžiamu privalumu.
Automatinis visapusiškas ir vartotojo sąsajos / naudotojo patirties testavimas
Sudėtingose programose vienetinių testų nepakanka. Automatizavimo įrankiai, tokie kaip „Selenium WebDriver“, leidžia patikrinti realaus pasaulio srautus naršyklėse.koordinavimas pirmyn ir atgal kritinėse situacijose.
Net jei nesate dizaineris, verta tai suprasti UI ir UX pagrindai: į vartotoją orientuotas dizainas, prieinamumas, reaguojantis dizainas, vizualinis nuoseklumasTai padeda geriau bendradarbiauti su dizaino komanda ir išvengti sprendimų, kurie neigiamai veikia naudotojo patirtį.
Pabaigoje, Geras kūrėjas yra tvirtų techninių pagrindų, kokybės įpročių, žmogiškųjų įgūdžių ir nuolatinio smalsumo derinys.Svarbu ne viską įvaldyti iš karto, o žingsnis po žingsnio kurti vis išsamesnį profilį, kuris leis mėgautis savo darbu ir kurti realią vertę, kad ir kur būtumėte.
Aistringas rašytojas apie baitų pasaulį ir technologijas apskritai. Man patinka dalytis savo žiniomis rašydamas, būtent tai ir darysiu šiame tinklaraštyje, parodysiu jums įdomiausius dalykus apie programėles, programinę įrangą, techninę įrangą, technologijų tendencijas ir kt. Mano tikslas – padėti jums paprastai ir smagiai naršyti skaitmeniniame pasaulyje.