{"id":339,"date":"2019-11-12T19:07:14","date_gmt":"2019-11-12T19:07:14","guid":{"rendered":"https:\/\/kalkus.dev\/?p=339"},"modified":"2019-11-12T19:07:15","modified_gmt":"2019-11-12T19:07:15","slug":"studenckie-nawyki","status":"publish","type":"post","link":"https:\/\/kalkus.dev\/blog\/2019\/11\/12\/studenckie-nawyki\/","title":{"rendered":"Studenckie nawyki"},"content":{"rendered":"\n<p>Pewnych nawyk\u00f3w ci\u0119\u017cko si\u0119 pozby\u0107. M\u00f3wi si\u0119 cz\u0119sto o tym,\njak wa\u017cne s\u0105 pierwsze odruchy, jakich nabieramy podczas nauki gry na\ninstrumencie. Samoucy natrafiaj\u0105 cz\u0119sto na trudno\u015bci na p\u00f3\u017aniejszym etapie, gdy\nzmuszeni s\u0105 oduczy\u0107 si\u0119 b\u0142\u0119dnych zachowa\u0144. Dlatego wynajmujemy dzieciom\nnauczycieli lub posy\u0142amy je do szk\u00f3\u0142 muzycznych&#8230;<\/p>\n\n\n\n<p>Programowanie jest niezwykle dynamiczn\u0105 dziedzin\u0105, z kt\u00f3r\u0105 jako kraj przez wiele lat nie mieli\u015bmy styczno\u015bci. Cho\u0107 na poziomie akademickim pewne techniki i rozwi\u0105zania maj\u0105 ju\u017c swoje lata i niekt\u00f3rzy twierdz\u0105, \u017ce <em>nihil novi sub sole<\/em>, to jednak wci\u0105\u017c rodz\u0105 si\u0119 nowe strategie radzenia sobie z problemami, nowe pomys\u0142y, technologie i j\u0119zyki. <\/p>\n\n\n\n<p>Wi\u0119kszo\u015b\u0107 programist\u00f3w w Polsce nauczy\u0142a si\u0119 programowa\u0107 na studiach. I cho\u0107 brzmi to niebywale \u2013 w wi\u0119kszo\u015bci z nas wci\u0105\u017c tkwi\u0105 nawyki z tamtego okresu. Nie s\u0105 to nawyki chlubne. Krajowe uczelnie jak mo\u017cna si\u0119 dowiedzie\u0107 z dowolnego rankingu nie s\u0105 najlepszymi uniwersytetami \u015bwiata, a realia wydzia\u0142\u00f3w informatycznych s\u0105 chyba jeszcze gorsze, ni\u017c polskich akademii og\u00f3lnie.<\/p>\n\n\n\n<p>Oczywi\u015bcie m\u00f3wi si\u0119 wiele o\nsukcesach naszych student\u00f3w, o wysokich pozycjach polskich programist\u00f3w w\nrankingach i tak dalej, ale niestety odpowied\u017a na pytanie &#8211; jakie wi\u0119c \u015bwietne\nprodukty stworzyli\u015bmy? &#8211; ogranicza si\u0119 do gier CD Project oraz platform UXPin, Brand24,\nczy CodeWise. Oczywi\u015bcie pod cudzymi markami piszemy o wiele wi\u0119cej, ale wbrew\nt\u0142umowi pozwol\u0119 sobie by\u0107 sceptyczny, co do naszych umiej\u0119tno\u015bci \u2013 nie u nas\nurodzi\u0142 si\u0119 Torvalds, ani Stroustrup, Dijkstra, czy Knuth. Trzeba nam pokory i\npraktyki.<\/p>\n\n\n\n<p>Uczelnie zatem wpoi\u0142y nam z\u0142e nawyki. Jakie konkretnie?<\/p>\n\n\n\n<p><strong>1. Przedwczesna optymalizacja<\/strong><\/p>\n\n\n\n<p>Jak rzek\u0142 wspomniany tu ju\u017c Donald Knuth \u2013 przedwczesna optymalizacja jest \u017ar\u00f3d\u0142em wszelkiego z\u0142a. Tymczasem na nauce klasycznych algorytm\u00f3w oraz progresji ku wydajno\u015bci skupia si\u0119 program nauczania informatyki na uczelniach. Uczy si\u0119 student\u00f3w sortowania b\u0105belkowego, by potem pokaza\u0107 im lepsze, wydajniejsze. Wiele przedmiot\u00f3w dotyczy g\u0142\u00f3wnie na optymalizacji \u2013 uczymy si\u0119 o drzewach BST, o algorytmach grafowych, niekt\u00f3rzy r\u00f3wnie\u017c o kompresji. Wpaja to w student\u00f3w prze\u015bwiadczenie, \u017ce wydajno\u015b\u0107 jest okrutnie wa\u017cna, najwa\u017cniejsza. Tymczasem w projektach biznesowych rzadko tak jest.<\/p>\n\n\n\n<p><strong>2. Brak edukacji w zakresie planowania du\u017cych projekt\u00f3w<\/strong><\/p>\n\n\n\n<p>Ze studi\u00f3w pami\u0119tam dziesi\u0105tki projekt\u00f3w ma\u0142ych, ani jednego wielkiego. Nie organizuje si\u0119 grupy kilkunastu os\u00f3b, by wykona\u0142y co\u015b du\u017cego, ale zleca pojedynczym studentom malutkie programiki do napisania w pojedynk\u0119. Nie daje to szans na nabycie umiej\u0119tno\u015bci zarz\u0105dzania wielkim projektem, radzenia sobie z problemami wi\u0119kszymi od pojedynczego programisty \u2013 a tylko takie projekty spotykamy p\u00f3\u017aniej w firmach. Dzielenie projekt\u00f3w na etapy, estymacja zada\u0144, ustalanie priorytet\u00f3w \u2013 te kwestie s\u0105 w edukacji akademickiej nieobecne. <\/p>\n\n\n\n<p><strong>3. Samotnictwo a.k.a. brak umiej\u0119tno\u015bci pracy w grupie<\/strong> <\/p>\n\n\n\n<p>Jak w poprzednim punkcie wspomnia\u0142em \u2013 projekty na polskich uczelniach s\u0105 ma\u0142e, przeznaczone dla jednego studenta na tydzie\u0144 lub miesi\u0105c, czy dwa. Poci\u0105ga to za sob\u0105 spore konsewkwencje nie tylko na p\u0142aszczy\u017anie zarz\u0105dzania projektem. Programi\u015bci samotnicy nie maj\u0105 szans nauczy\u0107 si\u0119 pisa\u0107 czystego kodu. Pisz\u0105c kr\u00f3tko i w pojedynk\u0119 nie mog\u0105 poj\u0105\u0107 wyk\u0142adu o czystym kodzie, je\u015bli taki si\u0119 pojawi. Te problemy dopadn\u0105 ich dopiero w pracy. Tak samo zreszt\u0105 jak umiej\u0119tno\u015b\u0107 kooperacji z kolegami. Na studiach widzia\u0142em wielu, nieraz \u015bwietnych, student\u00f3w, kt\u00f3rzy kompletnie nie potrafili pracowa\u0107 we dw\u00f3jk\u0119, nie m\u00f3wi\u0105c o wi\u0119kszej grupie. Narcystyczni, outsiderscy, z przero\u015bni\u0119tym ego \u2013 tacy ludzie dopiero w pracy napotykaj\u0105 na olbrzymie trudno\u015bci, przez studia przechodz\u0105c nieraz z wielkimi sukcesami. <\/p>\n\n\n\n<p><strong>4. Pi\u015bmienni, ale nie \u201eczytelni\u201d<\/strong><\/p>\n\n\n\n<p>Wiele, je\u015bli nie wi\u0119kszo\u015b\u0107, projekt\u00f3w biznesowych posiada rozbudowane repozytoria istniej\u0105cego kodu. Rzadko zdarzaj\u0105 si\u0119 <em>greenfields<\/em>, w kt\u00f3rych mo\u017cna sobie pozwoli\u0107 na kreatywno\u015b\u0107 i tworzenie z pomini\u0119ciem lektury cudzego kodu. Czytania jednak studia nie ucz\u0105. Poza zrozumieniem algorytm\u00f3w, gdzie raczej o zrozumienie konceptualne idzie, a nie o czytanie konkretnego zapisu w wybranym j\u0119zyku programowania, nie ma na akademiach przedmiot\u00f3w zwi\u0105zanych z czytaniem kodu \u017ar\u00f3d\u0142owego ze zrozumieniem. Jest to tymczasem kluczowa umiej\u0119tno\u015b\u0107 w codziennej pracy ka\u017cdego profesjonalnego programisty.<\/p>\n\n\n\n<p><strong>5. Dokumentacja? Komu to potrzebne?<\/strong><\/p>\n\n\n\n<p>Nie licz\u0105c pracy magisterskiej i kilku raport\u00f3w &#8211; nigdy na uczelni nie musia\u0142em dokumentowa\u0107 stworzonego oprogramowania. Oczywi\u015bcie nie ka\u017cdy aspekt projektu opisywa\u0107 s\u0142ownie nale\u017cy, ale podej\u015bcie, z jakim si\u0119 spotka\u0142em na uniwersytecie polega\u0142o na oczekiwaniu, by kod dzia\u0142a\u0142, niekoniecznie jednak na opisaniu go. Liczy\u0142 si\u0119 rezultat, wynik, wyj\u015bcie, przy zadanym wej\u015bciu. Nigdy nie stawiano nacisku na to, co jest w oprogramowaniu niezwykle istotne i stanowi \u017cywotny interes przedsi\u0119biorstw \u2013 na utrzymywalno\u015b\u0107, dokumentacj\u0119, na transfer wiedzy.<\/p>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n\n<p>Co zatem robi \u015bwie\u017co upieczony junior magister, o ile jedyne czego si\u0119 nauczy\u0142 to program studi\u00f3w? Nie dokumentuje, pisze ba\u0142aganiarski kod, nie wie jak estymowa\u0107, nie ma poj\u0119cia o ustalaniu priorytet\u00f3w, nie wie jak si\u0119 dogada\u0107 z kolegami, boi si\u0119 deadline\u2019\u00f3w i nie umie rozmawia\u0107 z biznesem, pisa\u0107 kod potrafi, ale czyta z trudem.<\/p>\n\n\n\n<p>Oby\u015bmy do\u017cyli czas\u00f3w, gdy akademie zreflektuj\u0105 si\u0119, jak u\u0142omne s\u0105 efekty ich pracy i podejm\u0105 pr\u00f3by uzdrowienia sposobu w jaki ucz\u0105&#8230;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Pewnych nawyk\u00f3w ci\u0119\u017cko si\u0119 pozby\u0107. M\u00f3wi si\u0119 cz\u0119sto o tym, jak wa\u017cne s\u0105 pierwsze odruchy, jakich nabieramy podczas nauki gry na instrumencie. Samoucy natrafiaj\u0105 cz\u0119sto na trudno\u015bci na p\u00f3\u017aniejszym etapie, gdy zmuszeni s\u0105 oduczy\u0107 si\u0119 b\u0142\u0119dnych zachowa\u0144. Dlatego wynajmujemy dzieciom nauczycieli lub posy\u0142amy je do szk\u00f3\u0142 muzycznych&#8230; Programowanie jest niezwykle dynamiczn\u0105 dziedzin\u0105, z kt\u00f3r\u0105 jako [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[7],"tags":[],"_links":{"self":[{"href":"https:\/\/kalkus.dev\/blog\/wp-json\/wp\/v2\/posts\/339"}],"collection":[{"href":"https:\/\/kalkus.dev\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kalkus.dev\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kalkus.dev\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/kalkus.dev\/blog\/wp-json\/wp\/v2\/comments?post=339"}],"version-history":[{"count":1,"href":"https:\/\/kalkus.dev\/blog\/wp-json\/wp\/v2\/posts\/339\/revisions"}],"predecessor-version":[{"id":348,"href":"https:\/\/kalkus.dev\/blog\/wp-json\/wp\/v2\/posts\/339\/revisions\/348"}],"wp:attachment":[{"href":"https:\/\/kalkus.dev\/blog\/wp-json\/wp\/v2\/media?parent=339"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/kalkus.dev\/blog\/wp-json\/wp\/v2\/categories?post=339"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kalkus.dev\/blog\/wp-json\/wp\/v2\/tags?post=339"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}