poniedziałek, 13 kwietnia 2020

Reminiscencje Twórcy Systemów cz. 1-2

Zacząłem niedawno cykl wpisów na wykopowym mikroblogu, w których dzielę się swoimi doświadczeniami z 20-letniej ścieżki programisty. Ponieważ jednak opisane wnioski wykraczają poza inżynierię, zachodzą na zarządzanie, grę na giełdzie, wnioski z lektur i teorii uczenia, pomyślałem że zacznę przenosić tamte wpisy na bloga i rozwijać w obu miejscach.

Hello world.

Zaczynam wykopowego mikrobloga. 20 lat programowania, projektowania i tworzenia systemów, kompilatorów, definiowania języków programowania. Nazwę go Reminiscencje Twórcy Systemów. Robiłem też milion innych rzeczy. Blog nie będzie tylko o programowaniu - dobre programowanie jest pochodną ciekawości, nieustępliwości i ciągłego ulepszania. Poszukiwania formy idealnej.

Reminiscencje Twórcy Systemów cz. 1: Początki

W 1991 wyszedł Terminator 2. Miałem 10 lat, zacząłem słuchać Gunsów (You could be mine), kupiłem komiksową adaptację filmu z TM-Semic. Przyszłość opanowana przez maszyny. Dopiero co dostałem Commodore C-64 na przyjęcie, a w komiksie Skynet był już w stanie opanować świat!

Gram nałogowo od późnych lat 80-tych, kilka tytułów wrzuciłem tutaj:
https://p-gry.blogspot.com/2011/03/powitanie.html

Od rozpowszechnienia się PC-tów w Polsce wsiąkam w gry strategiczne. Ale programowanie wydaje mi się zbyt nieosiągalne - w latach 90-tych rysuję komiksy. Komputery służą do konsumpcji gier, a nie tworzenia.

1999 Matrix. Skynet przy Matriksie to pikuś. Obejrzany w 2000, kiedy zmieniam życiowy cel: zamiast iść na studia plastyczne, żeby rysować komiksy, pójdę na informę, żeby robić gry.

2000 - dostałem się na informę na Politechnikę Gdańską. Dzięki fizyce. Na teście z matematyki i angielskiego cięli punkty o byle co. Na teście z fizyki odwrotnie: ludzie oddawali puste kartki, więc jak chociaż wypisałeś dane i kilka wzorów, udumałeś jakiś rysunek, to dawali za to punkty. Z fizy byłem cienki jak większość, ale 2 dni przed egzaminem intensywnie czytałem, przepisywałem wzory do zeszytu, szukałem korelacji. Na egzaminie wstępnym dostałem 27/50 i to mi wystarczyło, żeby się dostać. To był szczyt bańki dotcomów, po 10 osób na miejsce na informę, ale większość się nie dostawała i szli na ekonomię, elektronikę i telekomunikację, matematykę stosowaną, fizykę techniczną. A potem musieli wkuwać miliony trudnych rzeczy, typu opory w drutach czy rozchodzenie fal w wodzie, choć i tak chcieli pracować w IT.

Linkuję obrazek z grową wersją polibudy, jak zapamiętałem ten klimat.



Reminiscencje Twórcy Systemów cz. 2: Pierwsza mapa

Dostałem się na informatykę. Nie wiem, czego nie wiem. Chcę jak najszybciej nauczyć się wszystkiego. Problem w tym, że nie wiem czym jest to wszystko. Potrafię dostrzec tylko zewnętrzne aspekty: gry komputerowe, systemy operacyjne, internet, układy scalone. Wszystko wydaje się zajebiście ważne. Potrafię złożyć PC-ta, wymienić procka, mieszać zworkami na twardym dysku, pisać ściągi w Wordzie, rysować pixelkami w Gfx2 i oczywiście grać. To tyle co nic.

Od innych speców w podobnej sytuacji do mnie wiem, że Pascal jest be, a C++ jest cool. Wszyscy to wiedzą. Kupuję jakąś biblię C++ z Heliona, która leży na półce do dziś. Równie dobrze mógłbym wydrukować dokumentację. Pascala liznęliśmy w szkole. Pisałem w nim programy podobne do tych na C-64 w basicu prawie 10 lat wcześniej: 2+3 . Podaj imię. Cześć . Pamiętam taką scenkę: leżę w namiocie na Przystanku Woodstock i studiuję podręcznik do informatyki. Szukanie elementu w tablicy w Pascalu ze znaną długością tablicy i z wartownikiem.

Mamy na mat-fizie dwóch klasowych guru. Oni już potrafią w C++, ale uchylają rąbka prawdy: jak chcesz, żeby twoja gra szybko działała, musisz znać C i asemblera. Wszystkie newralgiczne części gier pisze się w asemblerze. Na demo scenach piszę się tylko w asemblerze. Dobry programista pisze w asemblerze. Wymieniamy się dyskietkami z kursami i piszę swoje pierwsze programy. Wreszcie jakieś światełko, coś czego mogę się uchwycić. Adresowanie ekranu, wyświetlenie pixela w określonym kolorze, przesuwanie bitów, żeby nie mnożyć, bo ‘mul’ zabiera więcej cykli procesora, z tego samego powodu ‘xor ax, ax’ zamiast ‘mov ax, 0’.

Ten pierwszy wybór (asembler) ustawia mnie na wczesne lata. Pierwsza mapa, jakiej uchwyciłem się, by wpłynąć na ocean informacji. Nie wiesz czy obrałeś dobry kurs, może płyniesz do Ameryki, szukając odpowiedzi w mapie śląskiej kopalni.  Potrzeba zrozumienia podstaw działania hardware i oprogramowania da mi z jednej strony lepsze zrozumienie systemów informatycznych. Dzięki niej odkryję, że dobre systemy są jak cebula w Shreku: składają się z warstw. Coś jak protokół sieciowy - każda warstwa ma funkcję do spełnienia, udostępnia pozostałym warstwom niezbędne API, ale ukrywa przed nimi swoje bebechy.

Z drugiej strony wyjście od dołu odciąga mnie od korzystania z wysokopoziomowych narzędzi. Mój bliski przyjaciel też dostał się na informę (na inną uczelnię), ale zamiast trzaskać programy w asmie pisze swoją pierwszą gierkę w html + javascript. Nie drąży jak i dlaczego działa to wszystko poniżej, interesuje go efekt w postaci interaktywnej strony. On się skupi w przyszłości na operowaniu systemami jak klockami, żeby budować wysokopoziomowe usługi.


8 komentarzy:

  1. Zawsze interesowało mnie jak dzialają flaki i pod spodem co się dzieję. Musialem przeanalizowac wszystko od 0. I dlatego poszedłem w Embedded, niskie warstwy protokołow sieciowych, i dolne warstwy komunikacji bezprzewodowej :D Bluetooth, 5G, procki, linux... takie tam. Wiekszosc osob jednak mysli inaczej i chce uzywac gotowych klockow i tworzyć usługi. To jest chyba lepsze finansowo, mimo, ze wg mnie wymaga mniej wiedzy.. No ale usługi to pieniądze, bliskość z klientem. Cyk apka na Androida -> gotowa usługa.

    BudzikM

    OdpowiedzUsuń
    Odpowiedzi
    1. Z niskimi warstwami miałem styczność na studiach i rok w Intelu. Interesowało mnie to, żeby zrozumieć zasady, ale jednak najbardziej lubię tworzyć systemy. Budować klocki, z których składam kolejne warstwy abstrakcji i operować na coraz wyższych poziomach.

      Usuń
  2. heh, wiedzialem ze jestesmy w podobnym wieku ale nie ze ten sam rocznik :)
    ja skonczylem IT ale nigdy nie zrozumiem programowania (choć po kilku latach przerwy znowu pracuje w zawodzie) zawsze byłem sieciowcem systemowcem i choć widzę kod każdego dnia i potrafie gotowy czasem wyedytować to jednak programowania nie ogarniam w ogole, szacunek dla programistów choć jak widzę 10 lat mlodszych kolegów to ja po prostu mam którąś klepkę w mózgu uszkodzoną :D

    OdpowiedzUsuń
    Odpowiedzi
    1. Sieciowiec w akademiku to był najważniejszy gość zaraz po szmuglerze alkoholu :) Dla mnie programowanie to inny świat, znikasz w nim sobie i godziny mijają jak minuty. Raz na kilka miesięcy po prostu muszę napisać jakiś systemik.

      Usuń
  3. Dedi, a ta firemka, w której teraz pracujesz to też gierkami się zajmuje? Spróbujecie się jeszcze załapać na koniec gamingowej hossy i wprowadzicie ją na New Connecta? Nie żałujesz że porzuciłeś swego czasu Kajko i Kokosza? Jakbyś to pociągnął do tej pory, to mógłbyś już być newconnectowym milionerem!

    OdpowiedzUsuń
    Odpowiedzi
    1. Moje motywy założenia firmy w 2005 były zbyt mało biznesowe. Chciałem tworzyć gry od A do Z, więc pójście na swoje było wtedy jedynym wyborem. To był kompletnie inny rynek od dzisiejszego. Żeby skorzystać z gamingowej hossy powinienem startować mniej więcej w 2013.

      Kajko i Kokosz był tworzony na licencji Egmontu i potem współpracowaliśmy przy wydawaniu ich gazetki. Gra musiałaby wyjść w wersji angielskiej jako indie point'n'click, ale nie było marketingowych możliwości. I to największa przeszkoda, jaka od początku determinowała mój biznes: zawsze byliśmy świetnie przygotowani do produkcji i nigdy nie mieliśmy prawdziwego marketingowca, który wyskalowałby sprzedaż.

      W 2011-2013 pracowałem dla Playwaya, to było jeszcze przed ich wejściem na giełdę. Z Krzyśkiem Kostowskim kontaktowałem się zresztą kilka razy wcześniej, a to wziął gierkę do gazetki, a to zlecił przewodnik po Warszawie. W 2011 spotkaliśmy się u niego w garażu, ogrywał tam gierkę w polarowej kurtce i na początku myślałem, że to jakiś jego kumpel albo pracownik :) Dużo się wtedy nauczyłem o podwalinach sukcesu PW i filozofii zarabiania. Zresztą KK nawet tego specjalnie nie ukrywa, publicznie opowiada swoje plany, choć ja wiem, w którym miejscu należy pewne rzeczy dopowiedzieć lub wykastrować z marketingowej otoczki :)

      Zatem czy żałuję? Nie - źle mi się nie działo jako programiście w korpo, potrzebowałem posmakować innego świata, podróżować, przeżywać przygody. No i cały czas przebywałem w najnowszych technologiach, jak już iść na etat to do R&D. Dzięki temu wróciłem do biznesu mądrzejszy, bogatszy i z wiarą w swoje siły. Kasa jest mi potrzebna tylko po to, by skalować biznes i robić fajniejsze produkcje, na własne potrzeby mam ile trzeba.

      W sumie to podsunąłeś mi pomysł, żeby zrobić o tym wpis. Po 12 latach prowadzenia bloga można się pokusić o więcej refleksji :)

      Usuń
    2. Miło się czyta :). W moim przypadku - gazetki C&A w latach '90 z programami i demosceną, ale smarkacz jeszcze byłem. Odpalanie pierwszych demo/intro PC i gier na pierwszym PC to był '96. Niestety zabrakło mentorów, a co było wtedy w internecie to mało kto pamięta, ale powiem tylko że było niewiele prawie nic, teraz jest wszystko. Próby wejścia na demoscenę to przełom wieku - wyjazdy i produkcje na polskie party '99-2001. Potem przejście na programowanie gier i niesamowici ludzie z warsztat.gd we wczesnych 2000 :)....a potem już praca i etat, media, korpo, banki ehh. Czasami żałuję że nie założyłem firmy growej, ale tak jak mówisz to była inna rzeczywistość. Biznesowo nie dał bym rady a technicznie mnie jednak przerażało - własny silnik z pełnym 3d.

      Teraz.. pracuję w dobrym korpo - można powiedzieć że trochę śmietanka, chociaż są też mniej doświadczeni. Zadałem pytanie - jak to się dzieje że jak nadpiszesz metodę i wołam z referencji klasy bazowej to jest to jest wołana właściwa. Ci którzy byli wtedy na kawie, nie wiedzieli :). Fakt oni w cpp nie piszą, tylko java, ale jednak szok.

      Usuń
    3. Ech, demo scena. Obserwowałem ją tylko z boku, raz koledzy zabrali jeden z moich rysunków pixelowych na jakieś party (?). Pamiętam, że w grafice rządził wtedy Lazur, każdy miał kolekcję jego obrazków :)

      Usuń

W ramach eksperymentu wyłączam moderację komentarzy.

Zasady komentowania:
- żadnego spamu i reklam (także linków do serwisów w nazwie użytkownika),
- komentarze obraźliwe będą usuwane,
- proszę o zachowanie kultury i brak kłótni; różnice zdań należy wyrażać poprzez dyskusję wspartą argumentami.

Podtwórca