Najbolji YouTube kanali za učenje programiranja

U poslednje vreme moj omiljeni vid učenja programiranje je gledanjem raznih YouTube kanala koji se bave ovom tematikom. Video u kojem autor predstavlja određeni koncept i/ili prikazuje kako je rešio neki problem, postao je veoma popularan u poslednjih nekoliko godina i sve je više autora koji prelaze na ovakav vid prezentacije.

U moru raznih video kanala na koje možete da naletite na internetu koji se bave programiranjem, ima onih boljih a ima i onih čije gledanje predstavlja čisto gubljenje vremena. Za potrebe ovog teksta izdvojio sam tri kanala koja želim da preporučim. Smatram da se će vam ovi kanali omogućiti da besplatno saznate informacije o programiranju koje nisu uvek lako dostupne, a ponajviše zato što autori umeju da prezentuju koncepte i probleme na jednostavan, razumljiv i ponekad zabavan način.

Pa da počnemo.

FunFunFunction

FunFunFunction

Autor kanala je Mattias Peter Johansson, koji je ujedno i JavaScript developer u firmi Spotify. Teme koje možete pronaći na njegovom YouTube kanalu su funkcionalno programiranje u JavaScriptu, top 8 navika developera, ES6, live-coding projekti i slično. Primećuje se da su teme koje obrađuje prvenstveno vezane za JavaScript, ali ima i onih koje nisu vezani ni za jedan programski jezik, već su u pitanju koncepti koji važe kod svih programera i zato vam mogu biti korisne bez obzira da li programirate u javi, php-u, JS-u ili u nekom drugom programskom jeziku, pa makar bio on i C++.

Na ovaj kanal mi je pre nekog vremena skrenuo pažnju jedan poznanik i gledajući objavljeni materijal shvatio sam koliko je sjajan.

Šta je to što me je oduševilo na ovom kanalu?

  • autor veoma dobro razume problematiku koju objašnjava
  • odlično ume da pojednostavi stvari i prenese znanje gledaocima
  • vreme trajanja videa – svaki video traje između 15 i 20 minuta, što je vreme koje je dovoljno kratko da se video pogleda uz jutarnju kafu, ali takođe i dovoljno dugačko da se sažeto i jezgrovito zaokruži neka celina koju autor predstavlja
  • koncept videa – autor predstavlja 3 pojma iz programiranja, koja su direktno ili indirektno povezana i na taj način gradi jasniju sliku o problematici koju obrađuje
  • humor – autor često poseže za humorističnim elementima u okviru videa, što je veoma efikasno u situacijama kada se priča o nekoj važnoj temi koja je često dosadna
  • kvalitet snimka – kvalitet snimka je na zavidnom nivou, što daje dodatnu vrednost celoj priči, jer se vidi da autor vodi računa i o najsitnijim detaljima
  • konzistentnost u objavljivanju – ono što je najbitnije u celoj priči, novi video nas čeka svakog ponedeljka u 8h ujutro.

Zato sve preporuke za ovaj kanal.

The Coding Train

The Coding Train

Kreiranje tutoriala, primera i biblioteka za Processing, programski jezik namenjen za učenje programiranja, je osnovno zanimanje Daniel Shiffman. Jedan od vidova promocije ove biblioteke je i u sklopu YouTube kanala The Coding Train. Možda Processing i korišnjenje jednoroga sa duginim bojama koji odaju prisustvo psihodelične atmosfere, nije nešto zbog čega bi ste posetili ovaj kanal, ali sve ostalo što se nalazi na njemu definitivno jeste.

Na kanalu možete pronaći sve od osnovnih tutorijala HTML, CSS, JS i korišćenje Git-a, preko web soketa, kreiranje twitter bota, pa sve do naprednih procesuiranja slika, animacija i interakcija. Deo koji se meni lično najviše svideo na ovom kanalu je vezan za Coding Challanges. To je deo gde autor postavi sebi neki programerski zadatak koji treba da reši u zadatom vremenskom intervalu. Zadaci koje rešava su uglavnom neki poznati problemi koji se javljaju u programiranju, kao što su generisanje terena, kreiranje engina za poznate igrice poput Space Invaders, Nokijine Zmije i sl.

Stvar koju smatram najkorisnijom na ovom kanalu je deo gde nam autor omogućuje da vidimo kako neke konkretne probleme, koji se javljaju u programiranju, uz pomoć malo matematike i dobro osmišljenog koncepta možemo da uprostimo i svedemo na trivijalno rešavanje u samo nekoliko linija koda.

Derek Banas

Derek Banas YouTube channel

Za kraj želim da vam predstavim jedan YouTube kanal koji je konceptualno čista suprotnost od prethodna dva predstavljena. Ako je u prva dva kanala akcenat stavljen na pojavljivanje autora u okviru videa, kako bi se jasnije iskomunicirala poruka koju želi da prenese, ovde je iz istog razloga autor izostavljen iz videa i akcenat stavljen isključivo na prezentovanom materijalu.

Derek Banas, za sebe kaže da je marketing konsultant koji želi da pomogne ljudima da besplatno reše svoje svakodnevne probleme. Radio je u razvojnom odeljenju firme Apple, kao broker za firmu Morgan Stanley i pokrenuo više svojih bizisa tokom proteklih godina. Ovi poslovi su mu obezbedili veliko iskustvo koje on sada pretače u tutoriale na svom YouTube kanalu.

Materijali prezentovani na ovom kanalu su u formi kurseva, prezentacija i live koding sesija, tokom kojih autor objašnjava neku oblast. U okviru ovog bloga autor obrađuje razne teme programiranja, od osnova crtanja UML diagrama, dizajn paterna i pravljenja web sajta, preko programiranja za iPhone i Android, učenje raznih programskih jezika poput Python-a, Cotlina, Jave i drugih; pa sve do tutoriajla vezanih za elektroniku, a i mnogih drugih koji nemaju baš neke direktne veze s programiranjem, kao što su spremanje veganske ishrane i tutorijali iz psihologije.

Kada imate potrebu da se upustite u neku novu oblast, kao što je na primer programiranje u Javi, odvojite vreme da pogledate Derekove tutoriale. Oni će vam oni dati odličnu početnu osnovu, neophodnu da brzo krenete sa savladavanjem željene problematike.

Za kraj spomenimo da postoji još mnogo kanala koji se bave programiranjem, neki kvalitetnije, a neki manje kvalitetnije. Ukoliko znate za još neki dobar besplatan video kanal koji se bavi programiranjem podelite tu informaciju sa nama i napišite dole u komentarima.

Ovo su moji favoriti, a koji su vaši?

Kako postati web developer

Dok sam uživao u svom prazničnom surfovanju, naleteo sam na jedan interesantan GitHub repozitorijum, koji sam poželeo da podelim sa vama.

Kamran Ahmed, je pokušao da klasifikuje putanju da se postane web developer. Odvojio je tri generalno prihvaćene specijalizacije i uradio je odličan posao kada je u pitanju klasifikacija alata i neophodnih znanja za ovo zanimanje.

U nastavku predstavljamo vam njegov rad.

Pre nego što se odlučite za bilo koju specijalizaciju, neophodna su vam neka osnovna znanja, a onda se možete specijalizirati za jednu od tri date oblasti.

Frontend developer

 

Backend developer

Devops

 

Za koju god oblast da se odlučite i koju god tehnologiju krenete da izučavate, počnite da pravite nešto konkretno odmah. Ni jedna teorija ne može da zameni iskustvo rada na nekom projektu.

 

Sortiranja nizova plesom

Sortiranje predstavlja jednu od osnovnih operacija koja se koristi u radu sa podacima. Danas da bi smo sortirali neki niz ne moramo da znamo algoritme za sortiranje. Dovoljno je da iz predefinisanih biblioteka programskog jezika u kojem radimo, pozovemo funkciju za sortiranje i naši podaci će biti složeni. U većini slučajeva ove funkcije će savršeno odraditi posao.

A šta da radimo u slučajevima kada gotova rešenja za sortiranje ne funcionišu kao što očekujemo?

Različiti tipovi podataka zahtevaju različite metode sortiranja. U nekim slučajevima je jeftinija operacija poređenja od operacije premeštanja, a u nekim je jeftinija operacija premeštanja. Nekad je i sama operacija pristupa jako skupa. U svakom slučaju najskuplje operacije je potrebno svesti na minimum. A nekad ni to nije dovoljno, nego je potrebno primeniti specijalne strategije da bi se sortiranje odradilo na najefikasniji način. Da bi smo znali kada je potrebno primeniti određeni algoritam moramo znati na koji način ovi algoritmi funkcionišu.

Osnovni način za upoznavanje sa načinom rada algoritama je njihova detaljna analiza. Postoje mnoge knjige koje se bave algoritmima i u svakoj su opisani algoritmi sortiranja na isti ili sličan način. Ovo nam govori da je sve jedno koju ćete knjigu uzeti da proučavate. Ako baš tražite preporuku, ja bih preporučio knjigu autora Donald Knuth-a “The Art of Computer Programming. U ovoj knjizi detaljno su detljno su opisani svi algoritmi sortiranja sa principima po kojima funkcionišu, a dati su i primeri koda.

Upustiti se u problematiku, shvatiti kako algoritmi rade i odabrati najoptimalniji za rešavanje našeg problema, može da bude komplikovan posao za programera početnika. Zadatak postaje još teži ako odmah ne shvatite šta je pisac hteo da kaže, pa daljim čitanjem pomislite da bi ste pre razumeli klingonski, nego napisano.

Opšte je poznato da se znanje mnogo lakše usvaja vizualnim putem. Iz tog razloga na ovom mestu ću vam umesto daljih preporuka knjiga i tekstova, predstaviti nekoliko snimaka koji će vam na jednostavan i zabavan način objasniti i približiti funkcionisanje algoritama sortiranja.

AlgoRythmics

Ekipa sa Fakulteta tehničkih i humanih nauka, Univerziteta Sapientia Târgu Mureș iz Rumunije, pre nekoliko godina napravila je interesantan projekat koji demonstrira algoritame sortiranja. Koristeći folklorni ples centralno evropskih naroda, napravili su drugačiji pristup rešavanju problema demonstracije rada algoritama, koji uvek predstavlja veliki izazov. Krajnji rezultat veoma kvalitetan i uspeh im je bio neminovan. Projekat je po objavljivanju privukao veliku pažnju i osvojio srca mnogih programera.

Hipnotišući ples, sa primerenom dozom lucidnosti predstaviće vam osnovne algoritme sortiranja, kao što su bubble sort, insert sort, select sort, shell sort, merge sort i quick sort. Za razumevanja načina rada algoritama ipak je neophodno minimalno teorijskog predznanja. Možda ovo nije najbolji način za učenje algoritama od nule, ali je svakako najinteresantniji koji sam do sada video.

Preostale video snimke sortiranja možete pogledati na njihovom YouTube kanalu.

Kako sortirati knjige u biblioteci

Učenje se najbolje usvaja kroz konkretne primere. Zato je sledeći video u tom stilu. Jednostavna objašnjenja i primer sortiranja knjiga za biblioteku krase sledeći video. On će vam predstaviti algoritme, kao i njihove mane i prednosti, takođe objasniće vam zašto je za neke stvari bolje odabrati jedan algoritam, a u drugom slučaju drugi.

Na YouTube-u možete pronaći još mnogo primera kako rade ovi algoritmi i u kojim se finesama razlikuju. Pogledajte ih i proučite sledeći put kada budete imali problema sa sortiranjem. Možda će vam tada biti jasnije zašto u vašem konkretnom slučaju treba primeniti shell sort umesto buble sorta.

Knjige koje svaki programer treba da pročita

Svaki profesionalni programer ukoliko želi da bude majstor svog zanata, neophodno je da non-stop napreduje i usavršava svoje veštine. Jedan od koraka na ovom putu podrazumeva i edukaciju iz oblasti koje nisu samo pisanje mnoštva linija koda, nego i njihova organizacija, način pristupu rešavanja određenog problema, kao i kolaboracija sa kolegama iz tima.

Jedan od načina da se steknu nova znanja je čitanjem literature iz zadate oblasti i izučavanjem relevantne materija. Iz tog razloga mi ovde predstavljamo spisak knjiga koje nisu direktno vezane za tehnologiju u kojoj programer radi, nego kako on treba da radi. Znanje iz ovih knjiga može se primeniti u bilo kom programskom jeziku, a ono omogućuje da programer dobija novi ugao gledanja na njemu poznate situacije. Ovim znanjem otvara se put za nove ideje, koje jednostavnije i efektivnije mogu rešiti probleme sa kojima se neprestano susrećemo pri razvijanju softvera.

Na internetu se mogu pronaći razni tekstovi tipa 154 najbolje knjige za programiranje ili spisak od 129 esencijalnih programerskih knjiga. Kad vidim ovakve spiskove ja se zapitam: Kako 129 knjiga mogu da budu esencijalne u bilo kojoj oblasti i ko ima vremena da ih pročita i izuči u razumnom vremenu?

Da bih izbegao problem velikih spiskova knjiga i da bih vas što lakše uputio ka cilju da postanete pravi profesionalni programeri, odabrao sam nekoliko knjiga sa kojima možete započeti svoje putovanje ka profesionalizmu u svom poslu. Dok ih budete čitali, javiće vam se mnoga nova pitanja i problemi, ali tada ćete već znati kako da odaberete kvalitetne knjige za dalji napredak ka cilju koji sami sebi postavite.

Principi programiranja

Ova grupa knjiga objašnjava osnovne tehnike programiranja. Učenjem iz ovih knjiga naučićete da pišete smisleni kod koji i drugi ljudi posle vas mogu da nastave da razvijaju.

design-patternsDesign Patterns: Elements of Reusable Object-Oriented Software

Erich Gamma, John Vlissides, Ralph Johnson, and Richard Helm

Šabloni predstavljeni u knjizi daju nam gotova rešenja za probleme koji se obično javljaju prilikom razvoja softvera. Ovo je prva knjiga ove vrste i do dana današnjeg predstavlja jednu od najuticajniju knjigu u oblasti razvoja softvera. Predstavlja važan izvor informacija u objeknto-orijentisanog programiranju kako za teoriju, tako i za praksu.

refactoringRefactoring: Improving the Design of Existing Code

Martin Fowler

Refaktorisanje je proces ponovnog pisanja delova programa, bez promene načina njegovog funkcionisanja, u cilju unapređivanja čitljivosti koda, kao i prilagođavanja koda lakšem testiranju i održavanju. Knjiga je napisana sa fokusom na OOP, a struktuirana je kao katalog tehnika refaktorisanja.

Knjigu je bitno pročitati, zato što se idealan kod ne može napisati iz prve ruke, ali ga zato primenom objašnjenih principa refaktorisanja možemo dovesti u optimalnu formu.

working-effectively-with-legacy-codeWorking Effectively with Legacy Code

Michael C. Feathers

Vremenom postaćete iskusni developeri, a tada će se od vas očekivati da nastavite rad na projektu koje su pre vas započeli i na kojima su radili neki manje iskusni developeri. U ovakvim situacijama, može se desiti da taj kod nije napisan po svim pravilima o kojima ste učili i često ne postoje nikakavi testovi koji validiraju ispravnost tog koda.

Kako onda napraviti neku izmenu u tom kodu, tako da posle te jednostavne izmene budemo sigurni da će ostatak softvera i dalje funkcionisati ispravno?

Martin Fowler definiše Legacy Code, kao kod za koji nisu pisani testovi. U knjizi nam objašnjava tehnike refaktorisanja koje možemo da primenimo na ovakav kod, kako bi smo njegove najbitnije delove (delove koje upravo pokušavamo da izmenimo) podveli pod testove i da na taj način budemo sigurni da će oni funkcionisati i posle naših izmena.

clean-codeClean Code: A Handbook of Agile Software Craftsmanship

Robert Cecil Martin

Skoro svaki loše napisan kod može da radi. Problemi nastaju onog trenutka kada tako loše napisan kod treba proširiti s novom funkcionalnošću. Dodavanje nove funkcionalnosti uzrokuje da neke stvari koje su ranije radile, prestanu da rade i ceo dalji razvoj programa postaje horor priča.

Da do ovoga ne bi došlo, Robert C. Martin se udružio sa kolegama iz firme Object Mentor, kako bi predstavio najvažnije principe agilnog razvoja softvera. Primena ovih principa na ispravan način obezbeđuju da do predstavljenog scenarija ne dođe.

Software Craftsmanship

Odavno je poznato da programiranje nije umetnost, nego veština. Zato se tako i trebamo odnositi prema ovom poslu. Programiranje se do neke granice može naučiti, ali usavršiti se može jedino vežbanjem. Knjige predstavljene u ovoj oblasti ukazuju nam koje su to vežbe i znanja neophodni da bi smo postali pravi majstori svog zanata.

the-pragmatic-programmerThe Pragmatic Programmer

Andy Hunt and Dave Thomas

Ovo je prva knjiga koja je iznela stav da programiranje nije umetnost, nego veština koja se može uvežbati. Knjiga je napisana pre skoro 20 godina, a mnoge napisane stvari i dan danas važe. Razlika u odnosu na ono vreme je što danas imamo kvalitetnija razvojna okruženja za programiranje i verzionisanje koda, ali sve ostalo napisano i danas jednako važi kao i tada.

the-clean-coderThe Clean Coder: A Code of Conduct for Professional Programmers

Robert Cecil Martin

Robert C. Martin je programer i jedan je od ko-osnivača Agilnog manifesta, a takođe je i autor nekoliko knjiga i kurseva koji propagiraju agilni način razvoja softvera.

U ovoj svojoj knjizi iznosi discipline, tehnike, alate, kao i vežbe koje čine jednog developera pravim majstorom svog zanata – software craftsman-om.

the-software-craftsmanSoftware Craftsman

Sandro Mancuso

Biti software craftsman autor u ovoj knjizi podiže na viši nivo. Kada se u razvoj softvera uključe ponos, profesionalizam i ljubav prema poslu, kada se teži kvalitetnom i izvanrednom rešenju tek tada počinje da se prepoznaje rad pravog profesionalaca.

Knjiga pokriva neke od aspekata profesionalizma koje nisu obuhvaćene u prethodno opisanoj knjizi, a činjenica da je Robert C. Martin uvrstio ovu knjigu svoju seriju knjiga, samo joj još više podiže vrednost i daje dodatni razlog za čitanje.

the-mythical-man-monthThe Mythical Man-Month: Essays on Software Engineering

Fred Brooks

“Biblija razvoja softvera”, knjiga koju svi citiraju, neki je i pročitaju, ali samo nekoliko ljudi se pridržava činjenica iz knjige.

Ovako je autor opisao svoju knjigu 20 godina posle njenog izdavanja. Knjiga je napisana, sada davne, 1974. godine i predstavlja prvu knjigu koja je napisana na temu razvoja programa iz menadžerskog ugla. U knjizi je predstavljen i objašnjen razlog zašto dodavanje još ljudi u tim koji kasni s isporukom softvera, unosi još više kašnjenja u isporuku istog. Knjiga važi za klasično delo o uticaju ljudskog faktora na razvoj softvera.

zen-and-the-art-of-motorcycle-maintenanceZen and the Art of Motorcycle Maintenance: An Inquiry Into Values

Robert M. Pirsig

Za kraj predstavljamo jednu knjigu koja nema nikakve direktne veze s programiranjem, ali je jako bitna za posao kojim se bavimo. Ova knjiga nas tera da razmišljamo o stvarnim životnim vrednostima i predstavlja filozofsko delo koje istražuje metafiziku kvaliteta, koja inkorporira aspekte Istočno-Azijske filozofije i pragmatizma.

Ako tek počinjete sa svojom karijerom profesionalnog developera, možda ovu knjigu i preskočite za sada, ali definitivno je trebate imati pri ruci, jer svako od nas se u jednom trenutku u životu zapita šta su to istinske vrednosti.

Phil Sturgeon “Build APIs You Won’t Hate”

build-apis-you-wont-hatePrihvatanjem potreba današnjih aplikacija kreiramo novi stil njihovog razvoja u kojem su podeljena zaduženja za skladištenje i prikazivanje podataka. Na jednoj strani imamo različite JS frejmvorke, mobilne i različite desktop aplikacije koji su isključivo zadužene za prikaz podataka i interakciju sa korisnicima; dok se s druge stane nalaze serverske aplikacije koje upravljaju skladištenjem i autorizacijom pristupa podacima. Dok je prva problematika veoma dobro obrađena i opisana u raznim knjigama i priručnicima, mnogi autori zapostavljaju problem razvoja kvalitetnog API-ja koji pokriva drugu stranu. Iz ovih razloga knjiga autora Phil Sturgeon-a “Build APIs You Won’t Hate” predstavlja pravo osveženje u programerskom svetu.

Ova knjiga je namenjena autorima koji imaju zadatak da razviju API po prvi put ili su ga ranije razvijali na potpuno pogrešan način. “Build APIs You Won’t Hate” namerava da vas provede kroz značajne odluke koje morate doneti dok planirate API za vašu aplikaciju. Ova knjiga će vas usmeriti kroz osnovne implementacije API-ja uz pomoć raznovrsnih praktičnih primera.

Za razumevanje predstavljenih principa kreiranja pouzdanog i dobro koncipiranog API-ja nije bitan programski jezik u kojem programirate i koji koristite za njegov razvoj. No bez obzira na to, autor je morao da se odluči za neki jezik u kojem će napisati primere kako bi ste mogli lakše da shvatite predstavljene koncepte. U knjizi Phil je primere napisao u programskom jeziku PHP, jeziku u kojem on svakodnevno programira.

Autor je organizovao knjigu u četrnaest poglavlja koja su u logičnom redosledu i prate tok događaja koji je poželjan dok se razvija API aplikacije.

Knjiga počinje objašnjenjima kako da kreirate “test podatke” koje ćete koristiti tokom razvoja aplikacije, planiranja, definisanje tačaka pristupa, kao i ulaznim/izlaznim parametrima sistema. Sledi objašnjenje kako testirati ponašanje API-ja i kako sakriti implementaciju podataka od njenog prikaza. Pregled svih postojećih metoda autentikacije korisnika u sistem sa detaljnom analizom prednosti i mana svake postojeće, postaviće vas u dobru poziciju sledeći put kad budete morali da odlučujete da li vam je neophodan OAuth 2.0 ili neko drugo rešenje.

Dokumentacija je stvar koju ni jedan programer ne voli da piše. Na žalost, pri kreiranju aplikacije sa kojom druge aplikacije moraju da komuniciraju, kompletno dokumentovana komunikacija više nije opcija koju je lepo imati, nego predstavlja nužnost. U ovoj knjizi, naučićete kako da prebrodite ovaj korak na najlakši mogući način uz pomoć postojećih alata koji su jednostavni za korišćenje. Oni će vam obezbediti neophodnu dokumentaciju, koja izgleda profesionalno uz minimalno zalaganje.

Na kraju, autor je stavio poglavlje u kojem objašnjava kako i zašto je potrebno omogućiti izvoz podataka u različitim formatima, kao što su JSON, XML, YAML, CSV… Ovde su odgovori na pitanja: Zašto je neophodno dozvoliti korisniku da bira format preuzimanja podataka i zašto je implementacija HATEOAS-a poslednji neophodan korak tokom razvoja da bi vaš API tehnički bio RESTful API.

“Build APIs You Won’t Hate” predstavlja autorov način implementacije API-ja, njegovog testiranja i načina kreiranja dokumentacije. Iako je napisana sa globalnim pristupom tako da je svi mogu čitati bez obzira na programski jezik u kojem rade, primeri koda dati u knjizi su mnogo praktičniji i korisniji nego što se mogu naći u raznim tutorijalima.

Kada razmatra format odziva API-ja, autor analizira i poredi API-je velikih kompanija, kao što su Facebook i Twitter, i njihovih proizvoda. Ovaj pristup je veoma koristan zato što nas upoznaje sa dobrim i lošim stranama njihovih implementacija.

Stil pisanja autora balansira između opisa kreiranja metodologije – davanja odgovora na pitanje zašto neke stvari treba da se urade na određeni način – i davanja konkretnih primera kako te stvari implementirati uz pomoć PHP-a i alata kreiranih od strane autora. Nedostatak konzistentnosti i zadržanja na samo jednoj strani je moja najveća zamerka knjizi, iako znam da mnogi smatraju da joj je to najveća prednost.

Knjiga rešava neke problema sa kojima ćete se suočiti prilikom razvoja API-ja i ja bih želeo da preporučim knjigu programerima koji nemaju nikakvog ranijeg iskustva u njegovom razvoju. Koristeći principe opisane u knjizi pronaći ćete mnoge prečice, koje nisu bile dostupne do pre nekoliko godina kada sam ja imao priliku i potrebu da razvijam svoj prvi API.

Sada krenite i pronađite svoju kopiju knjige Phil Sturgeon-a “Build APIs You Won’t Hate” i završite svoj posao lako i brzo.