Deprecated: Creation of dynamic property ACF::$fields is deprecated in /home/sarotaq/crn/wp-content/plugins/advanced-custom-fields-pro/includes/fields.php on line 138

Deprecated: Creation of dynamic property acf_loop::$loops is deprecated in /home/sarotaq/crn/wp-content/plugins/advanced-custom-fields-pro/includes/loop.php on line 28

Deprecated: Creation of dynamic property ACF::$loop is deprecated in /home/sarotaq/crn/wp-content/plugins/advanced-custom-fields-pro/includes/loop.php on line 269

Deprecated: Creation of dynamic property ACF::$revisions is deprecated in /home/sarotaq/crn/wp-content/plugins/advanced-custom-fields-pro/includes/revisions.php on line 397

Deprecated: Creation of dynamic property acf_validation::$errors is deprecated in /home/sarotaq/crn/wp-content/plugins/advanced-custom-fields-pro/includes/validation.php on line 28

Deprecated: Creation of dynamic property ACF::$validation is deprecated in /home/sarotaq/crn/wp-content/plugins/advanced-custom-fields-pro/includes/validation.php on line 214

Deprecated: Creation of dynamic property acf_form_customizer::$preview_values is deprecated in /home/sarotaq/crn/wp-content/plugins/advanced-custom-fields-pro/includes/forms/form-customizer.php on line 28

Deprecated: Creation of dynamic property acf_form_customizer::$preview_fields is deprecated in /home/sarotaq/crn/wp-content/plugins/advanced-custom-fields-pro/includes/forms/form-customizer.php on line 29

Deprecated: Creation of dynamic property acf_form_customizer::$preview_errors is deprecated in /home/sarotaq/crn/wp-content/plugins/advanced-custom-fields-pro/includes/forms/form-customizer.php on line 30

Deprecated: Creation of dynamic property ACF::$form_front is deprecated in /home/sarotaq/crn/wp-content/plugins/advanced-custom-fields-pro/includes/forms/form-front.php on line 598

Deprecated: Creation of dynamic property acf_form_widget::$preview_values is deprecated in /home/sarotaq/crn/wp-content/plugins/advanced-custom-fields-pro/includes/forms/form-widget.php on line 34

Deprecated: Creation of dynamic property acf_form_widget::$preview_reference is deprecated in /home/sarotaq/crn/wp-content/plugins/advanced-custom-fields-pro/includes/forms/form-widget.php on line 35

Deprecated: Creation of dynamic property acf_form_widget::$preview_errors is deprecated in /home/sarotaq/crn/wp-content/plugins/advanced-custom-fields-pro/includes/forms/form-widget.php on line 36

Deprecated: Creation of dynamic property KS_Site::$pingback is deprecated in /home/sarotaq/crn/wp-content/plugins/timber-library/lib/Site.php on line 180

Deprecated: Creation of dynamic property acf_field_oembed::$width is deprecated in /home/sarotaq/crn/wp-content/plugins/advanced-custom-fields-pro/includes/fields/class-acf-field-oembed.php on line 31

Deprecated: Creation of dynamic property acf_field_oembed::$height is deprecated in /home/sarotaq/crn/wp-content/plugins/advanced-custom-fields-pro/includes/fields/class-acf-field-oembed.php on line 32

Deprecated: Creation of dynamic property acf_field_google_map::$default_values is deprecated in /home/sarotaq/crn/wp-content/plugins/advanced-custom-fields-pro/includes/fields/class-acf-field-google-map.php on line 33

Deprecated: Creation of dynamic property acf_field__group::$have_rows is deprecated in /home/sarotaq/crn/wp-content/plugins/advanced-custom-fields-pro/includes/fields/class-acf-field-group.php on line 31

Deprecated: Creation of dynamic property acf_field_clone::$cloning is deprecated in /home/sarotaq/crn/wp-content/plugins/advanced-custom-fields-pro/pro/fields/class-acf-field-clone.php on line 34

Deprecated: Creation of dynamic property acf_field_clone::$have_rows is deprecated in /home/sarotaq/crn/wp-content/plugins/advanced-custom-fields-pro/pro/fields/class-acf-field-clone.php on line 35

Deprecated: Creation of dynamic property Timber\Integrations::$wpml is deprecated in /home/sarotaq/crn/wp-content/plugins/timber-library/lib/Integrations.php on line 33

Warning: Cannot modify header information - headers already sent by (output started at /home/sarotaq/crn/wp-content/plugins/advanced-custom-fields-pro/pro/fields/class-acf-field-clone.php:34) in /home/sarotaq/crn/wp-includes/feed-rss2.php on line 8
- CRN https://crn.sarota.dev/tag/scrum-master/ CRN.pl to portal B2B poświęcony branży IT. Dociera do ponad 40 000 unikalnych użytkowników. Jest narzędziem pracy kadry zarządzającej w branży IT w Polsce. Codziennie nowe informacje z branży IT, wywiady, artykuły, raporty tematyczne Tue, 22 Mar 2022 21:32:40 +0000 pl-PL hourly 1 https://wordpress.org/?v=6.6.2 Problem „kulawego Scruma” https://crn.sarota.dev/artykuly/problem-kulawego-scruma/ Tue, 19 Apr 2022 08:15:00 +0000 https://crn.pl/?p=274677 Jak pełnić rolę scrumową w firmie, która ma „kulawego Scruma” – takie pytanie otrzymałem podczas szkolenia od jednego z Product Ownerów. W poniższym artykule próbuję na nie odpowiedzieć.

Artykuł Problem „kulawego Scruma” pochodzi z serwisu CRN.

]]>
Wspomniany Product Owner jest przekonany, że sposób korzystania ze Scruma w jego organizacji niewiele wspólnego ma z tym, jak zdefiniowana jest ta metoda. Przy czym nie chodzi mu o sposób na „zrobienie Scruma zgodnie z definicją”, ale o podpowiedź, jak uzyskać korzyści, jakie może ta metoda dać, jeśli używa się jej poprawnie. Z punktu widzenia Product Ownera to pytanie dałoby się sformułować więc również w sposób następujący: „jak uzyskać wartość z użyciem Scruma, jeżeli organizacja ma problemy z działaniem zwinnym?”.

Na początek trzeba zastanowić się, czym jest wspomniany „kulawy Scrum”. Jest wybrakowany lub niekompletny? Jeśli tak, czego w nim brak i jakie są tego skutki? A może reguły obowiązujące w organizacji uniemożliwiają poprawne użycie Scruma? Jeśli tak, co jest niemożliwe i jak wpływa to na efektywność działania zespołów scrumowych?

Pierwszy scenariusz jest taki: dziś faktycznie nie da się użyć Scruma poprawnie, bo organizacja przez lata ułożyła się pod zupełnie inny sposób działania, niemożliwy do zmiany z dnia na dzień. A ponieważ nie możemy lub nie chcemy robić rewolucji (której organizacja mogłaby nie przetrwać), potrzebujemy czasu. Inaczej mówiąc: wiemy, co robimy nieefektywnie i szukamy sposobu, by to zmienić – co być może wymaga gruntownej przebudowy kultury całej organizacji.

Jeśli ten proces (dążenia do zmiany i jej wprowadzania) nie jest pozorny, i jeśli faktycznie dążymy świadomie do tego, by działać lepiej (i liczymy na to, że im bliżej „poprawnego Scruma” się znajdziemy, tym większe odniesiemy korzyści), to wcale nie jest „kulawy Scrum”. Jest marny, może bardzo marny, ale to właśnie jest Scrum: iteracyjne i inkrementalne rozwijanie produktów i zespołów (szerzej: organizacji), by lepiej przekuwać możliwości ludzi i zasoby firmy na coś, co daje wymierne korzyści.

To, że uwiera nas robienie czegoś „niezgodnie z definicją”, to dobrze – powinno uwierać, bo wtedy dążyć będziemy do zmiany status quo. Natomiast to nie jest powód, by samobiczować się stwierdzeniami o „kulawym Scrumie”.

Zróbmy listę tych rzeczy, które wymagają zmian i usprawnień najpilniej, a następnie zajmijmy się nimi po kolei – poczynając od tego, co najważniejsze, albo co da najlepsze efekty, eksperymentując, dzieląc duże problemy na małe kawałki tak, by łatwiej było sobie z nimi radzić… Brzmi znajomo? Tak, dokładnie tak buduje się produkty z użyciem Scruma. Nie ma powodu, by tego samego podejścia nie użyć do budowania zwinnej organizacji.

Po co nam ten Scrum…

Możemy niestety odkryć coś mniej budującego: ktoś nakazał użycie Scruma, ale nikt nie ma rzeczywistych intencji z niego korzystać ani wysilać się, by zrobić to dobrze. Zanim przejdę dalej, krótka dygresja: ten scenariusz nie jest tożsamy z sytuacją, w której jakaś firma podjęła decyzję o użyciu Scruma na zasadzie kultu cargo – z nadzieją, że mechanistyczne „wdrożenie” procesu z automatu przyniesie korzyści. Taki scrumowy kult cargo zazwyczaj wygląda z zewnątrz bardzo poprawnie i trzeba zdrapać kilka warstw z fasady, by zobaczyć, że to wszystko pozory (brak empiryzmu, brak przejrzystości itd.). Tym samym scrumowy kult cargo rzadko bywa oskarżany o bycie „kulawym Scrumem”. Za to dużo częściej bywa „dowodem na to, że Scrum nie działa”.

Jeśli nie uda się wykrzesać chęci użycia Scruma, niewiele z tym można zrobić. Sytuacja nie jest beznadziejna, ale prawie zawsze problem trzeba rozwiązywać poza zespołem Scrum. Żadne szamańskie tańce dookoła Developerów, pohukiwanie na nich i szkolenia nie zmienią faktu, że ludzie nie chcą robić czegoś, czego się od nich oczekuje. Nie chcą, bo być może nie ma to sensu (wtedy poszukajmy innej metody), albo też nie rozumieją powodów, dla których Scrum w ich kontekście jednak sens ma (wtedy dajmy im ten powód).

Co zatem robić?

Co zrobić, będąc Product Ownerem w takiej sytuacji? Zadbać o dobrą definicję swojego produktu – tak, żeby wiedzieć, po co jest robiony, jaki sens jest w jego efektywnym budowaniu, jakie korzyści to daje, jakie są koszty i skutki braku tej efektywności. Kto wie, może uda się uzyskać źródło zaangażowania dla ludzi i przesuniemy się do tego pierwszego scenariusza. Wciąż będzie trudno, bo zderzymy się z różnymi ograniczeniami organizacji, ale przynajmniej będziemy realnie dążyć do zniesienia tych ograniczeń.

Ale może też się okazać, że nasz produkt… nie ma w ogóle sensu. Albo że nikt w organizacji nie ma realnych intencji czegokolwiek zmieniać, a samo wprowadzenie metod zwinnych jest tylko grą pozorów – bo „wypada być Agile”. Wtedy sytuacja może być beznadziejna, o ile nie uda nam się przebić „w górę” i uzyskać choćby minimalnego wpływu na sposób działania organizacji. Czasami jedynym sposobem, by zacząć robić coś sensownego, jest przejście do innej firmy. Bo, wbrew tym, którzy oferują „przeprowadzenie transformacji zwinnych w każdej organizacji”, nie wszędzie da się uzyskać choćby podstawową zwinność.

Artykuł Problem „kulawego Scruma” pochodzi z serwisu CRN.

]]>
Kryzys Agile https://crn.sarota.dev/artykuly/kryzys-agile/ Thu, 21 Jan 2021 08:15:00 +0000 https://crn.pl/?p=252003 W lutym 2021 miną dwie dekady od opublikowania manifestu agile. Niestety, po dwudziestu latach możemy mówić o kryzysie agile, którego – co gorsza – większość zaangażowanych agilistów jeszcze nie zauważyła.

Artykuł Kryzys Agile pochodzi z serwisu CRN.

]]>
Kryzys ten polega, ogólnie rzecz ujmując, na rozwodnieniu znaczenia agile, oderwaniu go od koncentracji na tworzeniu dobrze działającego, wartościowego oprogramowania i przesunięciu punktu ciężkości na dbałość o dobre samopoczucie, miłą atmosferę, a czasem także elementy politycznej poprawności w zespołach. Istotnym objawem tego kryzysu jest to, że programiści i testerzy coraz częściej odrzucają agile, a w szczególności scrum. Kiedy się z nimi porozmawia czy poczyta fora programistyczne, coraz częściej widać niechęć, a nawet wyśmiewanie się z agile coachów i scrum masterów.

Kiedyś było inaczej: dziesięć, a nawet jeszcze sześć lat temu o scrumie i agile chętnie mówiło się na konferencjach dla programistów, a oni sami stanowili dużą część uczestników szkoleń dla scrum masterów. Teraz trafiają się tam pojedynczo, a na blogach i konferencjach developerskich już się o agile pozytywnie nie mówi. Coś  się ewidentnie zmieniło w tym, jak programiści i testerzy postrzegają agile i scrum – i z czegoś ta zmiana wynika. Moim zdaniem z tego, że coraz częściej scrum jest czymś, co inni robią developerom, a nie czymś, co developerzy stosują, żeby lepiej działać.

Dzieje się zatem fatalna rzecz – scrum w szczególności, a agile w ogólności, odrywają się od swoich korzeni. Bo przecież obie te metody, które w swoich zrębach tworzono pod koniec ostatniej dekady ubiegłego wieku, powstały w zespołach budujących oprogramowanie, zmagających się z trudnymi projektami. I to nie w byle jakich zespołach, ale wysoce zmotywowanych, niewielkich i zgranych, złożonych z ludzi, którym zależało zarówno na powodzeniu produktu, jak i na dobrym rzemiośle. Agile – w znaczeniu zwinnych sposobów pracy – to zatem efekt organicznych wysiłków tych ludzi: programistów, testerów i pracujących z nimi bezpośrednio menedżerów. To tacy ludzie (zaangażowani i rozumiejący istotę pracy nad rozwojem oprogramowania) wypracowywali w boju praktyki i schematy, które później zostały ujęte w metodach takich jak scrum. Podobnie, to dyskusja nad tymi podejściami doprowadziła uczestników pamiętnego spotkania w lutym 2001 roku do zapisania pewnych wspólnych ich cech w tzw. manifeście agile.

Wiem to nie tylko z ich relacji, ale i z własnego doświadczenia. Wraz z moim zespołem dokładnie w taki właśnie sposób odkryłem agile. To znaczy najpierw pracowaliśmy w krótkich sprintach i tak dalej, bo to było rozsądne rozwiązanie w naszych warunkach, a dopiero potem dowiedzieliśmy się z książek, że to ma już nawet swoją nazwę.

Wyimaginowane problemy, narzucana metodyka

Dziś niestety coraz częściej scrum jest narzucaną odgórnie metodyką, wciskaną często bez sensu, w sposób nieprzemyślany. Począwszy od braku podziału na produkty (za czym powinna iść odpowiednia struktura zespołów), poprzez próby pogodzenia scruma i zwinności z silosową organizacją, stosowanie go jako best practice (co wiąże się z przymusowym sposobem pracy nawet tam, gdzie akurat nie ma on sensu), a skończywszy na kompletnym ignorowaniu faktu, że żadnego scruma nie da się zrobić, jeśli zespoły nie mają podstawowych narzędzi do pracy (sprawnych i szybkich komputerów, repozytoriów kodu, systemów testowych itd.) oraz – co najważniejsze – jakiejkolwiek motywacji do tego, by faktycznie pracować lepiej.

Co gorsza, Scrum Master i Agile Coach stały się osobnymi zawodami. To już nie są członkowie zespołu, którzy otrzymali dodatkowe zadanie dbania o jego rozwój i usprawniania jego pracy. Obecnie to są już osobni specjaliści, których umiejętności to facylitacja, otwarte pytania, „uwalniające struktury”, flipowanie, dawanie feedbacku  (dowiedziałem się ostatnio, że istnieją konkursy w dawaniu feedbacku!) – i którzy najczęściej nigdy w życiu nie programowali, w związku z czym kompletnie nie rozumieją, co tak naprawdę robią ludzie, z którymi pracują.

Ta sytuacja ma zresztą inne wymiary. Scrum Master, który nie umie czytać kodu, nie wie czym różni się funkcja od metody, nie wie co to repozytorium czy branch, nie tylko nie rozumie wyzwań jakie stoją przed zespołem, ale nie jest także w stanie efektywnie pomóc we wdrożeniu dobrych praktyk technicznych, bo najpewniej nie wie o ich istnieniu. Często także nie rozumie, jak istotne jest częste integrowanie i testowanie działającego oprogramowania. W efekcie zamiast na tym, żeby produkt działał, a kod był dobry, koncentruje się na dobrej atmosferze albo na zwalczaniu wyimaginowanych problemów (np. nierówności w zespole).

Niski poziom zaangażowania w pracę

Warto tu podkreślić, że nie chodzi o to, by skreślić każdą osobę, która, nie mając żadnej wiedzy technicznej ani doświadczenia, została Scrum Masterem. Zdarzają się i tacy, którzy pomimo to dobrze pracują ze swoimi zespołami (choć najczęściej, kiedy się przyjrzeć tym przypadkom, to wykonali jednak jakiś wysiłek, by lepiej zrozumieć, co zespół robi). Niestety, odkąd niemający pojęcia o programowaniu Scrum Masterzy stali się nie wyjątkiem a regułą, zaczęliśmy mieć problem. Właśnie ten problem, że scrum staje się czymś, co inni robią developerom… W dodatku ci inni nie mają pojęcia o tym, na czym w istocie polega praca developerów.

Połączenie tych dwóch elementów – wciskania na siłę, bez przemyślenia scruma oraz Scrum Masterów czy Agile Coachów, którzy nie rozumieją meritum pracy zespołów – to główne przyczyny, dla których tenże scrum w wielu miejscach nie działa. Inną ważną przyczyną jest ogólnie niski poziom zaangażowania ludzi w ich pracę. Jak już pisałem, scrum (i agile w ogóle) powstał wśród ludzi zaangażowanych w to, co robili – zarówno na poziomie rzemiosła, jak i zaangażowania w los produktu, który tworzyli. Przełożenie ich doświadczeń i wypracowanych przez nich metod na ludzi, których z produktem wiąże wyłącznie wypłata, a którzy rzemiosło (czyli jakość kodu i architektury) mają w głębokim poważaniu, okazuje się trudne (delikatnie rzecz nazywając).

Zatem zamiast zaangażowanych (a więc chcących!) programistów i testerów, którzy empirycznie wypracowują lepsze sposoby pracy nad produktem, na którym im zależy, mamy teraz coraz częściej zdemotywowanych programistów i testerów, którzy są zmuszani do udziału w „ceremoniach” – i to w dodatku przez „szamanów” niemających pojęcia o tym, co taki programista czy tester robią. Nic dziwnego, że im się to nie podoba. I nic dziwnego, że nie daje to obiecywanych efektów (a więc często wydawanego, działającego i wartościowego oprogramowania).

Róbmy swoje

Duch czasów – obowiązkowy optymizm – nakazuje zakończyć ten tekst jakimiś pozytywnymi wskazówkami lub propozycją wyjścia z problemu. Na tę chwilę jednak nie widzę tu żadnego rozwiązania, a więc czegoś, co mogłoby szybko i radykalnie poprawić sytuację. Pozostaje zatem robić swoje, a więc przede wszystkim szerzyć dobrą, solidną widzę o scrumie i agile wśród tych, z którymi mamy okazję pracować – dbać o to, by Scrum Masterzy dobrze rozumieli swoją rolę i dbali o to, by scrum był tym, co robi ich zespół, a nie czymś, co oni robią temu zespołowi. Ważne by mieli też zdrowy, a więc pragmatyczny stosunek do samej metody.

Trzeba także zmienić sposób kształcenia Scrum Masterów, biorąc pod uwagę fakt, że coraz więcej z nich nie ma pojęcia o programowaniu. Trzeba im zatem dostarczyć namiastki tego doświadczenia oraz przekazać wiedzę niezbędną, by mogli dobrze rozumieć zespoły i nawiązać z nimi merytoryczną komunikację. Innymi słowy Scrum Masterzy powinni poznać podstawy programowania – i to najlepiej nie ucząc się ich od swojego zespołu, już podczas pracy z nim. Jeśli nie mają nawet podstaw, będzie to dla zespołu frustrujące i spowalniające, o ile w ogóle zespół zechce podjąć się tłumaczenia tychże podstaw swojemu Scrum Masterowi. Lepiej zrobią to profesjonaliści mający doświadczenie w nauczaniu.


Deprecated: Creation of dynamic property Timber\Post::$_edit_lock is deprecated in /home/sarotaq/crn/wp-content/plugins/timber-library/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_thumbnail_id is deprecated in /home/sarotaq/crn/wp-content/plugins/timber-library/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_edit_last is deprecated in /home/sarotaq/crn/wp-content/plugins/timber-library/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_yoast_wpseo_focuskw is deprecated in /home/sarotaq/crn/wp-content/plugins/timber-library/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_yoast_wpseo_linkdex is deprecated in /home/sarotaq/crn/wp-content/plugins/timber-library/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_yoast_wpseo_content_score is deprecated in /home/sarotaq/crn/wp-content/plugins/timber-library/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_yoast_wpseo_estimated-reading-time-minutes is deprecated in /home/sarotaq/crn/wp-content/plugins/timber-library/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$obrazek_wyrozniajacy is deprecated in /home/sarotaq/crn/wp-content/plugins/timber-library/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_obrazek_wyrozniajacy is deprecated in /home/sarotaq/crn/wp-content/plugins/timber-library/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_author is deprecated in /home/sarotaq/crn/wp-content/plugins/timber-library/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$galeria is deprecated in /home/sarotaq/crn/wp-content/plugins/timber-library/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_galeria is deprecated in /home/sarotaq/crn/wp-content/plugins/timber-library/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$link_obrazka_wyrozniajacego is deprecated in /home/sarotaq/crn/wp-content/plugins/timber-library/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_link_obrazka_wyrozniajacego is deprecated in /home/sarotaq/crn/wp-content/plugins/timber-library/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$thumbnail_video is deprecated in /home/sarotaq/crn/wp-content/plugins/timber-library/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_thumbnail_video is deprecated in /home/sarotaq/crn/wp-content/plugins/timber-library/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_yoast_wpseo_primary_category is deprecated in /home/sarotaq/crn/wp-content/plugins/timber-library/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$post_views_count is deprecated in /home/sarotaq/crn/wp-content/plugins/timber-library/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$post_date_gmt is deprecated in /home/sarotaq/crn/wp-content/plugins/timber-library/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$comment_status is deprecated in /home/sarotaq/crn/wp-content/plugins/timber-library/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$ping_status is deprecated in /home/sarotaq/crn/wp-content/plugins/timber-library/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$post_password is deprecated in /home/sarotaq/crn/wp-content/plugins/timber-library/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$post_name is deprecated in /home/sarotaq/crn/wp-content/plugins/timber-library/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$to_ping is deprecated in /home/sarotaq/crn/wp-content/plugins/timber-library/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$pinged is deprecated in /home/sarotaq/crn/wp-content/plugins/timber-library/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$post_modified is deprecated in /home/sarotaq/crn/wp-content/plugins/timber-library/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$post_modified_gmt is deprecated in /home/sarotaq/crn/wp-content/plugins/timber-library/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$post_content_filtered is deprecated in /home/sarotaq/crn/wp-content/plugins/timber-library/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$guid is deprecated in /home/sarotaq/crn/wp-content/plugins/timber-library/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$menu_order is deprecated in /home/sarotaq/crn/wp-content/plugins/timber-library/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$post_mime_type is deprecated in /home/sarotaq/crn/wp-content/plugins/timber-library/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$comment_count is deprecated in /home/sarotaq/crn/wp-content/plugins/timber-library/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$filter is deprecated in /home/sarotaq/crn/wp-content/plugins/timber-library/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$status is deprecated in /home/sarotaq/crn/wp-content/plugins/timber-library/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_edit_lock is deprecated in /home/sarotaq/crn/wp-content/plugins/timber-library/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_thumbnail_id is deprecated in /home/sarotaq/crn/wp-content/plugins/timber-library/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_edit_last is deprecated in /home/sarotaq/crn/wp-content/plugins/timber-library/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_yoast_wpseo_focuskw is deprecated in /home/sarotaq/crn/wp-content/plugins/timber-library/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_yoast_wpseo_linkdex is deprecated in /home/sarotaq/crn/wp-content/plugins/timber-library/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_yoast_wpseo_content_score is deprecated in /home/sarotaq/crn/wp-content/plugins/timber-library/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$obrazek_wyrozniajacy is deprecated in /home/sarotaq/crn/wp-content/plugins/timber-library/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_obrazek_wyrozniajacy is deprecated in /home/sarotaq/crn/wp-content/plugins/timber-library/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_author is deprecated in /home/sarotaq/crn/wp-content/plugins/timber-library/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$galeria is deprecated in /home/sarotaq/crn/wp-content/plugins/timber-library/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_galeria is deprecated in /home/sarotaq/crn/wp-content/plugins/timber-library/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_yoast_wpseo_primary_category is deprecated in /home/sarotaq/crn/wp-content/plugins/timber-library/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$post_views_count is deprecated in /home/sarotaq/crn/wp-content/plugins/timber-library/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$post_date_gmt is deprecated in /home/sarotaq/crn/wp-content/plugins/timber-library/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$comment_status is deprecated in /home/sarotaq/crn/wp-content/plugins/timber-library/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$ping_status is deprecated in /home/sarotaq/crn/wp-content/plugins/timber-library/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$post_password is deprecated in /home/sarotaq/crn/wp-content/plugins/timber-library/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$post_name is deprecated in /home/sarotaq/crn/wp-content/plugins/timber-library/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$to_ping is deprecated in /home/sarotaq/crn/wp-content/plugins/timber-library/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$pinged is deprecated in /home/sarotaq/crn/wp-content/plugins/timber-library/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$post_modified is deprecated in /home/sarotaq/crn/wp-content/plugins/timber-library/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$post_modified_gmt is deprecated in /home/sarotaq/crn/wp-content/plugins/timber-library/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$post_content_filtered is deprecated in /home/sarotaq/crn/wp-content/plugins/timber-library/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$guid is deprecated in /home/sarotaq/crn/wp-content/plugins/timber-library/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$menu_order is deprecated in /home/sarotaq/crn/wp-content/plugins/timber-library/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$post_mime_type is deprecated in /home/sarotaq/crn/wp-content/plugins/timber-library/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$comment_count is deprecated in /home/sarotaq/crn/wp-content/plugins/timber-library/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$filter is deprecated in /home/sarotaq/crn/wp-content/plugins/timber-library/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$status is deprecated in /home/sarotaq/crn/wp-content/plugins/timber-library/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_edit_lock is deprecated in /home/sarotaq/crn/wp-content/plugins/timber-library/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_thumbnail_id is deprecated in /home/sarotaq/crn/wp-content/plugins/timber-library/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_edit_last is deprecated in /home/sarotaq/crn/wp-content/plugins/timber-library/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_yoast_wpseo_focuskw is deprecated in /home/sarotaq/crn/wp-content/plugins/timber-library/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_yoast_wpseo_linkdex is deprecated in /home/sarotaq/crn/wp-content/plugins/timber-library/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_yoast_wpseo_content_score is deprecated in /home/sarotaq/crn/wp-content/plugins/timber-library/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_yoast_wpseo_estimated-reading-time-minutes is deprecated in /home/sarotaq/crn/wp-content/plugins/timber-library/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$obrazek_wyrozniajacy is deprecated in /home/sarotaq/crn/wp-content/plugins/timber-library/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_obrazek_wyrozniajacy is deprecated in /home/sarotaq/crn/wp-content/plugins/timber-library/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_author is deprecated in /home/sarotaq/crn/wp-content/plugins/timber-library/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$galeria is deprecated in /home/sarotaq/crn/wp-content/plugins/timber-library/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_galeria is deprecated in /home/sarotaq/crn/wp-content/plugins/timber-library/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$link_obrazka_wyrozniajacego is deprecated in /home/sarotaq/crn/wp-content/plugins/timber-library/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_link_obrazka_wyrozniajacego is deprecated in /home/sarotaq/crn/wp-content/plugins/timber-library/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$thumbnail_video is deprecated in /home/sarotaq/crn/wp-content/plugins/timber-library/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_thumbnail_video is deprecated in /home/sarotaq/crn/wp-content/plugins/timber-library/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_yoast_wpseo_primary_category is deprecated in /home/sarotaq/crn/wp-content/plugins/timber-library/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$post_views_count is deprecated in /home/sarotaq/crn/wp-content/plugins/timber-library/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$post_date_gmt is deprecated in /home/sarotaq/crn/wp-content/plugins/timber-library/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$comment_status is deprecated in /home/sarotaq/crn/wp-content/plugins/timber-library/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$ping_status is deprecated in /home/sarotaq/crn/wp-content/plugins/timber-library/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$post_password is deprecated in /home/sarotaq/crn/wp-content/plugins/timber-library/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$post_name is deprecated in /home/sarotaq/crn/wp-content/plugins/timber-library/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$to_ping is deprecated in /home/sarotaq/crn/wp-content/plugins/timber-library/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$pinged is deprecated in /home/sarotaq/crn/wp-content/plugins/timber-library/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$post_modified is deprecated in /home/sarotaq/crn/wp-content/plugins/timber-library/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$post_modified_gmt is deprecated in /home/sarotaq/crn/wp-content/plugins/timber-library/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$post_content_filtered is deprecated in /home/sarotaq/crn/wp-content/plugins/timber-library/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$guid is deprecated in /home/sarotaq/crn/wp-content/plugins/timber-library/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$menu_order is deprecated in /home/sarotaq/crn/wp-content/plugins/timber-library/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$post_mime_type is deprecated in /home/sarotaq/crn/wp-content/plugins/timber-library/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$comment_count is deprecated in /home/sarotaq/crn/wp-content/plugins/timber-library/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$filter is deprecated in /home/sarotaq/crn/wp-content/plugins/timber-library/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$status is deprecated in /home/sarotaq/crn/wp-content/plugins/timber-library/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_edit_lock is deprecated in /home/sarotaq/crn/wp-content/plugins/timber-library/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_thumbnail_id is deprecated in /home/sarotaq/crn/wp-content/plugins/timber-library/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_edit_last is deprecated in /home/sarotaq/crn/wp-content/plugins/timber-library/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_yoast_wpseo_focuskw is deprecated in /home/sarotaq/crn/wp-content/plugins/timber-library/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_yoast_wpseo_linkdex is deprecated in /home/sarotaq/crn/wp-content/plugins/timber-library/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_yoast_wpseo_content_score is deprecated in /home/sarotaq/crn/wp-content/plugins/timber-library/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$obrazek_wyrozniajacy is deprecated in /home/sarotaq/crn/wp-content/plugins/timber-library/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_obrazek_wyrozniajacy is deprecated in /home/sarotaq/crn/wp-content/plugins/timber-library/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_author is deprecated in /home/sarotaq/crn/wp-content/plugins/timber-library/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$galeria is deprecated in /home/sarotaq/crn/wp-content/plugins/timber-library/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_galeria is deprecated in /home/sarotaq/crn/wp-content/plugins/timber-library/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_yoast_wpseo_primary_category is deprecated in /home/sarotaq/crn/wp-content/plugins/timber-library/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$post_views_count is deprecated in /home/sarotaq/crn/wp-content/plugins/timber-library/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$post_date_gmt is deprecated in /home/sarotaq/crn/wp-content/plugins/timber-library/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$comment_status is deprecated in /home/sarotaq/crn/wp-content/plugins/timber-library/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$ping_status is deprecated in /home/sarotaq/crn/wp-content/plugins/timber-library/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$post_password is deprecated in /home/sarotaq/crn/wp-content/plugins/timber-library/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$post_name is deprecated in /home/sarotaq/crn/wp-content/plugins/timber-library/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$to_ping is deprecated in /home/sarotaq/crn/wp-content/plugins/timber-library/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$pinged is deprecated in /home/sarotaq/crn/wp-content/plugins/timber-library/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$post_modified is deprecated in /home/sarotaq/crn/wp-content/plugins/timber-library/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$post_modified_gmt is deprecated in /home/sarotaq/crn/wp-content/plugins/timber-library/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$post_content_filtered is deprecated in /home/sarotaq/crn/wp-content/plugins/timber-library/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$guid is deprecated in /home/sarotaq/crn/wp-content/plugins/timber-library/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$menu_order is deprecated in /home/sarotaq/crn/wp-content/plugins/timber-library/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$post_mime_type is deprecated in /home/sarotaq/crn/wp-content/plugins/timber-library/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$comment_count is deprecated in /home/sarotaq/crn/wp-content/plugins/timber-library/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$filter is deprecated in /home/sarotaq/crn/wp-content/plugins/timber-library/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$status is deprecated in /home/sarotaq/crn/wp-content/plugins/timber-library/lib/Core.php on line 71

Deprecated: Return type of Twig\Node\Node::count() should either be compatible with Countable::count(): int, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /home/sarotaq/crn/wp-content/plugins/timber-library/vendor/twig/twig/src/Node/Node.php on line 213

Deprecated: Return type of Twig\Node\Node::getIterator() should either be compatible with IteratorAggregate::getIterator(): Traversable, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /home/sarotaq/crn/wp-content/plugins/timber-library/vendor/twig/twig/src/Node/Node.php on line 221
Andy Brandt Andy Brandt  

Założyciel i senior consultant firmy doradczo-szkoleniowej Code Sprinters. Wcześniej był między innymi Country Managerem Swisscom CEE (w Polsce pod marką Air Bites), a także menedżerem i konsultantem w 4pi, Unisys i T-Mobile Polska, jak też pierwszym redaktorem naczelnym „Linux+”.

  

Artykuł Kryzys Agile pochodzi z serwisu CRN.

]]>