Jak być na bieżąco z technologiami i wiedzą o programowaniu?

Jak być na bieżąco z technologiami i wiedzą o programowaniu?

No właśnie.. W świecie programowania dzieje się DUŻO. Nowości pojawiają się z miesiąca na miesiąc. Jak nadążyć za tym wszystkim? Jak być na bieżąco z nowinkami technologicznymi i ogólnie pojętą wiedzą programistyczną? Wskazówek, jak poszerzać swoją wiedzę o programowaniu jest wiele. Pisaliśmy już o tym na PoznajProgramowanie.pl (tu i tam), piszą o tym inni. W tym poście nie chcę jednak zasypać Cię gotowymi, “złotymi” sposobami. Co nie oznacza, że nie znajdziesz tutaj paru sprawdzonych metod na poszerzanie swojej wiedzy 😉 Główny zamysł na ten post jest jednak inny – chciałbym wejść z Tobą w dyskusję na niniejszy temat i wspólnie wymienić swoje doświadczenia, a może nawet wypracować jakieś nowe podejście do tematu.

Problem

Jakiś czas temu organizowaliśmy na PoznajProgramowanie.pl pewnego rodzaju ankietę.. Odbiorcami były głównie osoby zaczynające przygodę z programowaniem. Jedno z pytań brzmiało:

Jaki jest twoim zdaniem największy problem związany z nauką programowania? Czy tematyka wydaje się być za trudna? Nie masz odpowiednich materiałów do nauki? Potrzebujesz kogoś, kto wskaże ci drogę?

W odpowiedziach można było spotkać się z opiniami typu: “… z materiałami bywa różnie. Jest tego od groma i człowiek gubi się z którego czerpać wiedzę.”. Brzmi znajomo. Gdy przypomnę sobie siebie jeszcze parę lat temu to zdanie miałem takie samo. Mnóstwo rzeczy do nauki, nie wiadomo w co ręce włożyć. Dziś, po ok. 4 latach zawodowej kariery moje zdanie się nie zmieniło, dalej czuję się tym wszystkim przytłoczony.

Tyle chciałbym wiedzieć

Mnóstwo rzeczy do nauki – czy na pewno? Ja osobiście mam poczucie, że tak. Tych wszystkich rzeczy jest mnóstwo. Zaczynając od specjalizacji, poprzez języki programowania, kończąc na konkretnych technikach i metodykach pracy. Wystarczy rzucić okiem na Web Developer Roadmap.

Jestem full-stack web developerem nasuwa się mi więc pytanie – co powinienem umieć?

Czy wszystkie rzeczy znajdujące się na takiej roadmapie powinienem umieć? Czy da się być super backend – frontend – devops – developerem? Zależy jak spojrzeć na temat, ale moim zdaniem raczej nie. Do “super” frontendowca pasują mi umiejętności związane z designem, grafiką i UX (taki samowystarczalny gość), z “super” backend developerem natomiast kojarzą mi się przykładowo dodatkowe mocne umiejętności związane z bazami danych. A co z full-stack developerem? Gość do wszystkiego i do niczego? Moim celem nie jest tutaj drwienie z full-stack developerów, bo sam nim jestem.

Moje odczucie jest jednak takie, że gdy skupiam się na frontendzie (ostatni projekt w ExtJS) to uciekają mi rzeczy z C#. Co prawda to co już umiem to raczej nie zapomnę, ale ficzery z C# 7.0 gdzieś mi uciekły niezauważone. A co z Angularem, w którym ostatni projekt robiłem rok temu, jeszcze w Angular 1, a na portalach z newsami pojawiają się jakieś Angulary 4 i 5. Reacta też dobrze byłoby poznać i popróbować. Jeszcze siąść do baz danych i zgłębić wiedzę na ich temat. Chociaż pouczyć się czegoś z baz relacyjnych SQL, z którymi pracuję na co dzień. O bazach dokumentowych, czy grafowych już nie wspominając. ASP.NET Core, CQRS, EventSourcing, Azure/Amazon z wszystkimi ich możliwościami i nowościami, Internet of Things.. ehh..

Upływający czas

Można próbować złapać wszystkie sroki za ogon i zdarzało się, że ja też próbowałem. Jedno jest pewne pożera to cholernie dużo czasu. Z chęciami również bywa różnie. Świeżo po studiach łatwiej było siąść po pracy i programować przez dodatkowe 2 godziny, teraz coraz z tym ciężej. Jeden dzień “przyciśniesz” to kolejny odpokutujesz w pracy obniżoną efektywnością. Mózg (przynajmniej mój) potrzebuje odpoczynku. Wcześniej jakoś się na to nie zwracało uwagi. Z pomocą na pewno przyszła książka Rework, gdzie autorzy obalają mit herosa pracującego nad projektem po godzinach, na rzecz prawdziwych herosów odpoczywających w tym czasie w domu, którzy całą wymaganą pracę zdążyli wykonać w normalnym czasie pracy.

Wartość na rynku pracy

Można się spotkać z dość rozsądną opinią, że to nie o te nowe frameworki chodzi.. Lepiej skupić się na żelaznych praktykach, wzorcach, zrozumieć to, co dzieje się pod spodem. Wtedy każdy nowy framework można traktować jako nowa “nakładka” na to samo. Jeżeli dobrze opanujesz podstawy to przyswojenie nowego frameworka nie będzie dużym problemem.

Jednak z drugiej strony ciągle “coś” ciągnie mnie do poznawania tych nowinek. Patrząc na oferty pracy nie znajdziemy za bardzo wymagań w stylu “dobra znajomość protokołu HTTP i obsługi JS w przeglądarce”, raczej znajdziemy oferty typu “React, Angular”. Może to powierzchowne spojrzenie, ale czy tak nie jest? Czy nie zależy Ci, aby mieć w CV jak najwięcej najnowszych technologii?

Metody na “bycie” na bieżąco

Metod jest wiele, jedne z najpopularniejszych:

  1. Twitter
  2. Blogi / agregatory treści
  3. Podcasty
  4. Konferencje
  5. Książki
  6. Inne źródła (czytanie kodu na GitHub itd.)

No to jak jest tyle źródeł, z których można czerpać wiedzę to w czym problem? No właśnie w tym, że jest ich aż tyle. Sam dobrze “skonfigurowany” Twitter, czy Facebook jest w stanie dosłownie zalać nas informacjami. Cały dzień musiałbym nic nie robić tylko scrollować feed. Blogi, podcasty, książki to samo – mnóstwo, mnóstwo, mnóstwo.

Jak radzić sobie z tym natłokiem informacji? Coraz częściej łapie się na tym, że czytam informację, która mnie zainteresowała, więc poświęcam na to jakiś czas, 5-15 minut. Następnie po paru dniach zapominam kompletnie o tym, co przeczytałem. Ciężko zresztą, aby po jednej 15 minutowej sesji zapamiętać coś na całe życia, czy choćby na lata. Jaki więc sens ma poświęcanie czasu na przeglądanie tych wszystkich rzeczy? I tak najczęściej jak coś potrzebujesz to musisz sobie to wygooglać.

W efekcie mam poczucie, że mnogość źródeł, a co za tym idzie ilość dostępnych informacji bardziej mi przeszkadza niż pomaga. Z wszystkim chciałbym się zapoznać (patrząc wyżej chyba niesłusznie), bo mnie ciekawi, ale brakuje czasu.. ostatecznie powstają ogromne listy w moim OneNote “na wypadek, żebym o czymś nie zapomniał”.

Problem z tymi puchnącymi listami jest taki, że na dłuższą metę zaczynają one człowieka męczyć. Patrze na nie i zamiast spokojnie spędzać popołudnie i odpoczywać to szukam każdej wolnej chwili, aby coś z tej listy “zdjąć”. Na miejsce odhaczonego jednego linku zazwyczaj pojawiają się, znalezione w międzyczasie, dwa nowe. Tak jakby śledzenie tych wszystkich rzeczy przeradzało się w mój obowiązek.

Rozwiązanie?

Jeden z moich wniosków jest następujący – w dużej mierze przeszkadza mi towarzyszący tym wszystkim informacją chaos. Może to tylko moje odczucie, bo lubię mieć wszystko uporządkowane. Pewnie z tego powodu mój OneNote tak puchnie i staram się, żeby nic nie uszło mojej uwadze.

W kwestii uporządkowania rzeczy ciekawym rozwiązaniem jest radar technologiczny. W pewnym stopniu porządkuje on to na czym stoi świat programowania. Wchodzisz – widzisz co jest na topie, teoretycznie wiesz w takim razie czym warto sobie zaprzątać głowę. Może nie będziesz pierwszy w każdej nowince, ale na pewno będziesz na bieżąco i przy okazji sporo “bajzlu” Cię ominie. Takie podejście, w mojej opinii, “good enough”.

To czego mi dalej brakuje to pewnej interakcji i możliwości określenia, gdzie w tym wszystkim jestem ja – chciałbym móc odznaczyć to z czym się zapoznałem, czy mieć listę rzeczy “pending”, którymi WARTO się zająć.

A jak to wygląda u Ciebie?

Ok, tyle z mojej strony. Mam nadzieję, że udało mi się przedstawić trochę mój punkt widzenia i moje “myślenie”. A jak to wygląda u Ciebie? Jakie masz podejście do tego tematu? Możliwe, że podchodzisz na dużo większym luzie do tych spraw, albo zupełnie się tym nie przejmujesz. Może też starasz się być na bieżąco, ale masz jakiś inny wypracowany sposób na radzenie sobie z tym? Ostatecznie, co myślisz nad poruszonym w powyższej sekcji rozwiązaniem? Czy uważasz, że istnieje potrzeba na takie narzędzie?

Cokolwiek sobie myślisz – nawet to, że wygaduję jakieś głupoty albo pomieszało mi się w głowie – po prostu daj znać (ale chociaż uzasadnij 🙂 ). Czekam na Twój komentarz!

  • Poruszyłeś bardzo ważny temat! Mam bardzo podobne odczucia dotyczące natłoku informacji, braku czasu na rozwój, ale też sensu zdobywania wiedzy. Koniec końców tak jak Ty staram się być na bieżąco. Mój sposób na filtrację nowinek to po prostu feedly jako codzienne, jedyne źródło frontowej wiedzy. Żaden twitter albo facebook. W temacie braku czasu – staram się nie zadręczać tym, na co nie mam wpływu. Pozytywne myślenie to połowa sukcesu. Nie liczę czasu spędzonego nad samorozwojem, postępy mierzę w konkretnej wiedzy, którą udało mi się zdobyć. Jeśli siadam nad jakimś tematem – staram się być maksymalnie produktywna. Z dzieckiem na rękach nigdy nie wiem, ile czasu zostało mi dane 🙂

    • Adrian Bystrek

      Czyli standardowo 🙂 Dzięki za podzielenie się swoim zdaniem! 🙂

  • To jest rzeczywisty problem. Niestety nie ucząc się/poznając nowych rzeczy zostajemy z tyłu w stosunku do “młodych, odważnych” programistów.
    Ja za pomocą feedly śledzę konkretne źródła informacji, a potem w zakładkach przeglądarki zapisuję to co jest dla mnie istotne. Jeśli mam więcej czasu, to temat który mnie interesował staram się przedstawić również u siebie na blogu, gdyż uznaję wtedy że warto go przedstawić innym osobom oraz mieć szybką ściągę dla siebie 😉
    Twitter jest świetnym źródłem newsów JSowych tylko trzeba wiedzieć kogo śledzić (odkrywanie metodą prób i błędów to chyba jedyny sposób).

    • Przemek Smyrdek

      Ja bym powiedział, że nie ucząc się zostajesz w tyle po prostu, nawet jeśli od dzisiaj nikt więcej nie zdecyduje o zostaniu programistą.

      W projektach które za 3 miesiące wylądują w koszu to może ok, wchodzi człowiek z ulicy, interesuje się nową technologią X, chce robić X no to siada i robi. Odpowiedzialność za utrzymanie bliska zeru. Czy ktoś pozwoli na takie podejście w projekcie kilkuletnim? Wątpię. Tam nowe technologie to opinia ludzi najbardziej doświadczonych, którzy właśnie przez naukę są w tym miejscu w którym są.

  • Przemek Smyrdek

    U mnie pomogło pójście w konkretny obszar „weba”. Będąc skupionym na front-endzie zdecydowanie łatwiej trzymać się jednej drogi związanej np. z danym frameworkiem i jednocześnie trzymać rękę na pulsie odnośnie pracy w podobnych technologiach (niech już będzie ten Angular vs React). Będąc tym „full stackiem” miałem tak jak piszesz – robiłem front-end, to back-end zostawał. Robiłem back-end to były tyły na front-endzie. Teraz jako front-end czytając o czymś nie mam takiego poczucia – tematy które mam przed sobą rozwijają mnie ciagle w tej samej dziedzinie, nie mam poczucia że praktyki związane z CSS hamują mój rozwój w JS i odwrotnie. Jako full stack trzeba raczej myśleć w kategoriach rozwoju programisty, a nie dzielić warstwami.

    Co do tego, że w ofertach pracy jest React czy Angular to fakt, ale najczęściej tylko to pierwszy wymóg żeby ktokolwiek do ciebie zadzwonił. Jeśli firma jest rozsądna, to możesz być spokojny, ze zbiór pytań będzie zdecydowanie szerszy i wtedy przyda się to, czego nie było w ogłoszeniu o pracę. Podobnie to wygląda przy poleceniach kogoś – zazwyczaj polecamy kogoś kto się sprawdził w kilku projektach o rożnym stopniu trudności, a nie przez sam fakt, że zna technologię X.