O książkach – tym razem programistycznych

Ostatnio coraz częściej na stronie wydawnictwa PacktPub pojawiają się ciekawe ebooki w wersjach całkowicie darmowych – dzisiaj jest to książka „Git Best Practices Guide” a wczoraj była to „Mastering C# Concurrency”. Dlatego też postanowiłam dziś przypomnieć o tej stronie, ponieważ warto mieć w zakładkach podstronę tego wydawnictwa, która codziennie proponuje nową darmową książkę – link. Staram się tam zaglądać codziennie aby nic mi nie umknęło, ale bywają i dni, kiedy ktoś mi przypomina o tym, że jest coś fajnego. Co jakiś czas pojawiają się też akcje tematyczne – na przykład tydzień z Linuxem, JavaScriptem czy tworzeniem gier. Można wtedy wyhaczyć całkiem fajne książki za darmo.

Oprócz tego PacktPub ma również sekcję „Forever Free eBooks”. Znajduje się tam zbiór książek na temat tworzenia aplikacji webowych – HTML JavaScript, Node.js a także Aplikacji oraz Big Data – Python, R, Machine Learning i Docker.

Kolejnym źródłem darmowych książek, które chciałabym Wam dzisiaj polecić jest strona Syncfusion. U nich znajdziemy ponad 100 darmowych książek, których zaletą jest to, że zawierają zawsze dokładnie około 100 stron.  Jest to naprawdę fajne jeśli chcemy szybko wejść w jakiś temat bądź coś sobie przypomnieć. Biblioteczka jest bardzo przekrojowa – są tam książki zarówno traktujące ogólnie o programowaniu, jak również bardziej specyficzne – na temat C# czy JavaScript. Jest w czym wybierać.

A Wy jakie znacie źródła (legalne) darmowych ebooków z dziedziny IT?

Łamigłówki dla programisty

Dzisiaj taki dość przyjemny temat na niedzielny wieczór. Mianowicie o tym co lubię robić, kiedy mam chwilę czasu i chęć na poćwiczenie umysłu. Otóż moim ulubionym przedmiotem w szkole była matematyka a algorytmy to jedna z rzeczy, które najbardziej mnie interesowały na studiach. Niestety w pracy w tym momencie nie wykorzystuję zbytnio tych „algorytmów akademickich”, ale staram się by w mojej głowie nie zaśniedziały one za bardzo.

Matematyka i algorytmy

Już wiele lat temu znalazłam stronę „Project Euler”, która to zawiera zbiór problemów matematycznych (w tym momencie około 600). Rozwiązanie polega po prostu na wpisaniu poprawnej odpowiedzi w okienko. Zadania mają przypisany stopień trudności, więc możemy wybrać sobie łatwiejsze bądź trudniejsze.

Tak jak wspomniałam – strona ta istnieje już bardzo długo, a w międzyczasie, szczególnie ostatnio, pojawiło się dużo podobnych a nawet o wiele fajniejszych.

Zadania z rekrutacji

Wydaje mi się, że tego typu zadania zyskały dużą popularność wraz z powstaniem Codility – jest to strona często wykorzystywana przez firmy jako jeden z procesów rekrutacji programistów. Choćby z tego powodu warto się z nią zapoznać oraz z typami zadań jakie tam są. Jest duża szansa, że z czymś podobnym spotkacie się w przyszłości.
Na czym to polega? Macie jakieś zadanie typu znaleźć cyfrę, która nie znajduje się w podanej tablicy – np. w tablicy [3, 2, 5, 1] nie znajduje się 4. Rozwiązanie trzeba zakodować w wybranym przez Was języku – oczywiście z tych dostępnych na platformie. Następnie rozwiązanie jest automatycznie weryfikowane pod względem poprawności i wydajności. Czasem kluczem do rozwiazania jest tylko poprawność a kiedy indziej wydajność. Warto zatem mieć w głowie kilka możliwych sposobów rozwiązania zadania.

Pomijając praktyczne wykorzystanie wiedzy algorytmicznej przy zdobywaniu nowej pracy, uważam że tego typu portale dostarczają naprawdę fajnych łamigłówek i jeśli ktoś lubi coś takiego, może miło spędzić czas. Co więcej – o ile początkowo zadania idą jak po grudzie, zwłaszcza jeśli studia mamy dawno za sobą, to po rozwiązaniu ich już kilkunastu czy kilkudziesięciu idzie nam to zdecydowanie szybciej. Generalnie wszystko sprowadza się do zapamiętania pewnych wzorców postępowania i zdobycia sprawności w ich stosowaniu.

Platform, gdzie możemy rozwiązywać algorytmiczne zadania jest całkiem sporo i ja sama mam już duży problem z tym, które wybrać. Ostatnio spędzam czas głównie na HackerRank oraz Codewars.

Co ciekawego jest na HackerRank?
  • Sporo zadań ze wspomnianego Project Euler
  • Ścieżka Cracking the Coding Interview – czyli bardzo fajny zbiór zarówno filmów jak i zadań, które objaśniają tematy często poruszane na rozmowach kwalifikacyjnych. Filmy są zrealizowane przez Gayle Laakmann McDowell, autorkę książki „Cracking the Coding Interview” w której na konkretnych zagadanieniach pomaga przygotować się do niemalże każdego procesu rekrutacyjnego od strony technicznej i nie tylko. Gayle jest też założycielką portalu CareerCup, gdzie użytkownicy wrzucają pytania z rekrutacji w których brali udział.
  • Niektóre firmy – w tym momencie Booking.com wystawiają tam swoje zadania, których rozwiązanie jest tożsame z aplikacją do firmy i jednocześnie pierwszym etapem rekrutacji.
  • Zadania są zgrupowane według ścieżek – np Algorytmy, Matematyka, Struktury danych, SQL a także języków – w ten sposób łatwiej można dotrzeć do tematyki, która nas interesuje
  • Cyklicznie organizowane są też różnego rodzaju zawody z nagrodami
    Co ciekawego jest na Codewars?
  • Tutaj zadania to tzw Kata, których trudność określana jest ilością kyu – czyli mamy taki trochę japoński klimat.
  • Grupowanie zadań określają nam tagi, który jest cała masa – Algebra, Geometry, Integers, Loops, Binary itd
  • Głównym przeznaczeniem tej strony jest ćwiczenie pewnych „kata” czyli różnych powtarzalnych w pracy programisty czynności najlepiej w różnych językach aby tym bardziej gimnastykować umysł

Ale to tylko dwa serwisy z całej masy i ciągle mi szkoda, że nie mam tyle czasu, by spędzać go w większym stopniu na tego typu zadaniach.

Inne portale

CodeFights – również duży zbiór zadań przygotowujących do rozmów kwalifikacyjnych, rywalizacja z innymi użytkownikami
LeetCode – dość ważna strona jeśli myślicie o aplikacji do Google, Amazon czy Facebook itp – znajdują się tam zadania z prawdziwych rekrutacji, więc jest szansa, że traficie na któreś z nich w swoim procesie rekrutacyjnym.
CodeEval – tutaj też czekają nas różne rankingi i rywalizacje

Dość ciekawą opcją są też nieco starsze:

Polski SPOJ
Orginalny SPOJ
Timus Online Judge
MasterCoder – z tej osobiście jeszcze nie korzystałam, ale zapowiada się ciekawie

Nie można też zapomnieć o potyczkach algorytmicznych czyli corocznym konkursie w którym rozwiązuje się różne ciekawe zadania.

Zachęcam do korzystania z tych portali, ponieważ nasze szare komórki również potrzebują nieco treningu od czasu do czasu:) A może Wy kojarzycie jeszcze inne fajne strony? Zachęcam do komentowania!

 

Sto lat, sto lat – 10 lat mojego bloga!

Noworoczne zamieszanie spowodowało, że prawie zapomniałam, iż dokładnie 1 stycznia 2007 roku założyłam swojego programistycznego bloga.

Przez parę ostatnich dni próbowałam sobie przypomnieć jak to było wtedy i jak to bywało przez te 10 lat.

Otóż w tamtym czasie nie było tak rozwiniętej jak teraz polskiej blogosfery programistycznej. Właściwie w ogóle było mało blogów innych niż pamiętniki w sieci. Wówczas mój blog miał podtytuł „miejsce na moje podręczne notatki”, bo taki właśnie był jego cel. Założyłam go, by zapisywać jakieś problematyczne rozwiązania albo ciekawostki na które się napotykałam. Nie było w tamtym czasie Stackoverflow (powstał w 2008 i pewnie chwilę mu zajęło zanim stał się tak popularny jak teraz) więc faktycznie warto było mieć miejsce, by sobie coś zanotować i mieć do tego dostęp z każdego miejsca. Dzięki dostępności publicznej można było też łatwo się  tym dzielić z innymi.

Początkowo blog  był zdaje się na jakiejś platformie typu blox albo wp dopiero później przeniosłam go na WordPress. Był on zlokalizowany na darmowej domenie i hostingu pod adresem maga.ovh.org Dopiero parę lat później zmieniłam adres na programistka.com by w końcu kupić domenę programistka.net Obecnie stoi na płatnym hostingu linuxpl.org z którego zresztą jestem bardzo zadowolona, bo nawet w niedzielę popołudniu odpisują na głupie pytania o to jak coś skonfigurować.

W tym początkowym okresie jeszcze gdy hostowałam stronę na ovh oprócz bloga miałam też śmieszne podstronki z CV itp. naklepane osobiście w phpie i z osobiście wymyślonym designem, co jak można się domyślić niespecjalnie służyło tej stronie. Na szczęście wraz ze zmianą domeny wreszcie zmądrzałam i postawiłam na jedną główną część jaką jest blog ubrany w skórkę stworzoną przez WordPress. Tym samym strona zdecydowanie zyskała na wyglądzie.

No i najważniejsza zmiana – gdy zakładałam bloga, zajmowałam się tworzeniem stron w PHP i w sumie nie myślałam o zmianie technologii. Teraz programuję głównie w .NET i pracuję jako architekt oprogramowania, ale nie przywiązuję się już tak bardzo do jednego języka.

Dziś blog ma też swoje odzwierciedlenie na Facebooku oraz Twitterze. Twitter istniał dopiero rok. Facebook z kolei był chyba jeszcze zamknięty dla szerszego grona a dostępny tylko dla środowisk uniwersyteckich.
Dziś mogę też pisać notki z komórki, co w 2007 roku nie przyszłoby mi do głowy:)

„Daj się poznać” – zgłoszenie wysłane

DSP2016 logo RGB color-1

Dziś w końcu zgłosiłam swoje uczestnictwo w konkursie „Daj się poznać” organizowanym przez Maćka Aniserowicza. Konkurs ten polega na programowaniu i blogowaniu o swoich zmaganiach z kodem, pomysłem, językiem itp. Zatem musimy mieć bloga i konto na Githubie, na którym będziemy publikować nasz kod. W ramach konkursu stworzyć można dowolną rzecz – aplikację, framework, bibliotekę – co tylko przyjdzie nam do głowy. Czas trwania to 3 miesiące – od początku marca do końca maja. Natomiast czas nadsyłania zgłoszeń upływa z końcem lutego. Jest konkurs – są też oczywiście nagrody. Więcej informacji można znaleźć na stronie Daj się poznać.

Ja osobiście zgłosiłam się, by zmobilizować samą siebie do realizacji pewnego, od dawna chodzącego za mną pomysłu na aplikację androidową. Na co dzień zajmuję się .NETem, Androidem nigdy nie zajmowałam się komercyjnie i stawiam w nim dopiero pierwsze kroki. Tak więc będzie to dla mnie na pewno duże wyzwanie, ale dzięki temu być może będę w stanie zweryfikować czy Android to jest własnie to czym chciałabym się zajmować być może zawodowo. Dodatkowo, aby poczuć się jak prawdziwy Androidowiec zdecydowałam, że całość prac będzie prowadzona na Linuxie, chociaż zwykle używam Windowsa. (Nie, to nie znaczy, że Androidowcy używający Windowsa nie są prawdziwi;))

Więcej o moim pomyśle na aplikację napiszę, gdy zacznie się konkurs, a póki co nie mogę się doczekać 1ego marca!

Boiling Frogs 2016 – Nie bądź żabą!

Boiling Frogs
W ostatni weekend miałam okazję uczestniczyć w pierwszej edycji konferencji „Boiling Frogs” odbywającej się we Wrocławiu.

Skąd taka nazwa?
Otóż jest pewna legenda/opowieść/mit mówiąca o tym, że jeśli wrzucimy żabę na gorącą wodę, to ona od razu wręcz instynktownie wyskoczy i ucieknie gdzie pieprz rośnie. Natomiast jeśli będziemy ją powoli podgrzewać w początkowo zimnej wodzie, to nie zauważy że coś jest nie tak i zginie.
Konferencji przyświecał zatem cel, by programiści nie stawali się takimi obojętnymi, powoli zdychającymi żabkami a wręcz przeciwnie – by pobudzić ich do ciągłego rozwoju i zdobywania nowych umiejętności. Stąd podtytuł: „Konferencja Software Craftsmanship”.

Moje wrażenia są bardzo dobre. Mimo, iż była to pierwsza taka impreza organizowana przez ITCorner, organizatorzy stanęli na wysokości zadania. To „Wrocławskie Braterstwo Technologiczne” łączy małe i średnie firmy IT na Dolnym Śląsku.

Cykl prelekcji otwierał Tomek Kaczmarzyk prezentujący założenia i cel konferencji. Tym samym mieliśmy okazję przypomnieć sobie manifest Software Craftsmanship. Zapewne też wiele osób zapoznało się z nim po raz pierwszy.

Po tym wykładzie pojawiły się już trzy ścieżki i ciężko było zdecydować na co się wybrać.
Ja zdecydowałam się na wykład „Developerze, zdevelopuj się sam!” Bartka Zdanowskiego. Mówił on o tym, jak sobie radzić, jeśli na co dzień pracujemy z jakimś nudnym i nieciekawym projektem bądź starą technologią. Podpowiadał jak urozmaicić sobie pracę – np. urzadzając w pracy hackathony a także podsunął parę sposobów na rozwijanie się po pracy – np. właśnie konferencje, książki. Nie dowiedziałam się z tej prezentacji nic dla mnie szczególnie nowego, ale myślę, że dla wielu programistów może być bardzo inspirująca.

Następnie posłuchałam „BDD i wymagania w Agile” autorstwa Wiktora Żołnowskiego. Wybrałam się na ten wykład, gdyż już kiedyś miałam okazję uczestniczyć w prelekcji Wiktora (o tej samej tematyce, co ta, która miała miejsce parę godzin później) i uważam, że opowiada ciekawie m.in. dlatego, że nie szczędzi przykładów z życia. Tym razem również było wiele takich anegdotek, gdyż Wiktor zaczął od wspomnienia o swojej nie dokończonej jeszcze książce opartej o fakty wyciągnięte z prawdziwego projektu.

Kolejny na mojej liście był Michał Gruca z prelekcją „Pozytywistyczny developer, czyli ciągła praca u podstaw.” I to był zdecydowanie mój numer jeden tej konferencji. Polecam obejrzenie nagrania jak tylko pojawi się w sieci. Otóż motywem przewodnim było to jak ulepszyć atmosferę w zespole, by wszystkim pracowało się fajnie i wydajnie.
Michał zwrócił uwagę na ważny problem, który dręczy wielu developerów – tymczasem myślałam, że jestem jedyna;) Jest on nazywany syndromem oszusta. Mianowicie wielu osobom mimo ogromnej wiedzy i specjalizacji w swojej dziedzinie wydaje się, że wie bardzo mało a wręcz nic i wszystko co osiągnął do tej pory jest dziełem przypadku. Prowadzi do to dużego stresu w sytuacji, gdy ktoś zostanie poproszony o pomoc lub realizację jakiegoś przedsięwzięcia, ponieważ jest on przekonany, że sobie nie poradzi. Oczywiście ostatecznie prowadzi to do tego, że jeśli już się podejmie, to sobie poradzi, ale zapewne bywa i tak, że ze strachu nie podejmie się wcale. Większość prezentacji poświęcona była właśnie temu problemowi. Michał namawia nas, byśmy jednak pomyśleli o tym, jak wiele jest osób, które wiedzą mniej od nas i z którymi możemy dzielić się naszą wiedzą. Pozwoli to zauważyć jak wiele jej posiadamy. Mówi też o tym, że dla ludzi, którzy właśnie mają wspomniane obawy ważne jest, by otrzymywać informację zwrotną – że sobie poradziły, że się im dziękuję za pomoc itp. Pomaga to uwierzyć w siebie i bardziej otworzyć na możliwości.

Na kolejnym wykład wybrałam „Effective Software Delivery” autorstwa Jakuba Kubryńskiego. Mówił on m.in. o tym, żeby nie upierać się przy realizacji wszystkich projektów w jednej technologii tylko dlatego, że kiedyś jakiś projekt za jej pomocą stworzony odniósł sukces. Zachęcał do elastyczności i większego przemyślenia tego co i jak się robi w projektach.

Tutaj powoli dochodzimy do momentu, gdzie muszę napisać coś mniej chwalebnego na tle jednej z prelekcji. Na przedostatnią tego dnia wybrałam „Be pragmatic, be SOLID!” Krzysztofa Menżyka. Niestety kompletnie mnie rozczarowała. Temat SOLID to dość teoretyczna kwestia i łatwo o jego nudne przedstawienie. Tak było właśnie tym razem. Owszem – było trochę teorii i trochę przykładów, ale sposób w jaki było to przedstawiane był dość nudny i miałam momentami wrażenie, iż autor sam siebie znudził tą prezentacją. Być może stało się tak dlatego, że dało się zauważyć spadek zainteresowania ze strony uczestników i doprowadziło do spadku energii. Prelekcja skończyła się dużo przed zakładanym czasem – nie wiem czy efekt taki był zamierzony, czy też powód był taki jak napisałam wcześniej.

Na koniec uczestniczyłam w prezentacji Mariusza Sieraczkiewicza „Naturalny porządek refaktoryzacji”. Czytałam książki o tej tematyce i w codziennej pracy oczywiście stosuję refaktoryzację, więc zastanawiałam się co nowego można jeszcze w tej kwestii wymyślić. Okazało się, że Mariusz bardzo fajnie przedstawił i usystematyzował proces refaktoryzacji. Wykład ten tym samym stał się moim numerem drugim tej konferencji i do obejrzenia go w sieci gorąco zachęcam.

Z konferencji wyniosłam jednak nie tylko nową wiedzę, ale również książkę wygraną w konkursie zorganizowanym przez firmę Recruitiva. Zadaniem dla uczestników było podzielenie się jakąś zabawną wpadką w procesie rekrutacyjnym – swoją bądź zasłyszaną.
Nie mogłam się nie podzielić, gdyż mam takich opowieści mnóstwo:) Od bycia tytułowaną „Drogi Panie” na początku maila, poprzez mail zaczynający się od słów „Pani X” czy taki z tematem „Przygarnę kropka” – nawiązanie do kropki w .NET. Opisywałam już kiedyś na blogu ofertę pracy w „Białym Stoku”, ale na pewno nie wspomniałam o ofercie w której nadawca zarzekał się, iż dogłębnie zapoznał się z moim profilem na LinkedIn proponując mi jednocześnie stanowisko pracy w technologii z którą nie miałam nigdy nic wspólnego:)
Przyznam zatem, że nie było trudno coś do konkursu napisać. Bardzo się cieszę, że moje „przeboje” zostały nagrodzone przez organizatorów.

After party po skończonych wykładach odbywało się w pubie „Kontynuacja” zatem można było jeszcze podzielić się swoimi spostrzeżeniami z prelegentami a także wymienić doświadczeniami z innymi developerami.

Podsumowując – nie mogę się doczekać kolejnej edycji Boiling Frogs. Mam nadzieję, że organizatorzy uda się utrzymać poziom, gdyż poprzeczkę umieścili sobie naprawdę wysoko. Trzymam zatem kciuki i serdecznie pozdrawiam!