4 knygos, kurias turi perskaityti, jei esi IT inžinierius!

Šiame straipsnyje aptarsime keletą knygų, kurios mūsų manymu yra labai naudingos.

Knygos IT specialistams

Kompetencija ir jos kėlimas „Visma Lietuva” yra labai svarbi. Nuolat raginame kolegas mokytis, pasirūpiname, kad būtų aplankytos geriausios konferencijos bei mokymai. Biure turime sukaupę jau nemažą biblioteką ir nuolat skatiname kolegas skaityti. Iš tiesų yra ne viena must – read knyga, kurią turi perskaityti kiekvienas, norintis būti geru IT inžinieriumi. Šiame straipsnyje aptarsime keletą knygų, kurios mūsų manymu yra labai naudingos. Knygas išsamiai apžvelgia jas perskaitę programuotojai.  

The Clean Coder: A Code of Conduct for Professional Programmers

A book by Robert Cecil Martin.

The Cleaner Coder

Komentuoja Mindaugas Poškus, .Net programuotojas. 

Medijoje vis dar gajus klišinis programuotojo paveikslas – nuoboda, intravertas, kuris pats vienas gali nulaužti labiausiai saugomas sistemas ar sukurti milijonų vertus algoritmus ar startuolius. Visgi, realybė yra kitokia. Tokie darbai atliekami tik komandoje, bet dirbant joje svarbu ne tik techninė kompetencija, bet ir socialiniai įgūdžiai. Būtent apie žmogiškuosius darbo aspektus yra R. Martin knyga. 

Knygoje nerašoma apie technologinius aspektus. Joje nerasite patarimų kaip rašyti švarų kodą, joje taip pat nebus algoritmų ir architektūrinių šablonų (besidomintiems švaraus kodo technika verta paskaityti to paties autoriaus knygą Clean Code. A Handbook of Agile Software Craftsmanship). Visa knyga dedikuota programinės įrangos kūrimo procesui. Dviejuose skyriuose kalbama apie svarbų profesionalaus darbuotojo bruožą – mokėjimą pasakyti „taip” ir „ne”. Nors ir skamba paprastai, tačiau spaudžiant laikui, o kliento lūkesčiams augant, IT inžinierius turi gebėti argumentuoti, kodėl kai kuriuos lūkesčius įgyvendinti galima, o kai kurių – ne. 

Skyriuje „Coding” autorius rašo apie programavimo procesą. Aprašoma darbo aplinkos svarba, nepunktualumo žala. Griaunami populiarūs mitai, tokie kaip the flow zone – tai būsena, kai sąmoningumo lygis sumažinamas iki minimumo ir programuotojas tiesiog rašo kodą nereaguodamas į aplinką. Autoriaus nuomone būtent tada parašomas blogiausias įmanomas kodas. Taip pat, griaunamas mitas, jog muzikos klausymas padeda susikaupti, nors realybėje tai mažina tiek produktyvumą, tiek darbo kokybę. 

Didelė knygos dalis skirta testavimo svarbos akcentavimui. Ši tema nagrinėjama net trijuose skyriuose. Aptariamos tiek Test Driven Development (TDD), tiek Acceptance testing praktikos bei testavimo kaip esminio elemento, užtikrinančio kodo kokybę.

Keli skyriai dedikuoti laiko valdymo strategijoms bei praktikoms, padedančioms susitvarkyti su spaudimu. Daugelis dirbančių patvirtins, laiko visada trūksta, o užduotys turėjo būti atliktos jau vakar. Atrodo, jog galime padirbėti ilgiau, tačiau tiesa tokia, kad kuo ilgiau dirbame –  tuo mažiau padarome. Būtent todėl autorius daug kalba apie efektyvumo ir produktyvumo didinimą. 

Knygos pabaigoje kalbama, jog svarbu savo žinias perduoti kitiems. Dauguma sėkmingų programuotojų karjeros pradžioje šalia turėjo žmones, iš kurių galėjo mokytis gerųjų praktikų ir nerašytų taisyklių. Tad įgiję žinių, būtinai turime jas perduoti, antraip industrija neaugs, kokybė kris. 

Knyga ypač vertinga bet kuriam pradedančiajam IT inžinieriui – programuotojui, QA’s, DevOps’ui, dizaineriui, architektui, projektų vadovui ir t.t. Perskaitę ją, specialistai sužinos kaip išlaikyti šaltą protą įtemptose situacijose, kaip bendrauti su vadovais, kaip sukurti gerą darbo aplinką, sėkmingai dirbti su kolegomis, planuoti laiką ir darbus. Mano nuomone, ši knyga yra geras pasirinkimas ir IT įmonių vadovams, ypač tiems, kurie neturi daug patirties šioje industrijoje. Ji padės formuoti komandą, geriau suprasti žmones, kuriančius programinę įrangą, įvertinti jų kompetenciją. Knyga yra nedidelės apimties ir lengvai skaitoma. Rekomenduoju ją visiems norintiems tobulėti.

Clean Code. A Handbook of Agile Software Craftsmanship

A book by Robert Cecil Martin.

Clean Code Robert C. Martin

Komentuoja Aurimas Repečka, .Net programuotojas. 

Pradedant naują projektą kodą rašyti nėra sunku, tačiau laikui bėgant jis „užsiteršia” t.y. kodas tampa nesuprantamas, jį keisti darosi vis sunkiau. Tam, kad būtų galima to išvengti ir tuo pačiu užtikrinti ilgalaikę projekto sėkmę, yra svarbu laikytis šioje knygoje apibrėžtų „švaraus” kodo praktikų.

Perskaitęs šią knygą ėmiau į kodą žiūrėti labiau iš „skaitytojo”, o ne „rašytojo” perspektyvos. Pradėjau užduoti sau klausimus, ar kintamojo/funkcijos/klasės pavadinimai yra aiškūs ir bus suprantami kitiems kodą skaitantiems žmonėms. Taip pat žymiai griežčiau pradėjau taikyti Single Responsibility principą – sumažėjo klasių ir funkcijų apimtis, kodas tapo lengviau suprantamas ir keičiamas. Galiausiai, projekte pradėjau naudoti gerąsias TDD testavimo praktikas.

Knygą ypač rekomenduočiau jaunesniesiams programuotojams, kurie dar tik pradeda savo karjerą. Kodas „užsiteršia” ne per vieną dieną. Tai yra ilgas procesas, todėl nepatyrę programuotojai ne visada mato, kokias pasekmes vienas ar kitas kodo fragmentas gali turėti ateityje. Ši knyga yra unikali galimybė užbėgti šiems įvykiams už akių, pamatyti dažniausiai daromas klaidas ir iškart pradėti rašyti bent šiek tiek „švaresnį” kodą.

The Pragmatic Programmer. From Journeyman to Master

A book by Andrew Hunt & David Thomas.

The pragmatic programmer Andrew Hunt, Davis Thomas

Komentuoja Redas Pališkevičius, .Net programuotojas

Programinės įrangos kūrimas yra sudėtingas amatas programuotojas turi būti puikus klausytojas, aiškiai dėstyti savo mintis, interpretuoti reikalavimus ir paversti juos į kodą tokiu būdu, kad ateityje jį būtų įmanoma išplėsti. Visa tai turi tilpti į apibrėžtus laiko rėmus. Taip pat, nėra „sidabrinės kulkos” technologijos, programavimo kalbos ar metodologijos. Turint tai omenyje ir norint sukurti programinę įrangą, kuri išvystų dienos šviesą ir sėkmingai operuotų, privalome būti pragmatiški. Knygoje, programavimo ekspertai dalinasi savo patirtimi apie visą programinės įrangos kūrimo procesą – pritaikydami jų patarimus, tapsime geresniais programuotojais.

Tarkime, skyriuje Your Knowledge Portfolio autoriai teigia, kad žinių valdymas yra panašus į finansų valdymą: patyrę investuotojai investuoja dažnai, išskirsto investicijas, palaiko balansą tarp konservatyvių ir aukšto pelno/aukštos rizikos investicijų, perka, kai kaina yra žema ir parduoda, kai kaina aukšta, periodiškai peržiūri savo investicinį portfelį. Valdydami savo žinių portfelį, programuotojai turi laikytis šių gairių. Perskaitęs šį skyrių, pradėjau daugiau dėmesio skirti savo žinių portfeliui. Projekte naudojame Xamarin.Forms. Ši technologija sparčiai keičiasi, todėl svarbu sekti šaltinius, kuriuose diskutuojamos jos galimybės. Xamarin.Forms yra atviro kodo ir patalpinta GitHub versijavimo sistemoje tai leidžia stebėti, kokios problemos yra užregistruojamos ir kaip jos sprendžiamos. Svarbu sekti technologijas, kurios sprendžia tą pačią problemą kitaip, pavyzdžiui, Flutter. Ši technologija yra nauja, tačiau sulaukia daug dėmesio, todėl skiriu laiko susipažinti su technologijos teikiamais privalumais. Rizikinga neskirti laiko žinių portfelio valdymui, nes savo projekte programuotojai gali jaustis užtikrintai su turimomis žiniomis apie tam tikras technologijas, tačiau IT sritis keičiasi itin sparčiai, tad turimos žinios sensta. Apibendrinau tik vieną skyrių, tačiau manau, kad kiekvienas skyrius turėjo informacijos, kurios prieš tai nežinojau ar ją reikėjo papildomai perskaityti, kad įsisavinčiau.

Visi „Visma Lietuva” programuotojai yra susipažinę su septyniais vidiniais įmonės „THE BEST WORKPLACE FOR IT ENGINEERS” principais, kurių laikydamiesi kuriame sėkmingą įmonę. Norint suprasti šiuos principus iš esmės, rekomenduoju perskaityti knygą The Pragmatic Programmer, kurios turinys apima kiekvieną principą. Knyga yra lengvai skaitoma. Nagrinėdami temą autoriai pateikia realių problemų pavyzdžius, su kuriomis susiduria programuotojai. Autoriai siūlo problemų sprendimo būdus ir juos apibendrina vieno sakinio patarimais, kurių knygoje yra 70. Vienas iš patarimų yra žymusis, knygos autorių nukaldintas, Don’t Repeat Yourself principas, kuris teigia, kad: „Every piece of knowledge must have a single, unambiguous, authoritative representation within a system”. Taipogi, pateikiama daug užduočių – dalis užduočių yra praktinės ir turi atsakymus knygos apendikse, o kitos užduotys kelią klausimus, kuriuos privalome apmąstyti ir atsakyti patys sau. Knygoje esanti informacija yra universali joje aprašomos praktikos gali būti taikomos įvairių programavimo kalbų specialistų.

The Art of Unit Testing

A book by Roy Osherove

The art of unit testing with examples in C#

Komentuoja Mindaugas Poškus, .Net programuotojas. 

Test Driven Development (TDD) yra programavimo taktika, kuri akcentuoja automatinių testų svarbą ir skatina programuotojus juos rašyti visam jų kuriamam programos kodui. Esmę galima nupasakoti trimis žingsniais. Pirmiausia reikia parašyti testą kodui. Aišku, testas neveiks, nes nėra kodo, kurį jis turėtų testuoti. Antra, dabar galime rašyti patį kodą. Taip esame tikri, kad jį rašydami, nepadarysime klaidų, nes kodui jau yra testas. Tai neturi būti galutinis kodo variantas, jis net neturi būti gražus, tiesiog toks, kad veiktų testas, Tuomet galime būti tikri, kad mūsų kodas reikalavimus įgyvendina teisingai. Trečias žingsnis – pertvarkyti kodą, t.y. laikytis gerųjų praktikų, architektūrinių reikalavimų ir t.t. Vėlgi,  pertvarkant kodą, mes turime testą, kuris saugo nuo klaidų. Tikroji TDD nauda matyti tik ilguoju laikotarpiu. Kuo programa didesnė, tuo sunkiau daryti pakeitimus, tačiau kuo daugiau testų, tuo labiau galima pasitikėti kiekvienu pakeitimu. 

Kaip ir kitos metodologijos, TDD turi savo gerąsias praktikas. Autorius atskleidžia kaip turėtų veikti darbinis procesas naudojant TDD. Kas yra geri unit testai, kas yra stub, mock, dependency injection, kokie framework’ai yra pasiteisinę, kaip organizuoti savo testus, kaip integruoti juos į savo projektus ir organizacijas, kaip dirbti su senu kodu.

Ši knyga turi du pagrindinius tikslus. Pirmas yra įtikinti skaitytoją TDD nauda. Antrasis  išmokyti gerųjų TDD praktikų. Tai TDD klasika tapusi knyga, kuri, mano nuomone, yra naudinga visiems, kurie nori pradėti taikyti TDD praktikas arba tiesiog pagilinti žinias. Knyga parašyta C# kalba, tačiau tai neturėtų atbaidyti programuojančius kitomis kalbomis. TDD yra metodologija, o ne technologija, todėl jos principai sėkmingai taikomi praktiškai visose kalbose. Taip pat, C# yra lengvai suprantama daugumai žmonių, programuojančių kitomis C šeimos kalbomis, tokiomis kaip C, C++, Java, PHP ir t.t. 

Pirmąjį kartą knyga išleista 2009, o antrą karta ji išleista 2013 metais. Nuo tada praėjo nemažai laiko, o technologijų pasaulis, kaip žinia, nuolat keičiasi. Kaip jau minėjau, pati TDD yra metodologija, todėl ji yra atspari laikui. Žmonėms, norintiems pagilinti žinias, knyga bus naudinga, tačiau reikėtų atkreipti dėmesį į naudojamus įrankius ir technologijas. Daug dėmesio skiriama RhinoMocks, NUnit. Naujesnių, po knygos išleidimo atsiradusių įrankių, autorius, natūralu, neapžvelgia. Pavyzdžiui, nepasakojama apie tokius populiarūs įrankius kaip NSubstitute, FakeItEasy ar BDD įrankį SpecFlow. Taip pat, nuo knygos pasirodymo buvo išleista ne viena nauja C# ir .NET versija, todėl ketinantiems skaityti knyga patariu perskaičius apie vieną ar kitą autoriaus naudojamą įrankį, paieškokite ar šiuo metu nėra sukurta pranašesnių įrankių tam pačiam darbui atlikti.

Daugybė autorių ir apžvalgininkų knygą įtraukė į IT inžinieriams būtinų perskaityti knygų sąrašą. Ji lengvai skaitoma. Temos nagrinėjamos nuo pačių pagrindų, kas, galbūt, ją paverčia labiau tinkamą pradedantiems mokytis TDD. Perskačius knygą, galima tęsti studijas skaitant sudėtingesnes žanro knygas, pavyzdžiui, Working Effectively with Legacy Code (Michael Feathers), Growing Object-Oriented Software, Guided by Tests (Steve Freeman ir Nat Pryce), Refactoring: Improving the Design of Existing Code (Martin Fowler).

Skaityti, skaityti ir dar kartą skaityti

Tad tokias knygas rekomenduoja perskaityti mūsų programuotojai. IT inžinieriams vertingų knygų gausu ir jos, kaip ir kursai ar konferencijos, yra būtinos, norint kelti savo kompetenciją. Minėtas knygas galite rasti Kindle ar audio formatu Amazon:

  1. The Clean Coder: A Code of Conduct for Professional Programmers. A book by Robert Cecil Martin.
  2. Clean Code. A book by Robert Cecil Martin.
  3. The Pragmatic Programmer. From Journeyman to Master. A book by Andrew Hunt & David Thomas.
  4. The Art of Unit Testing. A book by Roy Osherove

Most popular

  • Azets komanda – kas svarbu skaitmenizuojant verslo procesus?

    Ar kada norėjote, jog visi gauti popieriniai laiškai, sąskaitos ir kiti dokumentai imtų ir taptų elektroniniai? O gal būtų patogu matyti visą su darbo užmokesčiu, grafiku bei atostogomis susijusią informaciją vienoje vietoje? Pateikti atostogų prašymus ar pranešti, jog susirgote? Tokias sistemas ir dar daugiau kuriame mes – Azets komandos IT specialistai. Nors kolegų rate ir […]

  • Cloudblogmin

    Journey to serverless

    In this article I will tell more about the journey to serverless. I will explain the reasons why we have decided to move from traditional Virtual Machines to Serverless framework and AWS services, I will introduce components of architecture and lastly, I will reveal our future work. I’ve joined my new team recently and it […]