Jak si rozšiřujete své vědomosti?

Altruista

Jak si rozšiřujete své vědomosti?
« kdy: 12. 04. 2016, 09:40:33 »
Pekny den,
rad by som si urobil taky prieskum, alebo skor sa popytal a nabral inspiraciu, ze ako si rozsirujete svoje vedomosti v oblasti IT, hlavne programovanie. Knihy, video tutorialy, projekty? Co by podla vas mal ovladat kazdy vyvojar, ake knizky by mal vlastnit, resp. mal mat precitane, bezohladu na to, ci je JAVA/C#/C++ vyvojar.
Budem rad za konstruktivnu debatu :)
« Poslední změna: 12. 04. 2016, 11:16:08 od Petr Krčmář »


zboj

  • *****
  • 1 507
    • Zobrazit profil
    • E-mail
Re:Ako si rozsirujete svoje vedomosti
« Odpověď #1 kdy: 12. 04. 2016, 10:35:07 »
Hlavně knihy. Doporučit se jich dá hodně, abych byl konkrétní, tak doporučuji něco o funkcionálním programování, protože právě toto paradigma začíná pronikat i do mainstreamových jazyků. Pro hlubší vhled do problematiky je dobré přečíst si něco o teorii typů, protože úzce souvisí s OOP, což je stále nejpoužívanější paradigma, ale prakticky orientované knihy budou asi pro většinu programátorů užitečnější.

Daniel Kozak

Re:Ako si rozsirujete svoje vedomosti
« Odpověď #2 kdy: 12. 04. 2016, 10:43:03 »
Pekny den,
rad by som si urobil taky prieskum, alebo skor sa popytal a nabral inspiraciu, ze ako si rozsirujete svoje vedomosti v oblasti IT, hlavne programovanie. Knihy, video tutorialy, projekty? Co by podla vas mal ovladat kazdy vyvojar, ake knizky by mal vlastnit, resp. mal mat precitane, bezohladu na to, ci je JAVA/C#/C++ vyvojar.
Budem rad za konstruktivnu debatu :)

Tak kazdemu vyhovuje neco jineho. Ja osobne preferuji knizky a zajimave clanky dostupne na internetu. Dale rad sleduji zaznamy (pripadne se ucastnim) konferenci zamerenych na IT. Nemyslim si ze existuje nejaka povina cetba, samozrejme jsou knizky ktere se daji doporucit vsem programatorum, ale ja sam je necetl takze asi tak :)

Altruista

Re:Ako si rozsirujete svoje vedomosti
« Odpověď #3 kdy: 12. 04. 2016, 11:05:14 »
A co povazujete za dolezite, co by mal kazdy programator ovladat, alebo aby sa lisil od inych, bol lepsi.

zboj

  • *****
  • 1 507
    • Zobrazit profil
    • E-mail
Re:Ako si rozsirujete svoje vedomosti
« Odpověď #4 kdy: 12. 04. 2016, 11:19:12 »
A co povazujete za dolezite, co by mal kazdy programator ovladat, alebo aby sa lisil od inych, bol lepsi.
Formální aparát za tím, co se v programování používá, čili například formální logika, teorie kategorií, relační algebra apod., podle konkrétní oblasti (po řadě pravidly řízené systémy, funkcionální programování, databáze). A obecně - bez ohledu na konkrétní jazyk nebo technologii - vyčíslitelnost a teorie rekurze. Všechno to je o detailech, algoritmus v Javě nebo Basicu sesmolí i začátečník, ale jakmile jde například o efektivitu, optimalizaci a spoustu dalších detailů, jsou nezbytné hlubší - teoretické - znalosti, jejichž akvizice je na celý (profesní) život. Při volbě vhodných materiálů to ale může být i zábava.


Hmm

Re:Ako si rozsirujete svoje vedomosti
« Odpověď #5 kdy: 12. 04. 2016, 11:20:00 »
A co povazujete za dolezite, co by mal kazdy programator ovladat, alebo aby sa lisil od inych, bol lepsi.
Co povazujem ja za dolezite, co by mal kazdy programator ovladat? Urcite je dolezite to, aby bol otvoreny vsetkemu, co sa okolo neho objavi. Ziadne silacke kecy typu "javabugscript", "funkcionalne programovanie je nepouzitelny shit", "OOP je bastl" a podobne nesmu mat v slovniku dobreho programatora miesto.

Ak uz chcem technologiu odsudit, tak nech mam s nou najprv dostatok skusenosti, aby som vedel, ze je pre mna naozaj nepouzitelna. Pretoze mnoho veci sa da navzajom kombinovat a aj to co bolo pred rokmi pomale a neohybne, moze byt dnes rychle a flexibilne.

Re:Jak si rozšiřujete své vědomosti?
« Odpověď #6 kdy: 12. 04. 2016, 11:58:59 »
rad by som si urobil taky prieskum, alebo skor sa popytal a nabral inspiraciu, ze ako si rozsirujete svoje vedomosti v oblasti IT, hlavne programovanie. Knihy, video tutorialy, projekty?
Na knizky uz ted nemám bohužel moc čas, takže spíš kvalitní blogy a ty videa.

Imho úplně nejlepší rozšíření obzorů pro programátora je seznámit se s nějakým jazykem hodně odlišným od toho, co normálně používám. Každý by si imho měl vyzkoušet co nejvíc (tj. tolik, kolik může) minimálně z:
  • logické programování - Prolog nebo aspoň Datalog
  • konkurentní programování - Erlang, Elixir, Akka - nejlíp Elixir
  • čisté funkcionální programování - Haskell, Elm - Elm bych hodně doporučil, pro seznámení fakt parádní
  • plnotučné OOP - SmallTalk, Objective C, Swift (?)
  • nějaký hodně moderní mulitparadigmatický jazyk - Rust? Nevím

Plus není k zahození se pro rozšíření obzorů ponořit do nějaké domény, se kterou normálně nedělám - třeba embedded pro mě je z několika důvodů docela poučná zkušenost :)

...a taky bych docela doporučil zkusit si naimplementovat něco, co normálně používám jako knihovnu a používá to netriviální koncepty a není to rutina, abych líp pochopil, jak to funguje. Třeba zkusit si v jazyku, který umím, naimplementovat RPC od píky, to pro mě taky byla docela fajn zkušenost. Určitě ne dělat třeba e-shop, to je rutina.

Pokud možno hledat něco, co řeší nějakou moji potřebu, co se dá zveřejnit a budu z toho mít radost, že jsem to vyřešil.

Altruista

Re:Jak si rozšiřujete své vědomosti?
« Odpověď #7 kdy: 12. 04. 2016, 13:59:23 »
cize myslite si, ze sa oplati studovat aj matematicke veci? Zas nepatrim medzi nejakych super matematikov :)

zboj

  • *****
  • 1 507
    • Zobrazit profil
    • E-mail
Re:Jak si rozšiřujete své vědomosti?
« Odpověď #8 kdy: 12. 04. 2016, 14:08:22 »
cize myslite si, ze sa oplati studovat aj matematicke veci? Zas nepatrim medzi nejakych super matematikov :)
Určitě ty, které mají přímou souvislost s něčím v IT (teorie kategorií, relační algebra...). Neuškodí přečíst si i něco bez přímé souvislosti, přece jen to pomáhá budovat abstraktní myšlení, ale to už závisí na volném čase a hlavně jistém matematickém nadání. Některé aspekty teorie množin například pomůžou pochopit (resp. bez jejich znalosti nelze pochopit) některé vlastnosti sémantiky (souvislost napřed. s Prologem), abstraktní algebra úzce souvisí s formální logikou (opět Prolog, případně databáze a deklarativní programování), ale jak říkám, to už jsou pokročilé věci, bez nichž se dá při bežné práci obejít, vyčíslitelnost bude o dost důležitější.

Re:Jak si rozšiřujete své vědomosti?
« Odpověď #9 kdy: 12. 04. 2016, 14:10:26 »
cize myslite si, ze sa oplati studovat aj matematicke veci? Zas nepatrim medzi nejakych super matematikov :)
Podle mě má smysl jít po krocích postupně třeba takhle:

  • studovat tu matiku, která se v IT bezprostředně používá (hlavně diskrétní mat., kombinatorika, základy teorie grafů apod.)
  • úplné minimum teoretické informatiky (jenom aby člověk vědel, v čem je zásadní rozdíl mezi regulárním a bezkontextovým jazykem a jak s tím souvisí konečný a zásobníkový automat - bez důkazů, bez přehnaného babrání ve formalismech, ale s důrazem na to, abych chápal praktické důsledky)
Tohle jako teoretický základ běžnému programátorovi stačí. Jakmile to mám, tak:
  • vrhnout na praktické programátorské věci, který jsem psal výš. Teprve až tohle všechno mám, tak:
  • zkusit další věci, které už nejsou přímo uplatnitelné, ale jsou super pro širší přehled (to jsou ty věci, který psal zboj) - to už je ale spíš pro zábavu a potěšení, žádný bezprostřední užitek z toho mít nebudeš. Tak je potřeba k tomu přistupovat, aby z toho člověk neměl depresi ;)

Altruista

Re:Jak si rozšiřujete své vědomosti?
« Odpověď #10 kdy: 12. 04. 2016, 14:29:46 »
mam z toho pocit, ze to vsetko, co tu pisete, nemozem ani za zivot stihnut :D

Re:Jak si rozšiřujete své vědomosti?
« Odpověď #11 kdy: 12. 04. 2016, 14:49:25 »
mam z toho pocit, ze to vsetko, co tu pisete, nemozem ani za zivot stihnut :D
Urcite. Jakakoliv z tech veci se da pouzit jako napln celozivotni prace na univerzite a vetsinu z toho nejspis muze clovek zkoumat tak hluboce, ze bude jeden z deseti lidi na svete, kteri tomu rozumi stejne dobre ;)

Prave proto clovek nesmi moc zabredavat do detailu a musi se smirit s tim, ze vsechno z toho bude znat jenom trochu. Idealni samozrejme je, kdyz ma k dispozici ucitele/mentora/starsiho kolegu, ktery mu to bud predzvyka, nebo aspon doporuci, co a do jake hloubky ma smysl zkoumat.

Dobrej priklad je myslim ta teorie kategorii - muzes o tom cist stohy knih a nikdy neskoncis. Pro vetsinu lidi nema nejmensi smysl to delat. Lepsi je sehnat si dobre napsany clanek/mensi knizku, ktera to vysvetli na prave takove urovni a takovym stylem, ktery ti bude sedet. Ja jsem treba dlouho hledal, nic mi neprislo tak akorat, uz jsem to chtel vzdat, az jsem se dostal k tomuhle: http://www1.eafit.edu.co/asr/pubs/others/cain-screen.pdf -- a hle, veci, jejichz prinos  jsem z jinych textu nepochopil (protoze tolik casu na to nemam), jsem najednou (na mne-dostatecne urovni) nahlidl za cca tyden...

zboj

  • *****
  • 1 507
    • Zobrazit profil
    • E-mail
Re:Jak si rozšiřujete své vědomosti?
« Odpověď #12 kdy: 12. 04. 2016, 14:53:01 »
mam z toho pocit, ze to vsetko, co tu pisete, nemozem ani za zivot stihnut :D
Proč? Vždyť stačí nějakou knížku (řekněme úvod do teorie kategorií nebo něco o logice) při prvním čtení jen proletět, člověk získá základní přehled a když tak projde více knih, zjistí, kde se překrývají a co číst znovu podrobněji. Některé důkazy může člověk klidně přeskakovat (mnohé je ale dobré projít a hlavně pochopit, protože jen potom se zjistí, co jak proč funguje) a věnovat více času třeba cvičením.

Re:Jak si rozšiřujete své vědomosti?
« Odpověď #13 kdy: 12. 04. 2016, 15:00:14 »
Jeste P.S. k tomu, co jsem napsal: ten teoretickej zaklad a prakticke zkouseni novych paradigmat nemusi nasledovat po sobe. Da se to klidne delat paralelne, podle toho, na co mam zrovna chut. Dulezity je imho mit z toho radost a poteseni, jinak clovek brzo vyhori a neda mu to vubec nic, coz je nejhorsi mozna varianta.

Některé důkazy může člověk klidně přeskakovat (mnohé je ale dobré projít a hlavně pochopit, protože jen potom se zjistí, co jak proč funguje) a věnovat více času třeba cvičením.
Dost dulezity taky je, jestli se bavime o cloveku, ktery pracuje, nebo o studentovi. Pracujici programator vetsinou nema cas ani chut si delat nejaka cviceni. Potrebuje najit cestu, kde je pomer vlozene usili/ziskany efekt nejaky rozumny. Jenom tak si procitat nejake dukazy a delat si cviceni muzou tak maximalne lidi bez rodiny nebo zamestnanci research oddeleni. Normalni smrtelnik na to cas nema.

zboj

  • *****
  • 1 507
    • Zobrazit profil
    • E-mail
Re:Jak si rozšiřujete své vědomosti?
« Odpověď #14 kdy: 12. 04. 2016, 15:05:10 »
Jeste P.S. k tomu, co jsem napsal: ten teoretickej zaklad a prakticke zkouseni novych paradigmat nemusi nasledovat po sobe. Da se to klidne delat paralelne, podle toho, na co mam zrovna chut. Dulezity je imho mit z toho radost a poteseni, jinak clovek brzo vyhori a neda mu to vubec nic, coz je nejhorsi mozna varianta.

Některé důkazy může člověk klidně přeskakovat (mnohé je ale dobré projít a hlavně pochopit, protože jen potom se zjistí, co jak proč funguje) a věnovat více času třeba cvičením.
Dost dulezity taky je, jestli se bavime o cloveku, ktery pracuje, nebo o studentovi. Pracujici programator vetsinou nema cas ani chut si delat nejaka cviceni. Potrebuje najit cestu, kde je pomer vlozene usili/ziskany efekt nejaky rozumny. Jenom tak si procitat nejake dukazy a delat si cviceni muzou tak maximalne lidi bez rodiny nebo zamestnanci research oddeleni. Normalni smrtelnik na to cas nema.
Jsou důkazy, které by byl "hřích" přeskočit (člověk by o hodně přišel), v logice třeba vybudování kanonické struktury (ve větách o úplnosti). Ovšem takových přínosných důkazů bude - troufám si tvrdit - menšina.