26 marca 2014

ToDo listy, przypominajki, motywatory... to wszystko nie działa. A co gdyby stworzyć "system"? EDD?

Książek o tym jak pracować efektywnie powstało setki, jeżeli nie tysiące. Opisują one zazwyczaj nowy "rewolucyjny" sposób, na to jak zorganizować sobie pracę, co robić by o niczym nie zapomnieć, jak delegować swoje obowiązki i jak w konsekwencji się realizować.

Jeżeli czytasz blog, który stara się czasem uchodzić za taki, który czegoś uczy, to prawdopodobnie zdarzyło Ci się przeczytać jakąś książkę na ten temat, albo chociaż kilka artykułów.

Dlaczego jest tak dużo pozycji w tym temacie? Ponieważ nikt do tej pory nie stworzył idealnego systemu, który pasowałby do wszystkich. Pomimo tego, że swego czasu stosowałem rozmaite techniki, to koniec końców, z żadną techniką nie potrafiłem zaprzyjaźnić się na stałe.

Można by zatem powiedzieć, "mam to gdzieś, po prostu staram się iść na przód", ale prawda jest taka, że podczas tej drogi każdy widzi, że jakiś sposób organizacji zadań zawsze coś tam daje. Zawsze jest dużo problemów z przestrzeganiem danej "metodyki", jednak kompletny chaos na pewno nie jest lepszy.

2 marca 2014

Jestem (byłym?) smartphonoholikiem.


Tekst ten miał być początkowo komentarzem do bardzo ciekawego i trafnego artykułu Michała Góreckiego: "Bez smartfona jesteś nikim" (stąd forma wypowiedzi), natomiast w trakcie pisania rozrósł się do tej wielkości, że stwierdziłem, że w sumie to nadaje się na osobną notkę na bloga.

Nazywam się Krzysiek, nie posiadam smartfona od 8 miesięcy.

Wcześniej byłem uzależniony podobnie jak Ty. Byłem smartphonoholikiem odkąd stać mnie było, by kupić jakiś lepszy telefon. Pamiętam jakby to było dziś, jak 8 (sic!) lat temu śmigałem na swojej Nokii 6630 po internetach za pomocą Opery Mini 4.2.

27 stycznia 2014

"Rzuć etat, załóż startup!" - o mojej implementacji tego stwierdzenia.
Żegnaj Opero Software, witaj Spisie Treści!



TL;DR;
W dużym skrócie: wraz z moją małą ekipą pod moim przywództwem stworzyłem nową wyszukiwarkę ebooków i audiobooków - SpisTresci.pl :) Start wyszedł świetnie, a perspektywy są dobre choć jest oczywiście masa rzeczy do poprawienia. Jeżeli interesuje Cię, co ten nowy serwis potrafi, zapraszam Cię do osobnego artykułu na ten temat na moim e-czytnikowym blogu. Ten wpis chciałbym natomiast poświęcić opisowi jak do tego doszło, bowiem to był jeden z najdziwniejszych (zarazem najgorszy i najlepszy) okresów w moim życiu.

Etat


Pracę w zawodzie programisty, zacząłem mając 21 lat i od razu zacząłem ją, trafiając do Wrocławskiego oddziału jednej z najlepszych firm w świecie IT - Opery Software.

Gdy pracownik wychwala tak firmę w której pracuje, dużo ludzi uśmiecha się pod nosem, zastanawiając się, czy robi to dlatego, że naprawdę jest tak fajnie w tym miejscu pracować, czy nie przypadkiem z jakichś innych względów. Dużo osób odchodzi, gdy starej pracy ma dość, prawda? Jakie jest więc prawdziwe zdanie na temat mojego byłego pracodawcy?

Dalej takie samo :) Życzę każdemu, by trafił kiedyś do pracy w której naprawdę będzie się czuł częścią jakiegoś większego planu, bowiem gdy pracownik identyfikuje się z firmą, w której pracuje zwiększa się jego efektywność i przede wszystkim zaczyna pracować nie dla pieniędzy (nie żeby Opera w tym zakresie o swoich pracowników nie dbała :) ), lecz dla własnej przyjemności. I w takich warunkach zaczynają się dziać rzeczy niezwykłe...

Bóg mi świadkiem, że przez całe swoje dorosłe życie powtarzałem różnym ludziom:

Własna firma? Nigdy! Ja tam cenię sobie swoje "błogosławione 8 godzin", po których mogę bez zmartwień iść do domu.

Jednak, gdy praca staje się dla Ciebie przyjemnością, nie zastanawiasz się jak jej unikać, a ewentualne nadgodziny, to same plusy. Między innymi możliwość realizowania swoich pomysłów jest czynnikiem, który niesamowicie zwiększa satysfakcje z pracy. Opera zawsze była i jest otwarta na sugestie swoich pracowników, jednak nie trudno się domyślić, że "pracując u siebie" ma się zdecydowanie większą kontrolę nad tym czy dany pomysł będzie wdrażany ;)

31 grudnia 2013

Oddawanie krwi oraz płytek krwi - jak to tak naprawdę wygląda. Z wizytą w RCKiK we Wrocławiu - specjalnie dla #barylkakrwi



Krwi nie da się wyprodukować w laboratorium, ani niczym jej zastąpić. Gdy ktoś krwi potrzebuje, może polegać tylko i wyłącznie na dawcach, którzy wcześniej dobrowolnie ją oddali. Dlatego krwiodawstwo jest takie ważne.

Krew czy inne składniki krwi zacząłem honorowo oddawać już 2 dni po moich 18 urodzinach. Od tego czasu regularnie staram się odwiedzać RCKiK, co w trakcie całego życia pozwoliło mi oddać ok 10 litrów krwi. Satysfakcja jaką zawsze odczuwam po takim dobrym uczynku jest nagrodą samą w sobie, dlatego staram się promować taką postawę wśród innych.

Kilka miesięcy temu wspólnie z moją żoną Magdaleną i nowo poznanym znajomym Przemkiem, @przemi_88 z serwisu wykop.pl, postanowiliśmy wybrać się do Regionalnego Centrum Krwiodawstwa i Krwiolecznictwa we Wrocławiu i przygotować foto reportaż, który ma na celu przybliżenie tego jak to wszystko wygląda podczas typowej wizyty.

Reportaż ten dedykowany jest wszystkim osobom, które aktywnie biorą udział w akcji



oraz wszystkim tym, którzy do tej akcji w przyszłości dołączą :) Osobiście dedykuje ten artykuł jeszcze jednej osobie, ale o tym na końcu artykułu.

30 listopada 2013

I Ty możesz zostać gwiazdą Internetów - pamiętna poduszka

To był Maj, rok 2012. Podczas podróży autokarem do Paryża, mając bardzo ciekawych kompanów podróży, pewna nieznajoma Pani podzieliła się ze mną i moją żoną, refleksją na temat tego w jaki sposób ona używa swojej poduszki podróżnej, w odróżnieniu od tego jak robią to wszyscy inni, rzekomo nieprawidłowo.

Podczas następnych kilkunastu godzin, mieliśmy okazję przetestować owy sposób. Wpadłem na dość głupi pomysł i stwierdziłem "Hej, Magdalena... nagrajmy krótki filmik, instruktażowy" :)


 


Tak naprawdę miał to być filmik nakręcony dla żartu, dla nas na pamiątkę, który miał nam później przypominać jaki świetny humor mieliśmy podczas całej wyprawy. Coś mnie jednak podkusiło i wrzuciłem ten filmik do Internetu.... i się zaczęło :)

24 listopada 2013

Konkursy algorytmiczne i ich rola w moim życiu

Postanowiłem zebrać do kupy materiały, które gdzieś kiedyś wytworzyłem, mają jakąś wartość edukacyjną a jak do tej pory leżały gdzieś nie uporządkowane w czeluściach internetu, czy na moim dysku...

Tym sposobem, chciałbym dzisiaj poruszyć temat konkursów algorytmicznych, którym przez pewien okres poświęcałem naprawdę bardzo dużo czasu w swoim życiu.

Ile trzeba umieć, by zacząć startować w konkursach algorytmicznych?

Programowanie jest podobno trudne, a skoro są robione jakieś konkursy dla programistów, to łatwo można wysnuć tezę, że pewnie biorą udział w takich konkursach tylko najlepsi z najlepszych.

Jeżeli należysz do osób, które tak myślą, to jesteś po części w dużym błędzie!

Owszem, konkursu algorytmicznego nie wygra na pewno żaden amator. Reguły takich zawodów są bardzo ściśle określone i w bardzo brutalny sposób są weryfikowane twarde umiejętności zawodników.

Nie każde zawody są tworzone z myślą o mistrzach świata ;)


Nic jednak nie stoi na przeszkodzie, by w pierwszych fazach takich konkursów udział wzięły osoby, które dopiero co rozpoczęły swoje przygody z programowaniem. Wygrać pewnie nie wygrają, ale skoro weryfikacja umiejętności takich zawodników odbywa się automatycznie to znaczy, że koszt oceny takiej osoby, jest praktycznie pomijalny.


Jest naprawdę dużo stron, na których można znaleźć zadania, które polegają na zaprogramowania dosłownie prostej procedury dodawania, czy obliczenia średniej dwóch liczb - serio :)

Automatyczny sędzia i typ zadań

Największą trudnością w takich zawodach dla początkującej osoby jest tak naprawdę wdrożenie się i zrozumienie reguł takich zawodów i nauczenie się specyficznego sposobu pisania programów pod "automatycznego sędziego".

Na co dzień w życiu gdy piszemy jakiś program, piszemy go w taki sposób, by wygodnie się z niego nam korzystało. Dlatego jesteśmy przyzwyczajeni, że dobry program użytkowy ma obsługę zarówno myszki jak i umożliwia obsługę za pomocą klawiatury.... no i oczywiście korzysta z ekranu wyświetlając odpowiednie komunikaty, czy wyniki swojej pracy.

Programowanie programów z GUI nie ma nic wspólnego z konkursami algorytmicznymi.



Konkursy algorytmiczne to raczej tworzenie prostych programów konsolowych



Konkursy algorytmiczne mają na celu sprawdzenie umiejętności stworzenia programu, który w wyznaczonym czasie wykona określone zadanie. W 98% przypadków zadaniem jest obliczenie jakieś liczby, czy zbioru liczb będącej wynikiem/rozwiązaniem jakiegoś problemu.

Skoro programy w takich konkursach ostatecznie mają zwrócić tylko liczby będące wynikiem, to oznacza, że wszystko inne... grafika, wygląd programu, język narodowy interfejsu programu, a nawet język programowania w jakim program został napisany... to wszystko nie ma znaczenia, bowiem wszystko co ma program zrobić, to wypisać liczbę.

A co jest fajne w liczbach? To, że komputery świetnie je rozumieją, co z kolei oznacza, że można napisać programy, które automatycznie sprawdzają poprawność wyników zwracanych przez programy zawodników :)

Skoro programy zawodników mają być sprawdzane przez inne programy to oznacza, że reguły prezentacji wyników muszą być bardzo jasno sprecyzowane... bowiem automatyczny sędzia - program, o ograniczonych zdolnościach, nie koniecznie musi wiedzieć, że 3.0 to tyle samo co 3. Dlatego tak ważne jest zawsze zapoznanie się z informacją, w jakim formacie ma być wypisany wynik (bardzo często nawet liczba spacji i enterów pomiędzy liczbami może mieć znaczenie, więc trzeba być dokładnym ;) )

Rodzaje zadań


Zadania są naprawdę bardzo różne. Do rozwiązania niektórych wystarcza wiedza z zakresu 1 klasy szkoły podstawowej, w przypadku tych najtrudniejszych... nie będę was straszył :P

Przykład prostego zadania:

Napisz program, który otrzymując datę w formacie dd-mm-rrrr wypisze liczbę dni, jaka minęła od zadanej daty.

Co ważne, zadanie polega nie tylko na tym, by napisać program który potrafi odpowiedzieć ile dni minęło np. od 1 maja 1984 roku. W takim przypadku wystarczyło by napisać program który zwraca pojedynczą liczbę. Trudność w takich zadaniach polega na tym, że nie wiemy o jaką datę program sprawdzający nasz program poprosi. Może być to każda data, która mieści się w zakresie danych, które zostały w treści przedstawione. W powyższym przykładzie nie zostało to napisane, ale oprócz treści opisowej, obok zadania powinny znajdować się informacje z jakiego zakresu danych nasz program może być odpytywany, np. "program powinien zwracać prawidłową odpowiedź dla wszystkich dat XX wieku". Mając taką informacje dostajemy tak naprawdę jednocześnie podpowiedź, że można olać większą część dat, w tym także np. obsługę dat przed rokiem 0.

Zadania treningowe

Piszę niby cały czas o konkursach, ale prawda jest taka, że wcale nie trzeba się zmagać z innymi w trybie konkursowym, bowiem można brać udział w czymś co przypomina raczej "zawody stałe". W dużym skrócie, jest po prostu duża pula zadań, od bardzo łatwych, do bardzo trudnych.... i można je robić sobie po kolei, w dowolnej kolejności. Bez limitów czasowych na napisanie programu, bez stresu... dla czystej wiedzy i satysfakcji :)

Tego rodzaju zadania można rozwiązywać m.in. w serwisie http://pl.spoj.com/ :)

Też mam tam konto i pomimo tego, że od prawie 2 lat nic tam nie robiłem (o... tutaj jest moje konto), to gwarantuje wam, że gdybym tylko teraz nie zajmował się czymś innym, to nadal z chęcią poświęcałbym długie godziny na rozwiązywanie kolejnych zadań :)

Generalnie rzecz biorąc, najlepsze jest to, że takie zadania swoją specyfiką są naprawdę identyczne w stosunku do tych, które faktycznie można spotkać na różnego rodzaju innych konkursach, takich jak na potyczkach algorytmicznych :)

Małe szkolenie video


Prawdę mówiąc, cały ten wpis powstał tylko po to, by na koniec móc umieścić film, który kiedyś nakręciłem. Trwa on trochę, nie śpieszyłem się jak go nagrywałem, ale za to starałem się przekazać wiedzę, która innym może umożliwić łatwy start ;)





no i na koniec jeszcze jedno...

Dlaczego warto interesować się konkursami algorytmicznymi?

Uważam, że są programiści i klepacze kodu. Klepacz kodu to w moim mniemaniu taki programista, który niby normalnie programuje, ale to co robi równie dobrze może być wykonane przez zastąpienie go skończoną liczbą studentów.

Według mnie, prawdziwy programista to taki, który raz na jakiś czas staje przed problemem nietrywialnym, wymagającym zdolności matematycznych i algorytmicznych i to nie jest dla niego przeszkodą nie do przejścia :) Język programowania dla niego to tylko technologia, wie, że to w matematyce tkwi sekret optymalizacji.

Algorytmice poświęcałem się szalenie intensywnie przez 3 lata swojego życia (2 klasa liceum, w 3 klasie algorytmy na chwilę odpuściłem by skupić się na maturze, natomiast ze zdwojoną mocą powróciłem do nich na 1 i 2 roku studiów).

Poświęcałem im tak dużo czasu, że moja ówczesna dziewczyna non stop miała do mnie pretensje, że siedzę tylko na "tymi głupimi zadaniami", które "i tak mi nic nie dadzą". Ja wiedziałem swoje :)

Z tamtą dziewczyną się rozstałem, a parę miesięcy później na rozmowie kwalifikacyjnej w Operze, dostałem 3 pytania. Wszystkie dotyczyły zadań algorytmicznych :)

Gdy usłyszałem dwa pierwsze pytania, to niemalże nie umiałem wytrzymać ze śmiechu :) Zadania te były bowiem bardzo podobne do zadań, które już wcześniej rozwiązywałem. Były inne, ale gdy miałem podać odpowiedź, to będąc aż tak pewnym swojej wiedzy, zapytałem się aż, które utrudnienie związane z optymalizacją rozwiązania mam dodatkowo zastosować.

W praktyce muszę przyznać, że tego typu pytania na rozmowie nie były na wyrost. W przyszłości nie raz potem się okazało, że bez podstawowej wiedzy algorytmicznej, w niektórych projektach ani rusz... ;)





24 czerwca 2013

Programista vs. gwiazda rock'a

Jeżeli jeszcze nie widziałeś tego filmu, to zdecydowanie powinieneś to nadrobić.



Filmik ten nie jest nowy, ale tak bardzo mi się podoba, że postanowiłem go tutaj wstawić, tym bardziej, że chciałem "odświeżyć" trochę tego bloga :) Jeżeli jeszcze nie wyrzuciłeś bloga z RSSów, to szczerze podziwiam. Jednak jeżeli miałeś taki zamiar, to radzę się wstrzymać, bowiem moje ostatnie pół roku było najbardziej programistyczne w całym moim życiu.

Z pewnych przyczyn nie mogłem tychże rzeczy opisywać na bieżąco, ale sądzę, że już wkrótce blog powinien odżyć :) Parę osób wie o co chodzi, na razie proszę Was jeszcze o dyskrecję ;)