Dlaczego Janek nie programuje? – cz. I

blog.it-leaders.pl 1 rok temu

Umiejętność programowania jest uznawana za szczególnie trudną. W ogłoszeniach o pracę widzimy jak wysoko rynek wycenia umiejętności programistów. W porównaniu do innych branż jak: handel, produkcja czy choćby marketing, programista jest w stanie zarobić dużo więcej na swojej wiedzy, umiejętnościach czy doświadczeniu. Dlaczego tak niewielu ludzi jest w stanie zostać programistą? Dlaczego pomimo dużego popytu, tak mały odsetek naszej populacji decyduje się na rozpoczęcie swojej przygody z programowaniem, a później na szukanie pierwszej pracy w IT?

Dane są podstawą do analizy

Aby przeanalizować problem najpierw odniesiemy się do realnych liczb. W artykule Karola Bednarza: Ilu programistów jest na świecie, a ilu w Europie? [2022] , który został opublikowany pół roku temu (w miarę świeże dane) sprawdzimy ilu programistów jest w Europie w poszczególnych krajach.

Polska:

Liczba programistów: 250 000

Liczba mieszkańców Polski (źródło: GUS): ok. 37 767 mln

Udział programistów w naszej populacji to zaledwie: 0,66 %

Porównanie z innymi krajami Europy:

Niemcy: 901 000 programistów, kraj liczy 83,2 mln mieszkańców – 1,08 %

Szwecja: 180 000 programistów, kraj liczy 10,42 mln mieszkańców – 1,73 %

Ukraina: 212 500 programistów, kraj liczy 43,79 mln mieszkańców – 0,49 %

Wielka Brytania: 408 000 programistów, kraj liczy 67,33 mln mieszkańców – 0,61 %

Oraz USA:

4 000 000 programistów (4,3 mln w całej Ameryce Północnej) – dane źródłowe , kraj liczy 331,9 mln mieszkańców – 1,21 %
*dane dotyczące ilości mieszkańców pochodzą z Google.com na dzień 13.02.2023 r.

Powyższe dane należy teraz zestawić z zapotrzebowaniem na rynku pracy w IT w Polsce:

Ilość poszukiwanych miejsc pracy w I kwartale 2022 roku wynosiła: 26 121.

Artykuł Raport: Wzrost liczby ofert pracy i stawek dla branży IT w I kwartale 2022 na Prawo.pl świetnie opisuje te liczby z pierwszego kwartału 2022 roku.

To tylko jeden kwartał. gdybyśmy pomnożyli to x4, wyjdzie nam, iż rocznie w 2022 roku rynek poszukiwał ok 100 tys. programistów. Gdyby całe zapotrzebowanie zostało wypełnione (a wiemy już, iż nie zostało), to w Polsce mielibyśmy około 350 000 programistów co już zbliża nas do upragnionego 1% populacji.

W porównaniu do państw rozwiniętych (poza UK) jesteśmy w tyle jeżeli chodzi o odsetek programistów w całym społeczeństwie. Przyczyną nie jest tutaj zbyt niska ilość firm, która poszukuje programistów.

Problem jednak leży w głównej mierze po stronie przysłowiowego Kowalskiego, który nie rozpoczyna nauki programowania lub nie dochodzi do poziomu, który pozwoli wejść na rynek IT z powodzeniem.

Dodatkowo struktura zatrudnienia w IT charakteryzuje się tym, iż 80-90% ofert to oferty dla specjalistów, a nie początkujących. Wg danych, które co roku przerażają jeżeli chodzi o dziurę kadrową w IT, firmy będą musiały zmienić swoją taktykę zatrudniania i przyuczać osoby początkujące, a dokładniej mówiąc – zacząć zatrudniać więcej Juniorów.

Dlaczego zatem w tym kontekście nie jesteśmy w stanie dogonić innych krajów?

Na to pytanie spróbujemy odpowiedzieć w dalszej części artykułu.

Programowanie już dawno było uznawane za trudne

Publikacja z 2002 roku autorstwa Dana Bricklina [http://www.bricklin.com/wontprogram.htm], opisuje sposób, w jaki programista konstruuje instrukcje dla komputera i jak może prawidłowo przewidywać wyniki, oraz jak to może wpłynąć na akceptację systemu.

Artykuł zainspirował mnie do napisania tego artykułu a jego treść można skrócić do stwierdzenia: są osoby, które potrafią szybciej nauczyć się programowania. Są również ludzie, dla których składnia języków jest zbyt trudna. Fragment artykułu:

“Języki programowania, takie jak Assembler, FORTRAN, C i Java, są najmniej akceptowane przez masy. Ich składnia jest bardzo bezlitosna” – tłumaczenie Google

Po kilku latach doświadczeń w branży jako programista stawiam tezę, iż programowanie nie jest trudne. To rzemiosło, którego może nauczyć się praktycznie każdy z odpowiednią dawką motywacji. To również nie składnia, a sposób myślenia i analizowania konkretnych problemów przybliża nas do zostania programistą. Wnioski z powyższego artykułu nie mają racji bytu.

>To może cię zainteresować: Najważniejsze trendy na rynku pracy w 2023 roku – oczami branży IT

Nie sądzę też, iż to motywacja jest tu problemem do przebranżowienia. Wysokie zarobki, praca zdalna, liczne benefity, spotkania integracyjne, nowoczesny sprzęt i biura. Kto nie chciałby pracować w takich warunkach?

Czy są ludzie stworzeni do programowania?

W odpowiedzi na to pytanie, posłużę się kolejną publikacją z 2006 roku autorstwa Jeff’a Atwooda – współzałożyciela portalu Stack Overflow: “Separating Programming Sheep from Non-Programming Goats

Artykuł ten odnosi się do badania (link do badania ), które w swojej istocie miało odpowiedzieć na pytanie: czym różnią się ludzie programujący od nieprogramujących. A w dosłownym tłumaczeniu: “sposób na oddzielenie programujących owiec od nie programujących kóz na lekcjach informatyki” – tłumaczenie Google.

Wyniki badania są bardzo ciekawe.

Na przykładzie podstawowych instrukcji programistycznych takich jak przypisanie, iteracja, rekurencja, warunkowanie zebrano odpowiedzi od osób nigdy nie mających do czynienia z programowaniem. Byli to studenci informatyki, czyli jak wiadomo – nieliczna grupa wśród populacji ukierunkowana w znacznej części na programowanie.

Test użyty w badaniu można pobrać tutaj: LINK DO PLIKÓW

Jeśli chodzi o podstawowe instrukcje, z jakimi spotkamy się podczas nauki, wyniki pokazały, że:

  1. 44% uczniów stworzyło spójny mentalny model działania zadania (nawet jeżeli jest błędny!).
  2. 39% uczniów nigdy nie stworzyło spójnego modelu działania zadania.
  3. 8% uczniów zignorowało zadanie i pozostawiło puste odpowiedzi.

Wniosek przedstawiony w badaniu:

“Aby napisać program komputerowy, musisz się z tym pogodzić i zaakceptować, iż jakkolwiek byś nie chciał, aby program działał, maszyna będzie ślepo podążać za swoimi bezsensownymi regułami i dochodzić do jakiegoś bezsensownego wniosku” – tłumaczenie Google.

To badanie pokazało również, iż ok. połowa studentów, biorących udział w badaniu nie przeszłoby pozytywnie pretestu skonstruowanego wg powyższych zasad. Czy to właśnie wysoki próg wejścia jest odpowiedzią na pytanie tytułowe?

Pozwolę sobie postawić kolejną tezę: Nauka programowania wydaje się obca i trudna do przejścia dla przeciętnego człowieka, który nie miał styczności z kodowaniem. To jest główna przyczyna braku podjęcia choćby najmniejszej próby. Jak to jednak jest, iż choćby studenci z niższymi “predyspozycjami” również kończą kierunki IT i są specjalistami, którzy bez problemu znajdują pracę i rozwijają kariery? Wszystko leży w gestii:

  • ilości pracy jaką trzeba wykonać przy nauce programowania
  • braku obaw co do wysokiego progu wejścia – ten argument być może miał rację bytu 50 lat temu, gdy programowanie odbywało się dzięki kart perforowanych i dyskietek. Dziś każdy kto umie obsługiwać komputer, jest w stanie w mniejszym lub większym stopniu nauczyć się programowania
  • innych czynników, które omówimy w kolejnych artykułach z serii “Dlaczego Janek nie programuje?”

Jeden artykuł to za mało na kompletne wnioski

Z przebiegu artykułu dowiedzieliśmy się, z jakimi przeciwnościami zmagają się początkujący programiści i czy trzeba być specjalnie uzdolnionym, aby szybciej lub w ogóle nauczyć się programowania. Przyczyną w dużej mierze są obawy przed nieznaną materią, jaką jest programowanie dla zdecydowanej większości społeczeństwa (więcej niż 95%).

Rynek IT powinien skupić się na szkoleniu i zatrudnianiu Juniorów, w przeciwieństwie do obecnego trendu, wg którego oferty dla juniorów stanowią tylko 10% (!!!) wszystkich ofert.

Problem jest bardzo szeroki, a jego analiza to interesująca materia. Jeden artykuł to zdecydowanie za mało aby zgłębić temat, dlatego zapraszam do kolejnych z serii, które pojawią się na it-leaders.pl w kolejnych tygodniach.

Autor:

Damian Wiśniewski – Software Engineer od 6 lat w branży, Tech Leader, właściciel bloga programistycznego: dwisniewski.com, mentor i trener programowania.


Idź do oryginalnego materiału